summaryrefslogtreecommitdiffstats
path: root/multimedia
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia')
-rw-r--r--multimedia/AtomicParsley/AtomicParsley.SlackBuild46
-rw-r--r--multimedia/AtomicParsley/AtomicParsley.info8
-rw-r--r--multimedia/AtomicParsley/README6
-rw-r--r--multimedia/AtomicParsley/Using_AtomicParsley.txt191
-rw-r--r--multimedia/AtomicParsley/slack-desc2
-rw-r--r--multimedia/AviSynthPlus/AviSynthPlus.SlackBuild120
-rw-r--r--multimedia/AviSynthPlus/AviSynthPlus.info10
-rw-r--r--multimedia/AviSynthPlus/README5
-rw-r--r--multimedia/AviSynthPlus/slack-desc (renamed from multimedia/straw-viewer/slack-desc)22
-rw-r--r--multimedia/DivFix++/DivFix++.SlackBuild64
-rw-r--r--multimedia/DivFix++/README14
-rw-r--r--multimedia/DivFix++/slack-desc12
-rw-r--r--multimedia/ExMplayer/ExMplayer.SlackBuild101
-rw-r--r--multimedia/ExMplayer/ExMplayer.info10
-rw-r--r--multimedia/ExMplayer/README42
-rw-r--r--multimedia/ExMplayer/slack-desc19
-rw-r--r--multimedia/FFaudioConverter/FFaudioConverter.SlackBuild96
-rw-r--r--multimedia/FFaudioConverter/FFaudioConverter.info10
-rw-r--r--multimedia/FFaudioConverter/README21
-rw-r--r--multimedia/FFaudioConverter/doinst.sh (renamed from multimedia/ExMplayer/doinst.sh)0
-rw-r--r--multimedia/FFaudioConverter/slack-desc (renamed from multimedia/subtitlecomposer/slack-desc)22
-rw-r--r--multimedia/Gem/Gem.SlackBuild44
-rw-r--r--multimedia/Gem/Gem.info8
-rw-r--r--multimedia/HandBrake/HandBrake.SlackBuild47
-rw-r--r--multimedia/HandBrake/HandBrake.info44
-rw-r--r--multimedia/HandBrake/README8
-rw-r--r--multimedia/HandBrake/system_x265.diff45
-rw-r--r--multimedia/JSampler/JSampler.SlackBuild53
-rw-r--r--multimedia/JSampler/JSampler.desktop2
-rw-r--r--multimedia/JSampler/doinst.sh (renamed from multimedia/OpenLP/doinst.sh)0
-rw-r--r--multimedia/LBRY/LBRY.SlackBuild23
-rw-r--r--multimedia/LBRY/LBRY.info6
-rw-r--r--multimedia/LBRY/slack-desc2
-rw-r--r--multimedia/MediathekView/MediathekView.SlackBuild49
-rw-r--r--multimedia/MediathekView/MediathekView.info12
-rw-r--r--multimedia/MediathekView/MediathekView.wrapper4
-rw-r--r--multimedia/MediathekView/README4
-rw-r--r--multimedia/MediathekView/slack-desc6
-rw-r--r--multimedia/Mopidy/Mopidy.SlackBuild37
-rw-r--r--multimedia/Mopidy/Mopidy.info10
-rw-r--r--multimedia/Mopidy/README10
-rw-r--r--multimedia/Mopidy/mopidy.1.gzbin1725 -> 0 bytes
-rw-r--r--multimedia/MuseScore-Legacy/MuseScore-Legacy.SlackBuild150
-rw-r--r--multimedia/MuseScore-Legacy/MuseScore-Legacy.info14
-rw-r--r--multimedia/MuseScore-Legacy/README12
-rw-r--r--multimedia/MuseScore-Legacy/doinst.sh (renamed from multimedia/subtitlecomposer/doinst.sh)1
-rw-r--r--multimedia/MuseScore-Legacy/slack-desc19
-rw-r--r--multimedia/MuseScore/MuseScore.SlackBuild120
-rw-r--r--multimedia/MuseScore/MuseScore.desktop15
-rw-r--r--multimedia/MuseScore/MuseScore.info18
-rw-r--r--multimedia/MuseScore/README21
-rw-r--r--multimedia/OpenLP/OpenLP.desktop10
-rw-r--r--multimedia/OpenLP/OpenLP.info10
-rw-r--r--multimedia/OpenLP/README15
-rw-r--r--multimedia/OpenLP/slack-desc19
-rw-r--r--multimedia/OpenPHT/OpenPHT7
-rw-r--r--multimedia/OpenPHT/OpenPHT.SlackBuild125
-rw-r--r--multimedia/OpenPHT/OpenPHT.desktop9
-rw-r--r--multimedia/OpenPHT/OpenPHT.info10
-rw-r--r--multimedia/OpenPHT/OpenPHT_512x512.pngbin330319 -> 0 bytes
-rw-r--r--multimedia/OpenPHT/README6
-rw-r--r--multimedia/OpenPHT/fribidi.patch47
-rw-r--r--multimedia/QMPlay2/QMPlay2.SlackBuild44
-rw-r--r--multimedia/QMPlay2/QMPlay2.info8
-rw-r--r--multimedia/RenameMyTVSeries/README15
-rw-r--r--multimedia/RenameMyTVSeries/RenameMyTVSeries.SlackBuild121
-rw-r--r--multimedia/RenameMyTVSeries/RenameMyTVSeries.info10
-rw-r--r--multimedia/RenameMyTVSeries/doinst.sh10
-rw-r--r--multimedia/RenameMyTVSeries/slack-desc19
-rw-r--r--multimedia/SimpleSysexxer/README4
-rw-r--r--multimedia/SimpleSysexxer/SimpleSysexxer.SlackBuild18
-rw-r--r--multimedia/SimpleSysexxer/SimpleSysexxer.info4
-rw-r--r--multimedia/Yolo/Yolo.SlackBuild16
-rw-r--r--multimedia/Yolo/Yolo.info2
-rw-r--r--multimedia/abcMIDI/README8
-rw-r--r--multimedia/abcMIDI/abcMIDI.SlackBuild16
-rw-r--r--multimedia/aces-dev/README23
-rw-r--r--multimedia/aces-dev/aces-dev.SlackBuild34
-rw-r--r--multimedia/aces-dev/aces-dev.info8
-rw-r--r--multimedia/aces_container/aces_container.SlackBuild20
-rw-r--r--multimedia/aces_container/aces_container.info6
-rw-r--r--multimedia/acetoneiso/README19
-rw-r--r--multimedia/acetoneiso/acetoneiso3
-rw-r--r--multimedia/acetoneiso/acetoneiso.SlackBuild119
-rw-r--r--multimedia/acetoneiso/acetoneiso.info18
-rw-r--r--multimedia/acetoneiso/slack-desc12
-rw-r--r--multimedia/aegisub/README4
-rw-r--r--multimedia/aegisub/aegisub.SlackBuild44
-rw-r--r--multimedia/aegisub/aegisub.info10
-rw-r--r--multimedia/aegisub/boost-1.81.0.patch56
-rw-r--r--multimedia/aegisub/slack-desc4
-rw-r--r--multimedia/anyremote/README26
-rw-r--r--multimedia/anyremote/anyremote.SlackBuild22
-rw-r--r--multimedia/aom/README7
-rw-r--r--multimedia/aom/aom.SlackBuild126
-rw-r--r--multimedia/aom/aom.info10
-rw-r--r--multimedia/aom/slack-desc19
-rw-r--r--multimedia/apetag/README2
-rw-r--r--multimedia/apetag/apetag.SlackBuild28
-rw-r--r--multimedia/apetag/apetag.info6
-rw-r--r--multimedia/apetag/slack-desc4
-rw-r--r--multimedia/audio-recorder/README28
-rw-r--r--multimedia/audio-recorder/audio-recorder.SlackBuild34
-rw-r--r--multimedia/audio-recorder/audio-recorder.info4
-rw-r--r--multimedia/audiopreview/README14
-rw-r--r--multimedia/audiopreview/audiopreview.SlackBuild19
-rw-r--r--multimedia/audiopreview/audiopreview.info2
-rw-r--r--multimedia/avidemux/README12
-rw-r--r--multimedia/avidemux/avidemux.SlackBuild30
-rw-r--r--multimedia/avidemux/avidemux.info8
-rw-r--r--multimedia/avidemux/extra-patch-i386-nosse.patch14
-rw-r--r--multimedia/bdtools/bdtools.SlackBuild36
-rw-r--r--multimedia/beets/README4
-rw-r--r--multimedia/beets/beet2
-rw-r--r--multimedia/beets/beets.SlackBuild32
-rw-r--r--multimedia/beets/beets.info12
-rw-r--r--multimedia/beets/slack-desc2
-rw-r--r--multimedia/bino/README15
-rw-r--r--multimedia/bino/bino.SlackBuild51
-rw-r--r--multimedia/bino/bino.info8
-rw-r--r--multimedia/bino/slack-desc4
-rw-r--r--multimedia/bombono-dvd/bombono-dvd.SlackBuild47
-rw-r--r--multimedia/bombono-dvd/bombono-dvd.info2
-rw-r--r--multimedia/bombono-dvd/patches/autoptr2uniqueptr.patch12
-rw-r--r--multimedia/bombono-dvd/patches/boost-1.78.diff914
-rw-r--r--multimedia/bombono-dvd/patches/boost.patch157
-rw-r--r--multimedia/bombono-dvd/patches/ffmpeg3.patch24
-rw-r--r--multimedia/bombono-dvd/patches/fix_c++11_literal_warnings.patch174
-rw-r--r--multimedia/bombono-dvd/patches/fix_ffmpeg_codecid.patch39
-rw-r--r--multimedia/bombono-dvd/patches/fix_ptr2bool_cast.patch13
-rw-r--r--multimedia/bombono-dvd/patches/scons.diff221
-rw-r--r--multimedia/cantata/cantata.SlackBuild20
-rw-r--r--multimedia/cantata/cantata.info8
-rw-r--r--multimedia/castget/README9
-rw-r--r--multimedia/castget/castget.SlackBuild112
-rw-r--r--multimedia/castget/castget.info10
-rw-r--r--multimedia/castget/slack-desc19
-rw-r--r--multimedia/castnow/README4
-rw-r--r--multimedia/castnow/castnow.SlackBuild16
-rw-r--r--multimedia/ccextractor/README8
-rw-r--r--multimedia/ccextractor/ccextractor.SlackBuild83
-rw-r--r--multimedia/ccextractor/ccextractor.info8
-rw-r--r--multimedia/ccextractor/leptonica-1.83.1.patch36
-rw-r--r--multimedia/ccxstream/README4
-rw-r--r--multimedia/ccxstream/ccxstream.SlackBuild13
-rw-r--r--multimedia/celluloid/README2
-rw-r--r--multimedia/celluloid/celluloid.SlackBuild110
-rw-r--r--multimedia/celluloid/celluloid.info10
-rw-r--r--multimedia/celluloid/doinst.sh (renamed from multimedia/gtkpod/doinst.sh)0
-rw-r--r--multimedia/celluloid/slack-desc (renamed from multimedia/dvdauthor/slack-desc)22
-rw-r--r--multimedia/cfourcc/cfourcc.SlackBuild22
-rw-r--r--multimedia/cinelerra/README4
-rw-r--r--multimedia/cinelerra/cinelerra.SlackBuild49
-rw-r--r--multimedia/cinelerra/cinelerra.desktop10
-rw-r--r--multimedia/cinelerra/cinelerra.info10
-rw-r--r--multimedia/cinelerra/slack-desc8
-rw-r--r--multimedia/clamz/clamz.SlackBuild22
-rw-r--r--multimedia/coriander/README18
-rw-r--r--multimedia/coriander/coriander.SlackBuild28
-rw-r--r--multimedia/coriander/coriander.desktop2
-rw-r--r--multimedia/coriander/coriander.info8
-rw-r--r--multimedia/coriander/slack-desc2
-rw-r--r--multimedia/cowbell/cowbell.SlackBuild22
-rw-r--r--multimedia/ctl/README8
-rw-r--r--multimedia/ctl/ctl-1.5.2-Use-GNUInstallDirs-and-fix-PkgConfig-files-1.patch399
-rw-r--r--multimedia/ctl/ctl.SlackBuild52
-rw-r--r--multimedia/ctl/ilmbase-2.3.0-compatibility.patch11
-rw-r--r--multimedia/cuetools/cuetools.SlackBuild22
-rw-r--r--multimedia/cuetools/cuetools.info2
-rw-r--r--multimedia/davs2/README4
-rw-r--r--multimedia/davs2/davs2.SlackBuild123
-rw-r--r--multimedia/davs2/davs2.info10
-rw-r--r--multimedia/davs2/slack-desc19
-rw-r--r--multimedia/devedeng/devedeng.SlackBuild16
-rw-r--r--multimedia/devedeng/devedeng.info2
-rw-r--r--multimedia/dirac/README6
-rw-r--r--multimedia/dirac/dirac.SlackBuild20
-rw-r--r--multimedia/droidcam/README21
-rw-r--r--multimedia/droidcam/README.SLACKWARE24
-rw-r--r--multimedia/droidcam/dkms.conf5
-rw-r--r--multimedia/droidcam/doinst.sh30
-rw-r--r--multimedia/droidcam/douninst.sh7
-rw-r--r--multimedia/droidcam/droidcam.SlackBuild118
-rw-r--r--multimedia/droidcam/droidcam.info10
-rw-r--r--multimedia/droidcam/slack-desc (renamed from multimedia/dvbsnoop/slack-desc)22
-rw-r--r--multimedia/dsmidiwifi/README8
-rw-r--r--multimedia/dsmidiwifi/dsmidiwifi.SlackBuild25
-rw-r--r--multimedia/dsmidiwifi/dsmidiwifi.info2
-rw-r--r--multimedia/dssi/README15
-rw-r--r--multimedia/dssi/dssi.SlackBuild23
-rw-r--r--multimedia/dvblast/README3
-rw-r--r--multimedia/dvblast/dvblast.SlackBuild16
-rw-r--r--multimedia/dvbsnoop/README15
-rw-r--r--multimedia/dvbsnoop/dvbsnoop.SlackBuild84
-rw-r--r--multimedia/dvbsnoop/dvbsnoop.info10
-rw-r--r--multimedia/dvd-slideshow/dvd-slideshow.SlackBuild18
-rw-r--r--multimedia/dvd-slideshow/dvd-slideshow.info8
-rw-r--r--multimedia/dvdauthor/README2
-rw-r--r--multimedia/dvdauthor/dvdauthor.info10
-rw-r--r--multimedia/dvdbackup/README10
-rw-r--r--multimedia/dvdbackup/dvdbackup.SlackBuild40
-rw-r--r--multimedia/dvdbackup/dvdbackup.info4
-rw-r--r--multimedia/dvdbackup/patches/dvdbackup-dvdread-6.1.patch86
-rw-r--r--multimedia/dvdbackup/patches/dvdbackup_no-convert-title.patch26
-rw-r--r--multimedia/dvdbackup/patches/remove_PATH_MAX_limitation.patch463
-rw-r--r--multimedia/dvdrip/README13
-rw-r--r--multimedia/dvdrip/dvdrip.SlackBuild27
-rw-r--r--multimedia/dvdstyler/README13
-rw-r--r--multimedia/dvdstyler/dvdstyler.SlackBuild20
-rw-r--r--multimedia/dvdstyler/dvdstyler.info8
-rw-r--r--multimedia/dvgrab/dvgrab.SlackBuild18
-rw-r--r--multimedia/emoc/emoc.SlackBuild25
-rw-r--r--multimedia/emoc/emoc.info2
-rw-r--r--multimedia/exaile/README13
-rw-r--r--multimedia/exaile/doinst.sh5
-rw-r--r--multimedia/exaile/exaile.SlackBuild46
-rw-r--r--multimedia/exaile/exaile.info12
-rw-r--r--multimedia/farsight2/README7
-rw-r--r--multimedia/farsight2/farsight2.SlackBuild26
-rw-r--r--multimedia/farsight2/farsight2.info4
-rw-r--r--multimedia/farsight2/make-4.3.patch122
-rw-r--r--multimedia/farstream/README7
-rw-r--r--multimedia/farstream/farstream.info10
-rw-r--r--multimedia/farstream/slack-desc19
-rw-r--r--multimedia/fdkaac/README6
-rw-r--r--multimedia/fdkaac/fdkaac.SlackBuild33
-rw-r--r--multimedia/fdkaac/fdkaac.info6
-rw-r--r--multimedia/ffmpeg/README70
-rw-r--r--multimedia/ffmpeg/ffmpeg-3.2.4-libfdk_aac-2.0.0.patch11
-rw-r--r--multimedia/ffmpeg/ffmpeg-3.2.4-openjpeg2.3.patch102
-rw-r--r--multimedia/ffmpeg/ffmpeg.SlackBuild261
-rw-r--r--multimedia/ffmpeg/ffmpeg.info10
-rw-r--r--multimedia/ffmpeg2theora/ffmpeg2theora.SlackBuild21
-rw-r--r--multimedia/ffmpeg2theora/ffmpeg2theora.info2
-rw-r--r--multimedia/ffmpeg2theora/scons-python3.patch.gzbin0 -> 960 bytes
-rw-r--r--multimedia/ffmpeg4/README85
-rw-r--r--multimedia/ffmpeg4/ffmpeg4.SlackBuild234
-rw-r--r--multimedia/ffmpeg4/ffmpeg4.info10
-rw-r--r--multimedia/ffmpegfs/README22
-rw-r--r--multimedia/ffmpegfs/changelog15
-rw-r--r--multimedia/ffmpegfs/ffmpegfs.SlackBuild113
-rw-r--r--multimedia/ffmpegfs/ffmpegfs.info10
-rw-r--r--multimedia/ffmpegfs/slack-desc19
-rw-r--r--multimedia/filebot-legacy/README18
-rw-r--r--multimedia/filebot-legacy/doinst.sh (renamed from multimedia/OpenPHT/doinst.sh)0
-rw-r--r--multimedia/filebot-legacy/filebot-legacy.SlackBuild (renamed from multimedia/opera-developer-ffmpeg-codecs/opera-developer-ffmpeg-codecs.SlackBuild)71
-rw-r--r--multimedia/filebot-legacy/filebot-legacy.info10
-rw-r--r--multimedia/filebot-legacy/slack-desc19
-rw-r--r--multimedia/filebot/README11
-rw-r--r--multimedia/filebot/filebot.SlackBuild51
-rw-r--r--multimedia/filebot/filebot.info14
-rw-r--r--multimedia/flashplayer-plugin/README1
-rw-r--r--multimedia/flashplayer-plugin/flashplayer-plugin.SlackBuild87
-rw-r--r--multimedia/flashplayer-plugin/flashplayer-plugin.info10
-rw-r--r--multimedia/flowblade/flowblade.SlackBuild35
-rw-r--r--multimedia/flowblade/flowblade.info8
-rw-r--r--multimedia/flowblade/mlt7.patch21
-rw-r--r--multimedia/flowblade/slack-desc2
-rw-r--r--multimedia/flvtool2/README8
-rw-r--r--multimedia/flvtool2/flvtool2.SlackBuild16
-rw-r--r--multimedia/freetube/README10
-rw-r--r--multimedia/freetube/doinst.sh13
-rw-r--r--multimedia/freetube/freetube.SlackBuild94
-rw-r--r--multimedia/freetube/freetube.info10
-rw-r--r--multimedia/freetube/slack-desc19
-rw-r--r--multimedia/freshplayerplugin/README14
-rw-r--r--multimedia/freshplayerplugin/freshplayerplugin.info10
-rw-r--r--multimedia/freshplayerplugin/slack-desc19
-rw-r--r--multimedia/gaupol/README32
-rw-r--r--multimedia/gaupol/gaupol.SlackBuild59
-rw-r--r--multimedia/gaupol/gaupol.info12
-rw-r--r--multimedia/gecko-mediaplayer/README6
-rw-r--r--multimedia/gecko-mediaplayer/gecko-mediaplayer.SlackBuild78
-rw-r--r--multimedia/gecko-mediaplayer/gecko-mediaplayer.info10
-rw-r--r--multimedia/gecko-mediaplayer/np_loadds.patch16
-rw-r--r--multimedia/gecko-mediaplayer/slack-desc19
-rw-r--r--multimedia/genpuid/README19
-rw-r--r--multimedia/genpuid/genpuid.SlackBuild16
-rw-r--r--multimedia/get_iplayer/get_iplayer.SlackBuild26
-rw-r--r--multimedia/get_iplayer/get_iplayer.info8
-rw-r--r--multimedia/gigedit/gigedit.SlackBuild22
-rw-r--r--multimedia/gimp-gap/README7
-rw-r--r--multimedia/gimp-gap/gimp-gap.SlackBuild24
-rw-r--r--multimedia/glyr/README7
-rw-r--r--multimedia/glyr/glyr.SlackBuild15
-rw-r--r--multimedia/glyr/glyr.info2
-rw-r--r--multimedia/gmidimonitor/README3
-rw-r--r--multimedia/gmidimonitor/gmidimonitor.SlackBuild16
-rw-r--r--multimedia/gmtp/README9
-rw-r--r--multimedia/gmtp/gmtp.SlackBuild17
-rw-r--r--multimedia/gnash/README10
-rw-r--r--multimedia/gnash/doinst.sh9
-rw-r--r--multimedia/gnash/gnash.SlackBuild99
-rw-r--r--multimedia/gnash/gnash.info8
-rw-r--r--multimedia/gnash/patch/58dcdd9338d965e54c8f03ce3d2757388d82b7a3.patch25
-rw-r--r--multimedia/gnash/patch/cc22f2d0597f3a9547980f4786d918f8b5635472.patch31
-rw-r--r--multimedia/gnash/patch/gcc47.patch11
-rw-r--r--multimedia/gnash/patch/gnash-0.8.10-boost-1.50.patch24
-rw-r--r--multimedia/gnash/patch/gnash-0.8.10-cve-2012-1175.patch63
-rw-r--r--multimedia/gnash/patch/gnash-0.8.10-kde4-libdir.patch12
-rw-r--r--multimedia/gnash/patch/gnash-0.8.10-klash.patch12
-rw-r--r--multimedia/gnash/patch/gnash-boost.patch14
-rw-r--r--multimedia/gnome-mplayer/README26
-rw-r--r--multimedia/gnome-mplayer/gnome-mplayer.SlackBuild24
-rw-r--r--multimedia/gnome-video-effects/README3
-rw-r--r--multimedia/gnome-video-effects/gnome-video-effects.SlackBuild92
-rw-r--r--multimedia/gnome-video-effects/gnome-video-effects.info10
-rw-r--r--multimedia/gnome-video-effects/slack-desc19
-rw-r--r--multimedia/gnupod/README7
-rw-r--r--multimedia/gnupod/gnupod.SlackBuild22
-rw-r--r--multimedia/google-talkplugin/README4
-rw-r--r--multimedia/google-talkplugin/google-talkplugin.SlackBuild86
-rw-r--r--multimedia/google-talkplugin/google-talkplugin.info10
-rw-r--r--multimedia/google-talkplugin/slack-desc19
-rw-r--r--multimedia/goom/README3
-rw-r--r--multimedia/goom/goom.SlackBuild123
-rw-r--r--multimedia/goom/goom.info10
-rw-r--r--multimedia/goom/slack-desc (renamed from multimedia/miro/slack-desc)22
-rw-r--r--multimedia/gpac/README10
-rw-r--r--multimedia/gpac/gpac.SlackBuild24
-rw-r--r--multimedia/gpac/gpac.info8
-rw-r--r--multimedia/gpodder/README19
-rw-r--r--multimedia/gpodder/doinst.sh1
-rw-r--r--multimedia/gpodder/gpodder.SlackBuild75
-rw-r--r--multimedia/gpodder/gpodder.info12
-rw-r--r--multimedia/gpodder/slack-desc18
-rw-r--r--multimedia/gst-libav/README2
-rw-r--r--multimedia/gst-libav/gst-libav.SlackBuild96
-rw-r--r--multimedia/gst-libav/gst-libav.info10
-rw-r--r--multimedia/gst-plugins-bad-nonfree/README24
-rw-r--r--multimedia/gst-plugins-bad-nonfree/README_docs.txt3
-rw-r--r--multimedia/gst-plugins-bad-nonfree/gst-plugins-bad-nonfree.SlackBuild236
-rw-r--r--multimedia/gst-plugins-bad-nonfree/gst-plugins-bad-nonfree.info (renamed from multimedia/gst-plugins-bad/gst-plugins-bad.info)8
-rw-r--r--multimedia/gst-plugins-bad-nonfree/slack-desc19
-rw-r--r--multimedia/gst-plugins-bad/README10
-rw-r--r--multimedia/gst-plugins-bad/slack-desc19
-rw-r--r--multimedia/gst-plugins-ugly/README13
-rw-r--r--multimedia/gst-plugins-ugly/gst-plugins-ugly.SlackBuild57
-rw-r--r--multimedia/gst-plugins-ugly/gst-plugins-ugly.info6
-rw-r--r--multimedia/gst0-ffmpeg/gst0-ffmpeg.SlackBuild24
-rw-r--r--multimedia/gst0-ffmpeg/gst0-ffmpeg.info2
-rw-r--r--multimedia/gst0-ffmpeg/orc-0.4.30.patch26
-rw-r--r--multimedia/gst0-plugins-bad/README9
-rw-r--r--multimedia/gst0-plugins-bad/drop-vpx-compat-defines.patch27
-rw-r--r--multimedia/gst0-plugins-bad/gst0-plugins-bad.SlackBuild111
-rw-r--r--multimedia/gst0-plugins-bad/gst0-plugins-bad.info10
-rw-r--r--multimedia/gst0-plugins-bad/libmodplug-include.patch12
-rw-r--r--multimedia/gst0-plugins-bad/slack-desc19
-rw-r--r--multimedia/gst0-plugins-base/README6
-rw-r--r--multimedia/gst0-plugins-base/gst0-plugins-base.SlackBuild126
-rw-r--r--multimedia/gst0-plugins-base/gst0-plugins-base.info10
-rw-r--r--multimedia/gst0-plugins-base/patches/00-fix-crash-0-byte-ogg.patch22
-rw-r--r--multimedia/gst0-plugins-base/patches/01-colorbalance-fix-abi.patch23
-rw-r--r--multimedia/gst0-plugins-base/patches/02-ayuv64-lanczos.patch236
-rw-r--r--multimedia/gst0-plugins-base/patches/03-videoscale-fix-negotiation.patch171
-rw-r--r--multimedia/gst0-plugins-base/patches/04-gstaudio-symbols.patch10
-rw-r--r--multimedia/gst0-plugins-base/patches/05-enum_headers.patch132
-rw-r--r--multimedia/gst0-plugins-base/slack-desc19
-rw-r--r--multimedia/gst0-plugins-base/x86.patch35
-rw-r--r--multimedia/gst0-plugins-good/README3
-rw-r--r--multimedia/gst0-plugins-good/gst0-plugins-good.SlackBuild126
-rw-r--r--multimedia/gst0-plugins-good/gst0-plugins-good.info10
-rw-r--r--multimedia/gst0-plugins-good/patches/00-test-rtp-payloading.patch422
-rw-r--r--multimedia/gst0-plugins-good/patches/01-souptest.patch28
-rw-r--r--multimedia/gst0-plugins-good/patches/02-v4l.compile.fixes.diff57
-rw-r--r--multimedia/gst0-plugins-good/slack-desc19
-rw-r--r--multimedia/gst0-plugins-ugly/README11
-rw-r--r--multimedia/gst0-plugins-ugly/gst0-plugins-ugly.SlackBuild22
-rw-r--r--multimedia/gst0-plugins-ugly/gst0-plugins-ugly.info2
-rw-r--r--multimedia/gstreamer0/README8
-rw-r--r--multimedia/gstreamer0/gstreamer-0.10.36-bison3.patch31
-rw-r--r--multimedia/gstreamer0/gstreamer0.SlackBuild (renamed from multimedia/dvdauthor/dvdauthor.SlackBuild)72
-rw-r--r--multimedia/gstreamer0/gstreamer0.info10
-rw-r--r--multimedia/gstreamer0/slack-desc19
-rw-r--r--multimedia/gtick/gtick.SlackBuild30
-rw-r--r--multimedia/gtick/gtick.info6
-rw-r--r--multimedia/gtk-recordmydesktop/gtk-recordmydesktop.SlackBuild22
-rw-r--r--multimedia/gtkpod/README5
-rw-r--r--multimedia/gtkpod/gtkpod.info10
-rw-r--r--multimedia/guvcview/README6
-rw-r--r--multimedia/guvcview/guvcview.SlackBuild38
-rw-r--r--multimedia/guvcview/guvcview.info8
-rw-r--r--multimedia/gxine/README5
-rw-r--r--multimedia/gxine/doinst.sh (renamed from multimedia/miro/doinst.sh)1
-rw-r--r--multimedia/gxine/gxine.SlackBuild (renamed from multimedia/kdenlive/kdenlive.SlackBuild)124
-rw-r--r--multimedia/gxine/gxine.desktop12
-rw-r--r--multimedia/gxine/gxine.info10
-rw-r--r--multimedia/gxine/slack-desc19
-rw-r--r--multimedia/haruna/README13
-rw-r--r--multimedia/haruna/doinst.sh11
-rw-r--r--multimedia/haruna/haruna.SlackBuild101
-rw-r--r--multimedia/haruna/haruna.info10
-rw-r--r--multimedia/haruna/slack-desc19
-rw-r--r--multimedia/hexter/hexter.SlackBuild19
-rw-r--r--multimedia/huludesktop/huludesktop.SlackBuild35
-rw-r--r--multimedia/huludesktop/huludesktop.info2
-rw-r--r--multimedia/iat/README4
-rw-r--r--multimedia/iat/iat.SlackBuild16
-rw-r--r--multimedia/imagination/imagination.SlackBuild24
-rw-r--r--multimedia/imagination/imagination.info8
-rw-r--r--multimedia/inputstream.adaptive/README16
-rw-r--r--multimedia/inputstream.adaptive/inputstream.adaptive.SlackBuild114
-rw-r--r--multimedia/inputstream.adaptive/inputstream.adaptive.info12
-rw-r--r--multimedia/inputstream.adaptive/slack-desc19
-rw-r--r--multimedia/intel-gmmlib/README3
-rw-r--r--multimedia/intel-gmmlib/intel-gmmlib.SlackBuild (renamed from multimedia/tomahawk/tomahawk.SlackBuild)43
-rw-r--r--multimedia/intel-gmmlib/intel-gmmlib.info10
-rw-r--r--multimedia/intel-gmmlib/slack-desc19
-rw-r--r--multimedia/intel-media-driver/README3
-rw-r--r--multimedia/intel-media-driver/intel-media-driver.SlackBuild (renamed from multimedia/freshplayerplugin/freshplayerplugin.SlackBuild)45
-rw-r--r--multimedia/intel-media-driver/intel-media-driver.info10
-rw-r--r--multimedia/intel-media-driver/slack-desc (renamed from multimedia/flashplayer-plugin/slack-desc)22
-rw-r--r--multimedia/intel-media-sdk/README11
-rw-r--r--multimedia/intel-media-sdk/intel-media-sdk.SlackBuild110
-rw-r--r--multimedia/intel-media-sdk/intel-media-sdk.info10
-rw-r--r--multimedia/intel-media-sdk/slack-desc19
-rw-r--r--multimedia/iptvnator/README32
-rw-r--r--multimedia/iptvnator/doinst.sh (renamed from multimedia/kdenlive/doinst.sh)6
-rw-r--r--multimedia/iptvnator/iptvnator.SlackBuild (renamed from multimedia/mkvalidator/mkvalidator.SlackBuild)79
-rw-r--r--multimedia/iptvnator/iptvnator.info10
-rw-r--r--multimedia/iptvnator/slack-desc (renamed from multimedia/mediatomb/slack-desc)22
-rw-r--r--multimedia/ivtv-utils/README4
-rw-r--r--multimedia/ivtv-utils/ivtv-utils.SlackBuild28
-rw-r--r--multimedia/ivtv-utils/ivtv-utils.info6
-rw-r--r--multimedia/jellyfin-bin/README12
-rw-r--r--multimedia/jellyfin-bin/README.SLACKWARE14
-rw-r--r--multimedia/jellyfin-bin/doinst.sh24
-rw-r--r--multimedia/jellyfin-bin/jellyfin8
-rw-r--r--multimedia/jellyfin-bin/jellyfin-bin.SlackBuild (renamed from multimedia/mkclean/mkclean.SlackBuild)74
-rw-r--r--multimedia/jellyfin-bin/jellyfin-bin.info10
-rw-r--r--multimedia/jellyfin-bin/rc.jellyfin77
-rw-r--r--multimedia/jellyfin-bin/slack-desc19
-rw-r--r--multimedia/jellyfin-media-player/README8
-rw-r--r--multimedia/jellyfin-media-player/doinst.sh (renamed from multimedia/tomahawk/doinst.sh)1
-rw-r--r--multimedia/jellyfin-media-player/jellyfin-media-player.SlackBuild115
-rw-r--r--multimedia/jellyfin-media-player/jellyfin-media-player.info10
-rw-r--r--multimedia/jellyfin-media-player/slack-desc19
-rw-r--r--multimedia/jlscp/README2
-rw-r--r--multimedia/jlscp/jlscp.SlackBuild33
-rw-r--r--multimedia/jlscp/jlscp.info2
-rw-r--r--multimedia/k9copy-reloaded/README19
-rw-r--r--multimedia/k9copy-reloaded/k9copy-reloaded.SlackBuild125
-rw-r--r--multimedia/k9copy-reloaded/k9copy-reloaded.info8
-rw-r--r--multimedia/k9copy-reloaded/patches/k9copy-dvdnav.patch207
-rw-r--r--multimedia/k9copy-reloaded/patches/k9copy-ffmpeg3.patch44
-rw-r--r--multimedia/k9copy-reloaded/patches/k9copy-fix-desktop-files.patch66
-rw-r--r--multimedia/k9copy-reloaded/patches/k9copy-gcc7.patch30
-rw-r--r--multimedia/k9copy-reloaded/patches/k9copy-i18n.patch942
-rw-r--r--multimedia/k9copy-reloaded/patches/k9copy-installdirs.patch29
-rw-r--r--multimedia/k9copy-reloaded/patches/k9copy-mimetype.patch23
-rw-r--r--multimedia/k9copy-reloaded/patches/k9copy-missing-language-in-po-files.patch221
-rw-r--r--multimedia/k9copy-reloaded/patches/k9copy-tempdir.patch63
-rw-r--r--multimedia/k9copy-reloaded/patches/k9copy-uncheck-dvdauthor.patch12
-rw-r--r--multimedia/kaffeine-mozilla/kaffeine-mozilla.SlackBuild22
-rw-r--r--multimedia/kaffeine/CMakeLists.patch24
-rw-r--r--multimedia/kaffeine/README10
-rw-r--r--multimedia/kaffeine/kaffeine.SlackBuild34
-rw-r--r--multimedia/kaffeine/kaffeine.info8
-rw-r--r--multimedia/kaffeine/slack-desc14
-rw-r--r--multimedia/kdenlive/README18
-rw-r--r--multimedia/kdenlive/kdenlive.info10
-rw-r--r--multimedia/kdenlive/slack-desc19
-rw-r--r--multimedia/kodi/README41
-rw-r--r--multimedia/kodi/kodi.SlackBuild208
-rw-r--r--multimedia/kodi/kodi.info36
-rw-r--r--multimedia/kodi/patches/kodi-texturepacker.patch17
-rw-r--r--multimedia/kodi/patches/xbmc-Krypton-samba-4.0.patch24
-rw-r--r--multimedia/kvazaar/README6
-rw-r--r--multimedia/kvazaar/changelog18
-rw-r--r--multimedia/kvazaar/kvazaar.SlackBuild119
-rw-r--r--multimedia/kvazaar/kvazaar.info10
-rw-r--r--multimedia/kvazaar/slack-desc (renamed from multimedia/ffmpeg4/slack-desc)22
-rw-r--r--multimedia/l-smash/README12
-rw-r--r--multimedia/l-smash/l-smash.SlackBuild35
-rw-r--r--multimedia/l-smash/l-smash.info2
-rw-r--r--multimedia/l-smash/slack-desc14
-rw-r--r--multimedia/lightspark/README12
-rw-r--r--multimedia/lightspark/lightspark.SlackBuild27
-rw-r--r--multimedia/lightspark/lightspark.info12
-rw-r--r--multimedia/lircaile/README1
-rw-r--r--multimedia/lircaile/lircaile.SlackBuild72
-rw-r--r--multimedia/lircaile/lircaile.info10
-rw-r--r--multimedia/lives/README6
-rw-r--r--multimedia/lives/lives.SlackBuild64
-rw-r--r--multimedia/lives/lives.info6
-rw-r--r--multimedia/lives/slack-desc8
-rw-r--r--multimedia/lsdvd/lsdvd.SlackBuild33
-rw-r--r--multimedia/lsdvd/lsdvd.info2
-rw-r--r--multimedia/lwks/README39
-rw-r--r--multimedia/lwks/doinst.sh3
-rw-r--r--multimedia/lwks/lwks.SlackBuild63
-rw-r--r--multimedia/lwks/lwks.info10
-rw-r--r--multimedia/lwks/slack-desc19
-rw-r--r--multimedia/makemkv/README.issues2
-rw-r--r--multimedia/makemkv/makemkv.SlackBuild19
-rw-r--r--multimedia/makemkv/makemkv.info16
-rw-r--r--multimedia/mediainfo/README10
-rw-r--r--multimedia/mediainfo/mediainfo.SlackBuild22
-rw-r--r--multimedia/mediainfo/mediainfo.info6
-rw-r--r--multimedia/mediainfo/remove-internal-libzen-support.patch36
-rw-r--r--multimedia/mediatomb/README7
-rw-r--r--multimedia/mediatomb/config.xml151
-rw-r--r--multimedia/mediatomb/mediatomb-0.12.1-libmp4v2_191_p479.patch187
-rw-r--r--multimedia/mediatomb/mediatomb-mp4v2-check.patch86
-rw-r--r--multimedia/mediatomb/mediatomb.SlackBuild131
-rw-r--r--multimedia/mediatomb/mediatomb.info10
-rw-r--r--multimedia/mediatomb/rc.mediatomb84
-rw-r--r--multimedia/mediatomb/rc.mediatomb.conf21
-rw-r--r--multimedia/mediatomb/samsung-mkv.patch445
-rw-r--r--multimedia/mimms/mimms.SlackBuild18
-rw-r--r--multimedia/minidlna/README.SLACKWARE22
-rw-r--r--multimedia/minidlna/doinst.sh13
-rw-r--r--multimedia/minidlna/minidlna.SlackBuild45
-rw-r--r--multimedia/minidlna/minidlna.info8
-rw-r--r--multimedia/minidlna/minidlna.logrotate6
-rw-r--r--multimedia/minidlna/rc.minidlna132
-rw-r--r--multimedia/minitube/README9
-rw-r--r--multimedia/minitube/minitube-gcc47.patch11
-rw-r--r--multimedia/minitube/minitube.SlackBuild56
-rw-r--r--multimedia/minitube/minitube.info8
-rw-r--r--multimedia/mirage2iso/README4
-rw-r--r--multimedia/mirage2iso/mirage2iso.1109
-rw-r--r--multimedia/mirage2iso/mirage2iso.SlackBuild86
-rw-r--r--multimedia/mirage2iso/mirage2iso.info10
-rw-r--r--multimedia/mirage2iso/mirage2iso.rst100
-rw-r--r--multimedia/mirage2iso/slack-desc (renamed from multimedia/vokoscreen/slack-desc)22
-rw-r--r--multimedia/miro/README5
-rw-r--r--multimedia/miro/miro-gdb-fix.patch21
-rw-r--r--multimedia/miro/miro.SlackBuild110
-rw-r--r--multimedia/miro/miro.info10
-rw-r--r--multimedia/mjpegtools/README20
-rw-r--r--multimedia/mjpegtools/doinst.sh6
-rw-r--r--multimedia/mjpegtools/mjpegtools.SlackBuild48
-rw-r--r--multimedia/mjpegtools/mjpegtools.info8
-rw-r--r--multimedia/mkclean/README15
-rw-r--r--multimedia/mkclean/mkclean.info10
-rw-r--r--multimedia/mkclean/slack-desc19
-rw-r--r--multimedia/mkvalidator/README6
-rw-r--r--multimedia/mkvalidator/mkvalidator.info10
-rw-r--r--multimedia/mkvalidator/slack-desc19
-rw-r--r--multimedia/mkvtoolnix/README21
-rw-r--r--multimedia/mkvtoolnix/mkvtoolnix.SlackBuild23
-rw-r--r--multimedia/mkvtoolnix/mkvtoolnix.info6
-rw-r--r--multimedia/mlt/README11
-rw-r--r--multimedia/mlt/doinst.sh20
-rw-r--r--multimedia/mlt/mlt.SlackBuild217
-rw-r--r--multimedia/mlt/mlt.info10
-rw-r--r--multimedia/mlt/slack-desc19
-rw-r--r--multimedia/mozplugger/mozplugger.SlackBuild22
-rw-r--r--multimedia/mozplugger/mozplugger.info2
-rw-r--r--multimedia/mp3fm/README19
-rw-r--r--multimedia/mp3fm/mp3fm.SlackBuild16
-rw-r--r--multimedia/mp3fs/mp3fs.SlackBuild16
-rw-r--r--multimedia/mp3fs/mp3fs.info2
-rw-r--r--multimedia/mpgtx/README9
-rw-r--r--multimedia/mpgtx/mpgtx.SlackBuild22
-rw-r--r--multimedia/mplayer-codecs32/mplayer-codecs32.SlackBuild18
-rw-r--r--multimedia/mplayer-codecs64/mplayer-codecs64.SlackBuild18
-rw-r--r--multimedia/mpv/README55
-rw-r--r--multimedia/mpv/mpv.SlackBuild63
-rw-r--r--multimedia/mpv/mpv.info14
-rw-r--r--multimedia/mpv/use_older_meson.diff35
-rw-r--r--multimedia/mtpfs/README2
-rw-r--r--multimedia/mtpfs/mtpfs.SlackBuild31
-rw-r--r--multimedia/mtpfs/mtpfs.info8
-rw-r--r--multimedia/munt/README17
-rw-r--r--multimedia/munt/doinst.sh9
-rw-r--r--multimedia/munt/interleave.c93
-rw-r--r--multimedia/munt/munt.SlackBuild186
-rw-r--r--multimedia/munt/munt.info20
-rw-r--r--multimedia/munt/setcap.sh1
-rw-r--r--multimedia/munt/slack-desc4
-rw-r--r--multimedia/munt/system_rom_path.diff85
-rw-r--r--multimedia/muse-sounds-manager/README26
-rw-r--r--multimedia/muse-sounds-manager/doinst.sh13
-rw-r--r--multimedia/muse-sounds-manager/muse-sounds-manager.SlackBuild96
-rw-r--r--multimedia/muse-sounds-manager/muse-sounds-manager.info10
-rw-r--r--multimedia/muse-sounds-manager/slack-desc19
-rw-r--r--multimedia/musique/README15
-rw-r--r--multimedia/musique/musique.SlackBuild47
-rw-r--r--multimedia/musique/musique.info10
-rw-r--r--multimedia/musixmatch/README4
-rw-r--r--multimedia/musixmatch/musixmatch.SlackBuild16
-rw-r--r--multimedia/musixmatch/musixmatch.info2
-rw-r--r--multimedia/musixmatch/slack-desc2
-rw-r--r--multimedia/mythplugins/README7
-rw-r--r--multimedia/mythplugins/mythplugins.SlackBuild110
-rw-r--r--multimedia/mythplugins/mythplugins.info10
-rw-r--r--multimedia/mythtv/README10
-rw-r--r--multimedia/mythtv/README.SLACKWARE14
-rw-r--r--multimedia/mythtv/doinst.sh32
-rw-r--r--multimedia/mythtv/files/mysql.txt39
-rw-r--r--multimedia/mythtv/files/mythfrontend.desktop8
-rw-r--r--multimedia/mythtv/files/mythfrontend.pngbin19611 -> 0 bytes
-rw-r--r--multimedia/mythtv/files/mythtv-setup.desktop8
-rw-r--r--multimedia/mythtv/files/mythtv-setup.pngbin19611 -> 0 bytes
-rw-r--r--multimedia/mythtv/files/mythtv.logrotate.d10
-rw-r--r--multimedia/mythtv/files/rc.mythbackend.new62
-rw-r--r--multimedia/mythtv/libvpxenc.patch42
-rw-r--r--multimedia/mythtv/mythtv.SlackBuild160
-rw-r--r--multimedia/mythtv/mythtv.info10
-rw-r--r--multimedia/nightingale/README5
-rw-r--r--multimedia/nightingale/doinst.sh3
-rw-r--r--multimedia/nightingale/nightingale.SlackBuild95
-rw-r--r--multimedia/nightingale/nightingale.desktop11
-rw-r--r--multimedia/nightingale/nightingale.info10
-rw-r--r--multimedia/nrg2iso/nrg2iso.SlackBuild22
-rw-r--r--multimedia/nted/compilefix.diff20
-rw-r--r--multimedia/nted/nted.SlackBuild40
-rw-r--r--multimedia/nted/nted.info2
-rw-r--r--multimedia/obs-studio/README13
-rw-r--r--multimedia/obs-studio/obs-studio.SlackBuild58
-rw-r--r--multimedia/obs-studio/obs-studio.info16
-rw-r--r--multimedia/oggconvert/README8
-rw-r--r--multimedia/oggconvert/oggconvert.SlackBuild18
-rw-r--r--multimedia/oggvideotools/README7
-rw-r--r--multimedia/oggvideotools/oggvideotools.SlackBuild24
-rw-r--r--multimedia/olive/README17
-rw-r--r--multimedia/olive/doinst.sh14
-rw-r--r--multimedia/olive/olive-0.1.2-FlowLayout.patch12
-rw-r--r--multimedia/olive/olive-0.1.2-QFontMetrics.patch121
-rw-r--r--multimedia/olive/olive-0.1.2-QPainterPath.patch44
-rw-r--r--multimedia/olive/olive-0.1.2-QWheelEvent.patch21
-rw-r--r--multimedia/olive/olive-0.1.2-appdata-desktop.patch24
-rw-r--r--multimedia/olive/olive-0.1.2-cacher.patch24
-rw-r--r--multimedia/olive/olive-0.1.2-clickablelabel.patch14
-rw-r--r--multimedia/olive/olive-0.1.2-proxygenerator.patch18
-rw-r--r--multimedia/olive/olive.SlackBuild (renamed from multimedia/OpenLP/OpenLP.SlackBuild)50
-rw-r--r--multimedia/olive/olive.info10
-rw-r--r--multimedia/olive/slack-desc19
-rw-r--r--multimedia/opencaster/README29
-rw-r--r--multimedia/opencaster/opencaster.SlackBuild16
-rw-r--r--multimedia/openh264/README4
-rw-r--r--multimedia/openh264/changelog22
-rw-r--r--multimedia/openh264/openh264.SlackBuild104
-rw-r--r--multimedia/openh264/openh264.info10
-rw-r--r--multimedia/openh264/slack-desc (renamed from multimedia/tomahawk/slack-desc)22
-rw-r--r--multimedia/openshot/README7
-rw-r--r--multimedia/openshot/doinst.sh6
-rw-r--r--multimedia/openshot/openshot.SlackBuild26
-rw-r--r--multimedia/openshot/openshot.info10
-rw-r--r--multimedia/opera-developer-ffmpeg-codecs/README10
-rw-r--r--multimedia/opera-developer-ffmpeg-codecs/opera-developer-ffmpeg-codecs.info10
-rw-r--r--multimedia/opera-developer-ffmpeg-codecs/slack-desc19
-rw-r--r--multimedia/opera-ffmpeg-codecs/opera-ffmpeg-codecs.SlackBuild21
-rw-r--r--multimedia/opera-ffmpeg-codecs/opera-ffmpeg-codecs.info10
-rw-r--r--multimedia/parole/README16
-rw-r--r--multimedia/parole/parole.SlackBuild38
-rw-r--r--multimedia/parole/parole.info12
-rw-r--r--multimedia/parole/slack-desc2
-rw-r--r--multimedia/pepperflash-plugin/README7
-rw-r--r--multimedia/pepperflash-plugin/pepperflash-plugin.SlackBuild73
-rw-r--r--multimedia/pepperflash-plugin/pepperflash-plugin.info10
-rw-r--r--multimedia/pepperflash-plugin/slack-desc19
-rw-r--r--multimedia/picard-plugins/README5
-rw-r--r--multimedia/picard-plugins/picard-plugins.SlackBuild54
-rw-r--r--multimedia/picard-plugins/picard-plugins.info6
-rw-r--r--multimedia/picard/picard.SlackBuild31
-rw-r--r--multimedia/picard/picard.info8
-rw-r--r--multimedia/pipe-viewer/README46
-rw-r--r--multimedia/pipe-viewer/doinst.sh10
-rw-r--r--multimedia/pipe-viewer/pipe-viewer.SlackBuild (renamed from multimedia/straw-viewer/straw-viewer.SlackBuild)100
-rw-r--r--multimedia/pipe-viewer/pipe-viewer.info10
-rw-r--r--multimedia/pipe-viewer/pipe-viewer.sqf (renamed from multimedia/youtube-viewer/youtube-viewer.sqf)30
-rw-r--r--multimedia/pipe-viewer/restore_mplayer.diff36
-rw-r--r--multimedia/pipe-viewer/slack-desc19
-rw-r--r--multimedia/pitivi/README17
-rw-r--r--multimedia/pitivi/pitivi.SlackBuild52
-rw-r--r--multimedia/pitivi/pitivi.info8
-rw-r--r--multimedia/plasmatube/README4
-rw-r--r--multimedia/plasmatube/doinst.sh14
-rw-r--r--multimedia/plasmatube/plasmatube.SlackBuild110
-rw-r--r--multimedia/plasmatube/plasmatube.info10
-rw-r--r--multimedia/plasmatube/slack-desc (renamed from multimedia/simpleburn/slack-desc)22
-rw-r--r--multimedia/playerctl/playerctl.SlackBuild63
-rw-r--r--multimedia/playerctl/playerctl.info6
-rw-r--r--multimedia/plex-home-theater/README5
-rw-r--r--multimedia/plex-home-theater/disable_via_ace.patch15
-rw-r--r--multimedia/plex-home-theater/fribidi.patch47
-rw-r--r--multimedia/plex-home-theater/plex-home-theater7
-rw-r--r--multimedia/plex-home-theater/plex-home-theater.SlackBuild135
-rw-r--r--multimedia/plex-home-theater/plex-home-theater.desktop9
-rw-r--r--multimedia/plex-home-theater/plex-home-theater.info10
-rw-r--r--multimedia/plex-home-theater/plex-home-theater_512x512.pngbin330319 -> 0 bytes
-rw-r--r--multimedia/plex-home-theater/slack-desc19
-rw-r--r--multimedia/plexmediaserver/README7
-rw-r--r--multimedia/plexmediaserver/doinst.sh20
-rw-r--r--multimedia/plexmediaserver/plexmediaserver.SlackBuild86
-rw-r--r--multimedia/plexmediaserver/plexmediaserver.info14
-rw-r--r--multimedia/plexmediaserver/rc.plexmediaserver113
-rw-r--r--multimedia/pngnq-s9/pngnq-s9.SlackBuild16
-rw-r--r--multimedia/pocketsphinx/README3
-rw-r--r--multimedia/pocketsphinx/changelog26
-rw-r--r--multimedia/pocketsphinx/pocketsphinx.SlackBuild119
-rw-r--r--multimedia/pocketsphinx/pocketsphinx.info10
-rw-r--r--multimedia/pocketsphinx/slack-desc19
-rw-r--r--multimedia/podcastparser/README2
-rw-r--r--multimedia/podcastparser/podcastparser.SlackBuild86
-rw-r--r--multimedia/podcastparser/podcastparser.info10
-rw-r--r--multimedia/popcorntime/popcorntime.SlackBuild16
-rw-r--r--multimedia/popcorntime/popcorntime.info4
-rw-r--r--multimedia/pragha/README17
-rw-r--r--multimedia/pragha/pragha.SlackBuild36
-rw-r--r--multimedia/pragha/pragha.info2
-rw-r--r--multimedia/pyradio/pyradio.SlackBuild26
-rw-r--r--multimedia/pyradio/pyradio.info2
-rw-r--r--multimedia/qsampler/qsampler.SlackBuild69
-rw-r--r--multimedia/qsampler/qsampler.info6
-rw-r--r--multimedia/radiotray/radiotray.SlackBuild22
-rw-r--r--multimedia/radiotray/radiotray.info2
-rw-r--r--multimedia/rav1e/README20
-rw-r--r--multimedia/rav1e/rav1e.SlackBuild174
-rw-r--r--multimedia/rav1e/rav1e.info464
-rw-r--r--multimedia/rav1e/slack-desc19
-rw-r--r--multimedia/ripit/README6
-rw-r--r--multimedia/ripit/README_SBo.txt20
-rw-r--r--multimedia/ripit/ripit.SlackBuild34
-rw-r--r--multimedia/ripit/ripit.info2
-rw-r--r--multimedia/ripperX/README8
-rw-r--r--multimedia/ripperX/ripperX.SlackBuild16
-rw-r--r--multimedia/ripperX/ripperX.info2
-rw-r--r--multimedia/rosa-media-player/README23
-rw-r--r--multimedia/rosa-media-player/rosa-media-player.SlackBuild38
-rw-r--r--multimedia/rosa-media-player/rosa-media-player.info2
-rw-r--r--multimedia/rpi-imager/README3
-rw-r--r--multimedia/rpi-imager/doinst.sh (renamed from multimedia/plex-home-theater/doinst.sh)0
-rw-r--r--multimedia/rpi-imager/remove_update_checking.patch17
-rw-r--r--multimedia/rpi-imager/rpi-imager.SlackBuild122
-rw-r--r--multimedia/rpi-imager/rpi-imager.info10
-rw-r--r--multimedia/rpi-imager/slack-desc19
-rw-r--r--multimedia/rtmpdump/rtmpdump.SlackBuild26
-rw-r--r--multimedia/rtmpdump/rtmpdump.info6
-rw-r--r--multimedia/rygel/README16
-rw-r--r--multimedia/rygel/doinst.sh (renamed from multimedia/flashplayer-plugin/doinst.sh)0
-rw-r--r--multimedia/rygel/rygel.SlackBuild113
-rw-r--r--multimedia/rygel/rygel.info10
-rw-r--r--multimedia/rygel/slack-desc19
-rw-r--r--multimedia/schroedinger/schroedinger.SlackBuild24
-rw-r--r--multimedia/serviio/rc.serviio4
-rw-r--r--multimedia/serviio/serviio.SlackBuild16
-rw-r--r--multimedia/serviio/serviio.info2
-rw-r--r--multimedia/sfnt2woff/sfnt2woff.SlackBuild16
-rw-r--r--multimedia/shine/README5
-rw-r--r--multimedia/shine/fix-bugs.patch12394
-rw-r--r--multimedia/shine/shine.SlackBuild111
-rw-r--r--multimedia/shine/shine.info10
-rw-r--r--multimedia/shine/slack-desc19
-rw-r--r--multimedia/shotcut/shotcut.SlackBuild32
-rw-r--r--multimedia/shotcut/shotcut.info8
-rw-r--r--multimedia/sickchill/README32
-rw-r--r--multimedia/sickchill/config.ini3
-rw-r--r--multimedia/sickchill/doinst.sh (renamed from multimedia/mediatomb/doinst.sh)8
-rw-r--r--multimedia/sickchill/rc.sickchill171
-rw-r--r--multimedia/sickchill/sickchill.SlackBuild138
-rw-r--r--multimedia/sickchill/sickchill.conf6
-rw-r--r--multimedia/sickchill/sickchill.info10
-rw-r--r--multimedia/sickchill/slack-desc19
-rw-r--r--multimedia/simpleburn/README16
-rw-r--r--multimedia/simpleburn/simpleburn.SlackBuild89
-rw-r--r--multimedia/simpleburn/simpleburn.info10
-rw-r--r--multimedia/sinthgunt/sinthgunt.SlackBuild16
-rw-r--r--multimedia/sinthgunt/sinthgunt.info2
-rw-r--r--multimedia/smpeg/README9
-rw-r--r--multimedia/smpeg/smpeg.SlackBuild48
-rw-r--r--multimedia/smpeg/smpeg.info4
-rw-r--r--multimedia/smplayer/README5
-rw-r--r--multimedia/smplayer/smplayer.SlackBuild76
-rw-r--r--multimedia/smplayer/smplayer.info16
-rw-r--r--multimedia/smtube/README8
-rw-r--r--multimedia/smtube/slack-desc4
-rw-r--r--multimedia/smtube/smtube.SlackBuild39
-rw-r--r--multimedia/smtube/smtube.info8
-rw-r--r--multimedia/spek/README4
-rw-r--r--multimedia/spek/doinst.sh6
-rw-r--r--multimedia/spek/spek.SlackBuild22
-rw-r--r--multimedia/spek/spek.info2
-rw-r--r--multimedia/spot/README3
-rw-r--r--multimedia/spot/doinst.sh15
-rw-r--r--multimedia/spot/slack-desc19
-rw-r--r--multimedia/spot/spot.SlackBuild159
-rw-r--r--multimedia/spot/spot.info702
-rw-r--r--multimedia/spotify/doinst.sh7
-rw-r--r--multimedia/spotify/spotify.SlackBuild89
-rw-r--r--multimedia/spotify/spotify.info12
-rw-r--r--multimedia/srt-to-vtt-cl/README2
-rw-r--r--multimedia/srt-to-vtt-cl/slack-desc (renamed from multimedia/podcastparser/slack-desc)22
-rw-r--r--multimedia/srt-to-vtt-cl/srt-to-vtt-cl.SlackBuild (renamed from multimedia/farstream/farstream.SlackBuild)50
-rw-r--r--multimedia/srt-to-vtt-cl/srt-to-vtt-cl.info10
-rw-r--r--multimedia/stills2dv/stills2dv.SlackBuild22
-rw-r--r--multimedia/straw-viewer/README43
-rw-r--r--multimedia/straw-viewer/git2tarxz.sh71
-rw-r--r--multimedia/straw-viewer/straw-viewer.info10
-rw-r--r--multimedia/straw-viewer/straw-viewer.sqf46
-rw-r--r--multimedia/strawberry/slack-desc16
-rw-r--r--multimedia/strawberry/strawberry.SlackBuild18
-rw-r--r--multimedia/strawberry/strawberry.info8
-rw-r--r--multimedia/stream2chromecast/README8
-rw-r--r--multimedia/stream2chromecast/slack-desc19
-rw-r--r--multimedia/stream2chromecast/stream2chromecast.SlackBuild101
-rw-r--r--multimedia/stream2chromecast/stream2chromecast.info10
-rw-r--r--multimedia/stremio/README10
-rw-r--r--multimedia/stremio/doinst.sh14
-rw-r--r--multimedia/stremio/no-js-download.patch43
-rw-r--r--multimedia/stremio/slack-desc19
-rw-r--r--multimedia/stremio/stremio.SlackBuild111
-rw-r--r--multimedia/stremio/stremio.info20
-rw-r--r--multimedia/subtitlecomposer/README4
-rw-r--r--multimedia/subtitlecomposer/link_gobject.patch15
-rw-r--r--multimedia/subtitlecomposer/subtitlecomposer-build-fixes.patch258
-rw-r--r--multimedia/subtitlecomposer/subtitlecomposer-linkage.patch11
-rw-r--r--multimedia/subtitlecomposer/subtitlecomposer.SlackBuild91
-rw-r--r--multimedia/subtitlecomposer/subtitlecomposer.info10
-rw-r--r--multimedia/subtitleeditor/README3
-rw-r--r--multimedia/subtitleeditor/subtitleeditor.SlackBuild35
-rw-r--r--multimedia/subtitleeditor/subtitleeditor.info8
-rw-r--r--multimedia/subtitleripper/README13
-rw-r--r--multimedia/subtitleripper/subtitleripper.SlackBuild16
-rw-r--r--multimedia/svt-av1/README4
-rw-r--r--multimedia/svt-av1/changelog26
-rw-r--r--multimedia/svt-av1/slack-desc (renamed from multimedia/OpenPHT/slack-desc)22
-rw-r--r--multimedia/svt-av1/svt-av1.SlackBuild109
-rw-r--r--multimedia/svt-av1/svt-av1.info10
-rw-r--r--multimedia/svt-hevc/README6
-rw-r--r--multimedia/svt-hevc/slack-desc19
-rw-r--r--multimedia/svt-hevc/svt-hevc.SlackBuild120
-rw-r--r--multimedia/svt-hevc/svt-hevc.info10
-rw-r--r--multimedia/svt-vp9/README6
-rw-r--r--multimedia/svt-vp9/slack-desc19
-rw-r--r--multimedia/svt-vp9/svt-vp9.SlackBuild120
-rw-r--r--multimedia/svt-vp9/svt-vp9.info10
-rw-r--r--multimedia/tabu_audio_player/tabu_audio_player.SlackBuild16
-rw-r--r--multimedia/tabu_audio_player/tabu_audio_player.info2
-rw-r--r--multimedia/telepathy-farstream/telepathy-farstream.SlackBuild18
-rw-r--r--multimedia/telepathy-glib/telepathy-glib.SlackBuild18
-rw-r--r--multimedia/telepathy-glib/telepathy-glib.info2
-rw-r--r--multimedia/telepathy-qt/telepathy-qt.SlackBuild16
-rw-r--r--multimedia/telepathy-qt/telepathy-qt.info2
-rw-r--r--multimedia/tivodecode/tivodecode.SlackBuild22
-rw-r--r--multimedia/tomahawk/README23
-rw-r--r--multimedia/tomahawk/ee4656383a92a78299aff6f8637f174fff328e98.patch35
-rw-r--r--multimedia/tomahawk/tomahawk.info10
-rw-r--r--multimedia/totem/README15
-rw-r--r--multimedia/totem/doinst.sh15
-rw-r--r--multimedia/totem/slack-desc10
-rw-r--r--multimedia/totem/totem.SlackBuild86
-rw-r--r--multimedia/totem/totem.info14
-rw-r--r--multimedia/tovid/README7
-rw-r--r--multimedia/tovid/tovid.SlackBuild18
-rw-r--r--multimedia/tovid/tovid.info4
-rw-r--r--multimedia/tragtor/tragtor.SlackBuild16
-rw-r--r--multimedia/tragtor/tragtor.info2
-rw-r--r--multimedia/transcode/README18
-rw-r--r--multimedia/transcode/transcode-1.1.7-ffmpeg4.patch508
-rw-r--r--multimedia/transcode/transcode-1.1.7-gcc10.patch48
-rw-r--r--multimedia/transcode/transcode-1.1.7-glibc-2.32.patch47
-rw-r--r--multimedia/transcode/transcode-1.1.7-imagemagick7.patch794
-rw-r--r--multimedia/transcode/transcode.SlackBuild50
-rw-r--r--multimedia/transcode/transcode.info4
-rw-r--r--multimedia/tsduck/README28
-rw-r--r--multimedia/tsduck/slack-desc (renamed from multimedia/mythtv/slack-desc)22
-rw-r--r--multimedia/tsduck/tsduck.SlackBuild110
-rw-r--r--multimedia/tsduck/tsduck.info10
-rw-r--r--multimedia/tstools/README25
-rw-r--r--multimedia/tstools/tstools.SlackBuild22
-rw-r--r--multimedia/tvheadend/libhdhomerun.diff16
-rw-r--r--multimedia/tvheadend/tvheadend-4.2.8-fno-common.patch55
-rw-r--r--multimedia/tvheadend/tvheadend-4.2.8-gcc9.patch36
-rw-r--r--multimedia/tvheadend/tvheadend.SlackBuild51
-rw-r--r--multimedia/tvheadend/tvheadend.info12
-rw-r--r--multimedia/tvtime/0001-Fix-warning-implicit-declaration-of-function-minor-m.patch31
-rw-r--r--multimedia/tvtime/README10
-rw-r--r--multimedia/tvtime/tvtime.SlackBuild41
-rw-r--r--multimedia/tvtime/tvtime.info6
-rw-r--r--multimedia/uavs3d/README5
-rw-r--r--multimedia/uavs3d/changelog21
-rw-r--r--multimedia/uavs3d/fix-build-issue.patch7618
-rw-r--r--multimedia/uavs3d/fix-libdir-in-cmakelists.patch25
-rw-r--r--multimedia/uavs3d/slack-desc (renamed from multimedia/gtkpod/slack-desc)22
-rw-r--r--multimedia/uavs3d/uavs3d.SlackBuild116
-rw-r--r--multimedia/uavs3d/uavs3d.info10
-rw-r--r--multimedia/uavs3e/README3
-rw-r--r--multimedia/uavs3e/changelog26
-rw-r--r--multimedia/uavs3e/cmakelist.patch21
-rw-r--r--multimedia/uavs3e/slack-desc (renamed from multimedia/ffmpeg/slack-desc)22
-rw-r--r--multimedia/uavs3e/src_cmakelist.patch54
-rw-r--r--multimedia/uavs3e/uavs3e.SlackBuild120
-rw-r--r--multimedia/uavs3e/uavs3e.info10
-rw-r--r--multimedia/ucview/README13
-rw-r--r--multimedia/ucview/ucview.SlackBuild16
-rw-r--r--multimedia/vapoursynth-mvtools/README1
-rw-r--r--multimedia/vapoursynth-mvtools/slack-desc19
-rw-r--r--multimedia/vapoursynth-mvtools/vapoursynth-mvtools.SlackBuild108
-rw-r--r--multimedia/vapoursynth-mvtools/vapoursynth-mvtools.info10
-rw-r--r--multimedia/vapoursynth/650.patch560
-rw-r--r--multimedia/vapoursynth/README3
-rw-r--r--multimedia/vapoursynth/slack-desc (renamed from multimedia/mythplugins/slack-desc)22
-rw-r--r--multimedia/vapoursynth/vapoursynth.SlackBuild119
-rw-r--r--multimedia/vapoursynth/vapoursynth.info10
-rw-r--r--multimedia/vcdimager/README9
-rw-r--r--multimedia/vcdimager/doinst.sh6
-rw-r--r--multimedia/vcdimager/vcdimager.SlackBuild52
-rw-r--r--multimedia/vcdimager/vcdimager.info6
-rw-r--r--multimedia/vgmplay/vgmplay.SlackBuild18
-rw-r--r--multimedia/videocut/videocut.SlackBuild24
-rw-r--r--multimedia/videocut/videocut.info2
-rw-r--r--multimedia/videomass/README15
-rw-r--r--multimedia/videomass/doinst.sh11
-rw-r--r--multimedia/videomass/slack-desc (renamed from multimedia/gst-libav/slack-desc)22
-rw-r--r--multimedia/videomass/videomass.SlackBuild102
-rw-r--r--multimedia/videomass/videomass.info10
-rw-r--r--multimedia/vitunes-mplayer/README10
-rw-r--r--multimedia/vitunes-mplayer/vitunes-mplayer.SlackBuild28
-rw-r--r--multimedia/vitunes-mplayer/vitunes-mplayer.info2
-rw-r--r--multimedia/vkeybd/README16
-rw-r--r--multimedia/vkeybd/doinst.sh6
-rw-r--r--multimedia/vkeybd/vkeybd.SlackBuild40
-rw-r--r--multimedia/vkeybd/vkeybd.info4
-rw-r--r--multimedia/vlc/README41
-rw-r--r--multimedia/vlc/cache.patch (renamed from multimedia/vlc/patch_vlc_cache_gen.diff)12
-rw-r--r--multimedia/vlc/dvdnav.patch13
-rw-r--r--multimedia/vlc/dvdread.patch15
-rw-r--r--multimedia/vlc/patch-opencv4.diff24
-rw-r--r--multimedia/vlc/projectM.patch (renamed from multimedia/vlc/patch-projectM-fontpath.diff)6
-rw-r--r--multimedia/vlc/slack-desc2
-rw-r--r--multimedia/vlc/vlc.SlackBuild147
-rw-r--r--multimedia/vlc/vlc.info12
-rw-r--r--multimedia/vlsub/vlsub.SlackBuild16
-rw-r--r--multimedia/vlsub/vlsub.info2
-rw-r--r--multimedia/vo-amrwbenc/README4
-rw-r--r--multimedia/vo-amrwbenc/slack-desc (renamed from multimedia/nightingale/slack-desc)22
-rw-r--r--multimedia/vo-amrwbenc/vo-amrwbenc.SlackBuild (renamed from multimedia/gst-plugins-bad/gst-plugins-bad.SlackBuild)66
-rw-r--r--multimedia/vo-amrwbenc/vo-amrwbenc.info10
-rw-r--r--multimedia/vobcopy/vobcopy.SlackBuild16
-rw-r--r--multimedia/vobsub2srt/README18
-rw-r--r--multimedia/vobsub2srt/climits.diff11
-rw-r--r--multimedia/vobsub2srt/slack-desc2
-rw-r--r--multimedia/vobsub2srt/vobsub2srt.SlackBuild26
-rw-r--r--multimedia/vokoscreen/README2
-rw-r--r--multimedia/vokoscreen/doinst.sh3
-rw-r--r--multimedia/vokoscreen/vokoscreen.info10
-rw-r--r--multimedia/vokoscreenNG/0001-Add-better-integration-for-Linux.patch111
-rw-r--r--multimedia/vokoscreenNG/README13
-rw-r--r--multimedia/vokoscreenNG/doinst.sh (renamed from multimedia/simpleburn/doinst.sh)0
-rw-r--r--multimedia/vokoscreenNG/slack-desc19
-rw-r--r--multimedia/vokoscreenNG/vokoscreenNG.SlackBuild113
-rw-r--r--multimedia/vokoscreenNG/vokoscreenNG.info10
-rw-r--r--multimedia/vvdec/README9
-rw-r--r--multimedia/vvdec/slack-desc19
-rw-r--r--multimedia/vvdec/vvdec.SlackBuild108
-rw-r--r--multimedia/vvdec/vvdec.info10
-rw-r--r--multimedia/vvenc/README19
-rw-r--r--multimedia/vvenc/slack-desc19
-rw-r--r--multimedia/vvenc/vvenc.SlackBuild110
-rw-r--r--multimedia/vvenc/vvenc.info10
-rw-r--r--multimedia/w_scan/gcc-10.patch37
-rw-r--r--multimedia/w_scan/w_scan.SlackBuild24
-rw-r--r--multimedia/w_scan2/README19
-rw-r--r--multimedia/w_scan2/lcn.diff40
-rw-r--r--multimedia/w_scan2/slack-desc19
-rw-r--r--multimedia/w_scan2/w_scan2.SlackBuild (renamed from multimedia/gtkpod/gtkpod.SlackBuild)36
-rw-r--r--multimedia/w_scan2/w_scan2.info10
-rw-r--r--multimedia/w_scan_cpp/README11
-rw-r--r--multimedia/w_scan_cpp/slack-desc19
-rw-r--r--multimedia/w_scan_cpp/w_scan_cpp.SlackBuild124
-rw-r--r--multimedia/w_scan_cpp/w_scan_cpp.info16
-rw-r--r--multimedia/webvfx/README1
-rw-r--r--multimedia/webvfx/slack-desc19
-rw-r--r--multimedia/webvfx/webvfx.SlackBuild (renamed from multimedia/vokoscreen/vokoscreen.SlackBuild)39
-rw-r--r--multimedia/webvfx/webvfx.info10
-rw-r--r--multimedia/whistle/whistle.SlackBuild16
-rw-r--r--multimedia/whistle/whistle.info4
-rw-r--r--multimedia/winff/README27
-rw-r--r--multimedia/winff/changelog123
-rw-r--r--multimedia/winff/doinst.sh1
-rw-r--r--multimedia/winff/patches/unit1-pas.patch43
-rw-r--r--multimedia/winff/patches/unit2-pas.patch13
-rw-r--r--multimedia/winff/patches/unit3-lfm.patch58
-rw-r--r--multimedia/winff/patches/unit3-pas.patch77
-rw-r--r--multimedia/winff/patches/unit4-pas.patch13
-rw-r--r--multimedia/winff/patches/unit5-pas.patch13
-rw-r--r--multimedia/winff/patches/unit6-pas.patch13
-rw-r--r--multimedia/winff/patches/winff-1.patch17
-rw-r--r--multimedia/winff/patches/winff-en.patch37
-rw-r--r--multimedia/winff/patches/winff-lpi.patch32
-rw-r--r--multimedia/winff/patches/winff-lpr.patch12
-rw-r--r--multimedia/winff/patches/winff-po.patch31
-rw-r--r--multimedia/winff/patches/winff-pot.patch31
-rw-r--r--multimedia/winff/presets.xml.gzbin4179 -> 0 bytes
-rw-r--r--multimedia/winff/slack-desc12
-rw-r--r--multimedia/winff/winff.SlackBuild145
-rw-r--r--multimedia/winff/winff.desktop16
-rw-r--r--multimedia/winff/winff.info14
-rw-r--r--multimedia/wxcam/README10
-rw-r--r--multimedia/wxcam/wxcam.SlackBuild20
-rw-r--r--multimedia/wxcam/wxcam.info2
-rw-r--r--multimedia/x264/x264-mksrctarball.sh17
-rw-r--r--multimedia/x264/x264.SlackBuild52
-rw-r--r--multimedia/x264/x264.info8
-rw-r--r--multimedia/x265/x265.SlackBuild24
-rw-r--r--multimedia/x265/x265.info6
-rw-r--r--multimedia/xavs2/README4
-rw-r--r--multimedia/xavs2/slack-desc19
-rw-r--r--multimedia/xavs2/xavs2.SlackBuild118
-rw-r--r--multimedia/xavs2/xavs2.info10
-rw-r--r--multimedia/xawtv/xawtv.SlackBuild24
-rw-r--r--multimedia/xawtv/xawtv.info6
-rw-r--r--multimedia/xjadeo/README16
-rw-r--r--multimedia/xjadeo/xjadeo.SlackBuild21
-rw-r--r--multimedia/xjadeo/xjadeo.desktop2
-rw-r--r--multimedia/xjadeo/xjadeo.info8
-rw-r--r--multimedia/xmltv/README23
-rw-r--r--multimedia/xmltv/README.SBo6
-rw-r--r--multimedia/xmltv/xmltv.SlackBuild40
-rw-r--r--multimedia/xmltv/xmltv.info6
-rw-r--r--multimedia/xmms-crossfade/README64
-rw-r--r--multimedia/xmms-crossfade/xmms-crossfade.SlackBuild22
-rw-r--r--multimedia/xmms-crossfade/xmms-crossfade.info6
-rw-r--r--multimedia/xmms-cue/README2
-rw-r--r--multimedia/xmms-cue/slack-desc (renamed from multimedia/lircaile/slack-desc)22
-rw-r--r--multimedia/xmms-cue/xmms-cue.SlackBuild144
-rw-r--r--multimedia/xmms-cue/xmms-cue.info10
-rw-r--r--multimedia/xvid4conf/README7
-rw-r--r--multimedia/xvid4conf/xvid4conf.SlackBuild22
-rw-r--r--multimedia/xvidcore/xvidcore.SlackBuild53
-rw-r--r--multimedia/xvidcore/xvidcore.info8
-rw-r--r--multimedia/xvst/xvst.SlackBuild16
-rw-r--r--multimedia/xvst/xvst.info2
-rw-r--r--multimedia/yarock/README17
-rw-r--r--multimedia/yarock/yarock.SlackBuild20
-rw-r--r--multimedia/youtube-viewer/README51
-rw-r--r--multimedia/youtube-viewer/doinst.sh4
-rw-r--r--multimedia/youtube-viewer/list-moreutils.diff18
-rw-r--r--multimedia/youtube-viewer/slack-desc19
-rw-r--r--multimedia/youtube-viewer/youtube-viewer.SlackBuild167
-rw-r--r--multimedia/youtube-viewer/youtube-viewer.info10
-rw-r--r--multimedia/zvbi/README21
-rw-r--r--multimedia/zvbi/zvbi.SlackBuild27
-rw-r--r--multimedia/zvbi/zvbi.info4
1038 files changed, 45149 insertions, 11584 deletions
diff --git a/multimedia/AtomicParsley/AtomicParsley.SlackBuild b/multimedia/AtomicParsley/AtomicParsley.SlackBuild
index d627d278bd..2c80eb18a6 100644
--- a/multimedia/AtomicParsley/AtomicParsley.SlackBuild
+++ b/multimedia/AtomicParsley/AtomicParsley.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for AtomicParsley
# Copyright 2017 David Woodfall <dave@slackbuilds.org>
@@ -21,12 +21,16 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220331 bkw, BUILD=3: don't use "cp -a" when copying docs from $CWD.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=AtomicParsley
-SRCNAM=atomicparsley
-SRCDIR=wez-$SRCNAM-da2f6e4fc120
+SRCNAM=$( echo $PRGNAM | tr A-Z a-z )
VERSION=${VERSION:-0.9.6}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +40,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -60,17 +68,15 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf __MACOSX
-rm -rf $SRCDIR
-#unzip $CWD/$SRCNAM-$VERSION.zip
-tar xfv $CWD/$VERSION.tar.gz
-cd $SRCDIR
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
+cd $SRCNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
./autogen.sh
@@ -87,19 +93,21 @@ CXXFLAGS="$SLKCFLAGS" \
--build=$ARCH-slackware-linux
make
-make install DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+make install-strip DESTDIR=$PKG
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/tools
+# 20220331 bkw: note, no -a in this cp command, else I end up with files
+# owned by urchlay:users in the package.
+cp $CWD/Using_AtomicParsley.{rtf,txt} $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- COPYING CREDITS Changes.txt README.md $CWD/Using_AtomicParsley.rtf \
+ COPYING CREDITS Changes.txt README.md \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+install -D -m0755 tools/iTunMOVI-1.1.pl \
+ $PKG/usr/doc/$PRGNAM-$VERSION/tools/iTunMOVI-1.1.pl
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/AtomicParsley/AtomicParsley.info b/multimedia/AtomicParsley/AtomicParsley.info
index 3baf76ce79..a587c7babf 100644
--- a/multimedia/AtomicParsley/AtomicParsley.info
+++ b/multimedia/AtomicParsley/AtomicParsley.info
@@ -1,10 +1,10 @@
PRGNAM="AtomicParsley"
VERSION="0.9.6"
-HOMEPAGE="http://atomicparsley.sourceforge.net"
-DOWNLOAD="https://bitbucket.org/wez/atomicparsley/get/0.9.6.tar.gz"
-MD5SUM="1fa52dbc98fb74465cf680429f712d20"
+HOMEPAGE="https://github.com/wez/atomicparsley"
+DOWNLOAD="https://github.com/wez/atomicparsley/archive/0.9.6/atomicparsley-0.9.6.tar.gz"
+MD5SUM="c4fb177b448304a20dbbf138db60c92a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Dave Woodfall"
+MAINTAINER="D Woodfall"
EMAIL="dave@slackbuilds.org"
diff --git a/multimedia/AtomicParsley/README b/multimedia/AtomicParsley/README
index 640dcfea21..cffb8193c7 100644
--- a/multimedia/AtomicParsley/README
+++ b/multimedia/AtomicParsley/README
@@ -1,4 +1,2 @@
-AtomicParsley (mpeg4 tag tool)
-
-AtomicParsley is a lightweight command line program for reading,
-parsing and setting metadata into MPEG-4 files.
+AtomicParsley is a lightweight command line program for reading, parsing
+and setting metadata into MPEG-4 files.
diff --git a/multimedia/AtomicParsley/Using_AtomicParsley.txt b/multimedia/AtomicParsley/Using_AtomicParsley.txt
new file mode 100644
index 0000000000..4a53b596cb
--- /dev/null
+++ b/multimedia/AtomicParsley/Using_AtomicParsley.txt
@@ -0,0 +1,191 @@
+Welcome to AtomicParsley
+https://github.com/wez/atomicparsley
+(converted from the RTF using Ted. Contains long lines and tabs.)
+
+AtomicParsley is distributed under the GPL "AS IS", without any warranty; without even the implied warranty of merchantability or fitness for either an expressed or implied particular purpose.
+
+AtomicParsley is a command line program for reading & writing iTune-style metadata in mpeg4 files (m4a, m4b, m4p, m4v & mp4) whether iTMS drm protected or not. AtomicParsley can set most user accessible tags, and some that iTunes doesn't let you change. Of particular note are the Mac OS X only image modification preferences that allow artwork to be modified prior to embedding. Artwork can be converted to jpeg, file size limited, reduced & squared through setting command line preferences.
+
+Currently, AtomicParsley lets you set these type of iTunes-style tags in MPEG-4 files:
+
+artist lyrics category TVEpisodeNum
+title album artist artwork TVSeasonNum
+album composer compilation podcast flag
+genre copyright advisory podcast feed url
+tracknumber grouping stik podcast episode GUID url
+disknumber bpm/tempo TVNetwork purchase date
+comment description TVShowName encoder tool
+year keyword TVEpisode play gapless
+
+3GPP & 3GPP2 files (.3gp & .3g2) have a different set of metadata tags available called assets:
+
+title author performer genre
+album * year copyright description
+rating keyword classification location
+
+* album asset is only available on 3gp6 and later branded files.
+
+All mpeg-4 based files support 'uuid' user-defined extensions atoms & ISO copyright notices:
+
+tagtime url information
+ANY user-defined atom with text ANY user-defined atom with embedded file
+ISO-copyright [at movie and/or track level(s)]
+______________________________________________________________________________________________
+Working with AtomicParsley
+
+The format for working with files is always the same:
+
+/path/to/AtomicParsley /path/to/your.m4a [options]
+
+Example to set a picture file into your mpeg4 file (jpeg or png only):
+AtomicParsley /path/your.m4a --artwork /path/to/your.jpg
+
+Exampe of setting multiple tags into your mpeg4 file:
+AtomicParsley /path/your.m4a --artist "I am an Artist" --title "This is the Title" --album "The iAlbum" --genre "Progressive Zydeco" --tracknum 1/2 --disknum 1/2 --year 1985 --comment 'Superlative (I made this TODAY!!!)' --lyrics 'Go, Go, GO! (repeat)' --composer "I Claudius" --grouping "Ennui" --copyright "LowDown Recordings" --bpm 20 --compilation true --advisory clean --artwork /path/to/your.jpg --artwork /path/to/your2.jpg
+
+Example of using the artwork preferences to limit the embedded artwork size & dimensions:
+export PIC_OPTIONS="MaxDimensions=400:MaxKBytes=50:AllPixJPEG=true:SquareUp:removeTempPix"
+AtomicParsley /path/your.m4a --artwork /path/to/your.jpg
+
+Example to change your own mpeg4 file into an iTunes TV show:
+AtomicParsley /path/your.mp4 --genre "TV Shows" --stik "TV Show" --TVNetwork FOOnn --TVShowName "Some Showname" --TVEpisode "1120" --TVEpisodeNum 20 --TVSeason 11
+
+Example to change your own mpeg4 file into a Video Podcast (FrontRow requires the purl atom, iTunes doesn't):
+AtomicParsley /path/your.mp4 --podcastFlag true --stik "Movie" --podcastURL "http://www.fictionalURL.com"
+
+Example of extracting embedded artwork in your mpeg4 file to the same folder:
+AtomicParsley /path/your.m4a --extractPix
+
+To see the atom tree of your mpeg4 file:
+AtomicParsley /path/your.m4a -T
+
+To see the metadata tags set into your mpeg4 file:
+AtomicParsley /path/your.m4a -t
+
+Note Mac users: iTunes looks at type/creator when opening an mpeg4 file. As of AtomicParsley 0.8.1, you no longer need to change extensions to/from anything - this is automatically determined through the information in the file itself and is set accordingly. A podcast mpeg-4 file may cause some concern at first because it shows up as being a protected file with a lock on the icon. This is nothing to be concerned about; iTunes uses the same icon/file info for 'M4B ' and 'M4P ' types - that's it. They aren't drm'ed in any way, just a sharing of icon/Finder info.
+Note2: iTMS purchased media often has ©day set to "2005-09-06T07:00:00Z" or something similar. This is normal and is called Coordinated Universal Time and is denoted by the Z at the end. iTunes only displays the year, but in fact there is an entire date that is there.
+
+Writing out is non-destructive - the original file is unaltered. There is a command-line option to over write the source file: use it with caution or on duplicates. Starting with version 0.9, AtomicParsley can used available padding to rapidly update tags. This option is only available with the --overWrite option.
+
+--------------
+Erasing atoms with AtomicParsley
+
+To delete metadata "":
+AtomicParsley /path/your.m4a --artist "" --title ""
+
+To delete all artwork (on the covr atom):
+AtomicParsley /path/your.m4a --artwork REMOVE_ALL
+
+To delete every piece of metadata (in the "moov.udta.meta.ilst" hierarchy); drm files will still play as normally:
+AtomicParsley /path/your.m4a --metaEnema
+
+--------------
+Setting 3gp assets with AtomicParsley
+
+3gp metadata assets are more complicated than iTunes-style metadata. Assets can be in either utf8 or utf16, and are for a specific language. Multiple like-named tags differing in the language are supported allowing for up to around 480 tags per asset. See the AtomicParsley --3gp-help page for more. 3gp assets are only available on 3gp files - setting iTunes-style metadata is not allowed.
+
+3gp assets have more options than iTunes tags - most are hardcoded with defaults. Defaults are as follows:
+
+Default encoding: utf8 (utf16 also available)
+Default language: 'eng' (about 480 other languages supported; none are currently checked)
+Default Rating: entity = 'NONE' (4spaces); criteria = 'NONE' (4 spaces)
+Default Classification: entity = 'NONE' (4 spaces); index = 0
+Default Location: Longitude: = -73.98; Latitude = 40.77; Altitude = 4.3; Role = shooting location; Astronomical Body = Earth; Additional notes = 'none' [Central Park] - altitude is measured in meters; negative values are appended with a capital letter (S for southern latitudes, W for western longitudes, B for below sea level.)
+
+Setting a title asset for the spanish language in utf16:
+AtomicParsley /path/your.3g2 --3gp-title "The Rain In Spain..." lang=spa UTF16
+
+Setting a album asset (with tracknumber) for the sve language in utf8:
+AtomicParsley /path/your.3g2 --3gp-album "Bjorn Diddles His Banjo of Death" track=2 lang=sve
+
+Setting a rating asset for the japanese language in utf16:
+AtomicParsley /path/your.3g2 --3gp-rating "A superlative 4-on-the-floor house anthem." entity=MOMA criteria=PU18 lang=jpn UTF16
+
+Setting a location asset for the english language in utf16:
+AtomicParsley /path/your.3g2 --3gp-location "Bethesda Terrace" latitude=40.77 longitude=73.98W altitude=4.3B role="real" body=Earth notes="Underground in Central Park" UTF16
+
+Setting a keyword asset for the french language in utf8:
+AtomicParsley /path/your.3gp --3gp-keyword "keywords=France,Paris,Basilique du Sacré-Cœur, Sewers, stinky cheeses" lang=fra
+
+--------------
+Setting copyright notices at movie and/or track level
+
+The only defined piece of metadata designed for descriptive annotations of the presentation/track is the copyright notice. If your file contains 4 tracks, there are 5 places to set copyright notices, max — each of the tracks + movie level. There may be multiple notices, differing by language & may be present at any combination of movie and/or track level in either utf8 or utf16. Defaults are lang=eng & utf8.
+
+Please note that at movie level, this notice is identical the the 3gp copyright asset, and if present for the same langauges this will overwrite the exising asset.
+
+Examples:
+AtomicParsley /path/your.m4a --ISO-copyright "© 2006, Lalalandia Productions" movie UTF16
+AtomicParsley /path/your.m4a --ISO-copyright "© 2006, Produções Da Estrada" track lang=por
+AtomicParsley /path/your.m4a --ISO-copyright "©2006. USA" track=1 --ISO-copyright "©2006. Ελλάδα" track=2 lang=gre --ISO-copyright "©2006. ਬਣਾਉਟੀ" track=5 lang=pun --ISO-copyright "Callaloo Prductions, ©2006" movie lang=car
+
+--------------
+Custom uuid atoms with AtomicParsley
+
+According the the specifications for the mpeg-4 file format, any atom not listed is reserved & is unavailable for use. However, the specification & the mpeg-4 registration authority www.mp4ra.org allow for user defined extension via a mechanism called the 'uuid' atom. This type of atom actually has a 'uuid' name, but following that is 16 bytes (the actual UUID representation itself).
+
+Because anyone or any program can implement UUID atoms, a special version of the UUID form is used - and when read back, special checks are in place to determine if any UUIDs found were created by AtomicParsley. In this way, UUIDs created by 3rd parties are ignored for reading, listings & extractions. This is all handled transparently via a simple mechanism: --meta-uuid ATOM text "Some Text"
+
+where ATOM can be any 4 letter atom name you choose - carrying any text information you choose. Support is also present for directly embedding a file via a similar mechanism: --meta-uuid ATOM file /path/to/target/file.ext
+
+Create your own atoms directly:
+AtomicParsley /path/your.m4a --meta-uuid "YZAB" text "Some string value to set"
+AtomicParsley /path/your.m4a --meta-uuid "®USP" text "6125480"
+AtomicParsley /path/your.m4a --meta-uuid "©212" text "CBGB OMFUG last set"
+AtomicParsley /path/your.m4a --meta-uuid "docu" file ~/Desktop/taxes.zip
+AtomicParsley /path/your.m4a --meta-uuid "inst" file /Files/archive.dmg description="Installer"
+
+Deleting a custom uuid atom:
+AtomicParsley /path/your.m4a --meta-uuid "©212" text ""
+AtomicParsley /path/your.m4a --meta-uuid "docu" file ""
+
+Set the tagging time (the moment the tag was written) on a uuid=tdtg atom:
+AtomicParsley /path/your.m4a --tagtime
+
+Set a url on a uuid=©url atom:
+AtomicParsley /path/your.m4a --url "http://www.bumperdumper.com"
+
+Manually removing uuid atoms:
+AP /path/your.m4a --manualAtomRemove "moov.trak[1].uuid=55534d54-21d2-4fce-bb88-695cfac9c740"
+AP /path/your.m4a --manualAtomRemove "moov.udta.meta.uuid=1fed6656-d911-5385-9cb2-cb2c100f06e7"
+
+Note: any program can create a uuid atom - and are listed differently in an atom tree based on origin. Non-AP created atoms are listed slightly differently than AP-created uuid atoms:
+
+non-AtomicParsley created uuid (from a Sony PSP file):
+Atom uuid=55534d54-21d2-4fce-bb88-695cfac9c740 @ ...
+
+uuid created by AtomicParsley:
+
+Atom uuid=971451ee-0928-59f2-b81f-b1372b62565d(APuuid=ATOM) @ ...
+
+Here you can see that after the hex-a-decimal representation of the uuid, AP has discovered an AtomicParsley-set uuid atom, and lists its name after APuuid).
+
+--------------
+Compiling AtomicParsley
+
+A fresh svn checkout will always be the most recent version available. AtomicParsley was developed on Mac OS X 10.4x, but should be able to compile on older versions. Only gcc4 was used to compile on Mac OS X.
+
+cd AtomicParsley && ./build
+
+Releases of AtomicParsley are also available built using:
+
+• Debian 'Sarge' 31r0a-i386 with gcc/g++4.02, libc6_2.3.5-8 & libstdc++6_4.0.2-2
+• Microsoft Windows XP SP2 with VisualC++ 6.0
+
+--------------
+AtomicParsley & new atoms, bugs, etc....
+
+If you should come across an atom (in the moov.udta.meta.ilst hierarchy) that AtomicParsley doesn't handle, please let me know about it - I would like to be able to support it. Note: AtomicParsley will never support iTunes-style "----" atoms. To facilitate implementation, a sample of the new atom would be needed as it could come in a few different types - or even an entirely new type.
+
+Should you find a bug or a suspect behavior, please post to the bugs section or forum at sourceforge. A sample of the file that demonstrates the behavior would be best. Please also provide the name of the encoding program used to produce the file. Please refrain from using email as a primary means of support - it isn't. Fun though it is to answer some questions repeatedly, imagine the fun a non-response would be.
+
+Please remember: as long as it works on Mac OS X - to me it works *perfectly* good enough. If you find a bug on another platform (probably Windows, because Linux will have most of the same encoders as on Mac OS X) or with any form of commercial encoder, a sample would probably go a long way to making AtomicParsley work on your files.
+
+--------------
+Things to watch out for & avoid with AtomicParsley
+
+• iTunes text tags (except for lyics) are restricted to 255 characters
+
+• Many of the iTMS (both drm and podcast) files have **ID atoms. What they stand for can only be guessed, but their values have meaning only to Apple - as such they are displayed in raw hex. Since all metadata can be stripped (including these **ID atoms), and a drm file still plays properly, these tags can be considered superfluous metadata.
+
+• iTunes 7 incorporates a feature called gapless playback. For unknown reason, iTunes incorporates NULL space at the end of mpeg4 files. This may (or may not) be part of the mechanism iTunes uses as part of its gapless playback. Normally, this NULL space is replicated when AP writes out. It is not if DEFAULT_PAD=0 is set.
diff --git a/multimedia/AtomicParsley/slack-desc b/multimedia/AtomicParsley/slack-desc
index aa8d90b5b9..8e6d241578 100644
--- a/multimedia/AtomicParsley/slack-desc
+++ b/multimedia/AtomicParsley/slack-desc
@@ -11,7 +11,7 @@ AtomicParsley:
AtomicParsley: AtomicParsley is a lightweight command line program for reading,
AtomicParsley: parsing and setting metadata into MPEG-4 files.
AtomicParsley:
-AtomicParsley: http://atomicparsley.sourceforge.net
+AtomicParsley: https://github.com/wez/atomicparsley
AtomicParsley:
AtomicParsley:
AtomicParsley:
diff --git a/multimedia/AviSynthPlus/AviSynthPlus.SlackBuild b/multimedia/AviSynthPlus/AviSynthPlus.SlackBuild
new file mode 100644
index 0000000000..08f6025268
--- /dev/null
+++ b/multimedia/AviSynthPlus/AviSynthPlus.SlackBuild
@@ -0,0 +1,120 @@
+#!/bin/bash
+
+# Slackware build script for AviSynthPlus
+
+# Copyright 2022-2024 Vijay Marcel
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=AviSynthPlus
+VERSION=${VERSION:-3.7.3}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-march=i586 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-march=i686 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-march=x86-64 -mtune=generic -pipe -O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -pv $TMP/$PRGNAM-$VERSION/distrib/docs/english/source/_static
+
+cmake -B build -S $TMP/$PRGNAM-$VERSION \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib${LIBDIRSUFFIX} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DENABLE_PLUGINS=ON \
+ -DBUILD_SHARED_LIBS=ON \
+ -DINSTALL_ONLY_HEADER=OFF \
+ -DENABLE_CUDA=OFF
+
+make -C build
+make -C build install DESTDIR=$PKG
+
+make -C $TMP/$PRGNAM-$VERSION/distrib/docs/english html
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded --remove-section=.comment --remove-section=.note 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+cd $TMP/$PRGNAM-$VERSION/distrib/Examples; find . -type f -exec install -Dm644 "{}" "$PKG/usr/share/$PRGNAM-$VERSION/Examples/{}" \;
+
+cd ../..
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+cd $TMP/$PRGNAM-$VERSION/distrib/docs/english/build/html; for i in $(find . -type f); do install -Dm644 "${i}" "$PKG/usr/doc/$PRGNAM-$VERSION/${i}"; done
+
+cd ../../../../..
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/AviSynthPlus/AviSynthPlus.info b/multimedia/AviSynthPlus/AviSynthPlus.info
new file mode 100644
index 0000000000..147630d0db
--- /dev/null
+++ b/multimedia/AviSynthPlus/AviSynthPlus.info
@@ -0,0 +1,10 @@
+PRGNAM="AviSynthPlus"
+VERSION="3.7.3"
+HOMEPAGE="https://avs-plus.net"
+DOWNLOAD="https://github.com/AviSynth/AviSynthPlus/archive/v3.7.3/AviSynthPlus-3.7.3.tar.gz"
+MD5SUM="e18f562c225aa04792f318a2d3039418"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="DevIL Sphinx"
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/AviSynthPlus/README b/multimedia/AviSynthPlus/README
new file mode 100644
index 0000000000..850a12ed33
--- /dev/null
+++ b/multimedia/AviSynthPlus/README
@@ -0,0 +1,5 @@
+avisynthplus is an improved version of avisynth
+frameserver with improved features and developer
+friendliness.
+
+This is an optional dependency of FFmpeg
diff --git a/multimedia/straw-viewer/slack-desc b/multimedia/AviSynthPlus/slack-desc
index aea1cf0983..dc642be285 100644
--- a/multimedia/straw-viewer/slack-desc
+++ b/multimedia/AviSynthPlus/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-straw-viewer: straw-viewer (search and stream videos from youtube)
-straw-viewer:
-straw-viewer: straw-viewer is a lightweight application for searching and streaming
-straw-viewer: videos from YouTube, using the API of invidio.us. The project is in
-straw-viewer: its early development stages and some features are not implemented
-straw-viewer: yet.
-straw-viewer:
-straw-viewer:
-straw-viewer:
-straw-viewer:
-straw-viewer:
+AviSynthPlus: AviSynthPlus (AviSynth With Improvements)
+AviSynthPlus:
+AviSynthPlus: AviSynthPlus is an improved version of avisynth
+AviSynthPlus: frameserver with improved features and developer
+AviSynthPlus: friendliness.
+AviSynthPlus:
+AviSynthPlus:
+AviSynthPlus: Homepage:https://avs-plus.net
+AviSynthPlus:
+AviSynthPlus:
+AviSynthPlus:
diff --git a/multimedia/DivFix++/DivFix++.SlackBuild b/multimedia/DivFix++/DivFix++.SlackBuild
index 0601d4c62b..dd065ea558 100644
--- a/multimedia/DivFix++/DivFix++.SlackBuild
+++ b/multimedia/DivFix++/DivFix++.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for DivFix++
@@ -22,26 +22,41 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220331 bkw: Modified by SlackBuilds.org, BUILD=3:
+# - install docs to correct dir, usr/doc/$PRGNAM-$VERSION.
+# - i486 => i586.
+# - do not use wildcards for tarball name.
+# - fix grammar in README and slack-desc.
+# - make .desktop file validate.
+# - use "set -e".
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=DivFix++
VERSION=${VERSION:-0.34}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -54,36 +69,45 @@ else
LIBDIRSUFFIX=""
fi
+set -e
+
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
-cd $TMP || exit 1
+cd $TMP
rm -rf $PRGNAM
-tar xvf $CWD/${PRGNAM}_v$VERSION-src.tar.?z* || exit 1
+tar xvf $CWD/${PRGNAM}_v$VERSION-src.tar.bz2 || \
+ tar xvf $CWD/DivFix%2B%2B_v$VERSION-src.tar.bz2
cd ${PRGNAM}_v$VERSION || exit 1
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
+
+# 20220331 bkw: fix warnings and errors from desktop-file-validate. also
+# use absolute path to icon, since it's not in /usr/share/icons/.
+sed -i \
+ -e '/Version/s,=v,=,' \
+ -e '/^Icon/s,=,=/usr/share/pixmaps/,' \
+ -e '/^Categories/s,Application;,,' \
+ -e '/^Encoding/d' \
+ resources/DivFix++.desktop
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
- make || exit 1
-make install DESTDIR=$PKG || exit 1
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+ make
+make install DESTDIR=$PKG
+strip $PKG/usr/bin/$PRGNAM
cd $TMP/${PRGNAM}_v$VERSION/docs
-mkdir -p $PKG/usr/doc/${PRGNAM}_v$VERSION
-cp -a Change.log GPL.txt ReadMe.txt \
- $PKG/usr/doc/${PRGNAM}_v$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/${PRGNAM}_v$VERSION/$PRGNAM.SlackBuild
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a Change.log GPL.txt ReadMe.txt $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/DivFix++/README b/multimedia/DivFix++/README
index f52b1e4430..4b9fdc570f 100644
--- a/multimedia/DivFix++/README
+++ b/multimedia/DivFix++/README
@@ -1,8 +1,8 @@
-This program repairs broken AVI file streams by rebuilding index
-part of file. This is very useful when trying to preview movies
-which has no index part, like some files are currently downloading
-from ed2k (eMule) or bittorent networks. DivFix++ specialy designed
-for preview video download files from P2P networks.
+This program repairs broken AVI file streams by rebuilding the index
+part of the file. This is very useful when trying to preview movies
+which have no index part, like files that are partially downloaded
+from ed2k (eMule) or bittorent networks. DivFix++ is specially
+designed for previewing video download files from P2P networks before
+they have finished downloading.
-Note that wxGTK3 could be used as a dependency in alternative
-to wxPython.
+Note that wxGTK3 could be used as a dependency instead of wxPython.
diff --git a/multimedia/DivFix++/slack-desc b/multimedia/DivFix++/slack-desc
index 08f14859ae..3878d32c9e 100644
--- a/multimedia/DivFix++/slack-desc
+++ b/multimedia/DivFix++/slack-desc
@@ -8,12 +8,12 @@
|-----handy-ruler------------------------------------------------------|
DivFix++: DivFix++ (CLI "DivFix" clone)
DivFix++:
-DivFix++: This program repairs broken AVI file streams by rebuilding index
-DivFix++: part of file. This is very useful when trying to preview movies
-DivFix++: which has no index part, like some files are currently downloading
-DivFix++: from ed2k (eMule) or bittorent networks. DivFix++ specialy designed
-DivFix++: for preview video download files from P2P networks.
+DivFix++: This program repairs broken AVI file streams by rebuilding the index
+DivFix++: part of the file. This is very useful when trying to preview movies
+DivFix++: which have no index part, like files that are partially downloaded
+DivFix++: from ed2k (eMule) or bittorent networks. DivFix++ is specially
+DivFix++: desigmed for previewing video download files from P2P networks before
+DivFix++: they have finished downloading.
DivFix++:
DivFix++: Homepage: http://divfixpp.sourceforge.net/
DivFix++:
-DivFix++:
diff --git a/multimedia/ExMplayer/ExMplayer.SlackBuild b/multimedia/ExMplayer/ExMplayer.SlackBuild
deleted file mode 100644
index dbecb0ca76..0000000000
--- a/multimedia/ExMplayer/ExMplayer.SlackBuild
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/bin/sh
-#
-# Slackware build script for ExMPlayer.
-#
-# Copyright 2015-2020 Edinaldo P. Silva, Rio de Janeiro, Brazil.
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
-
-PRGNAM=ExMplayer
-VERSION=${VERSION:-5.0.1}
-BUILD=${BUILD:-2}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-sed -i 's|this->setWindowFlags(!Qt::WindowStaysOnTopHint);|this->setWindowFlags(0);|' src/playerwindow.cpp
-
-make
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-install -Dm755 src/exmplayer $PKG/usr/bin/exmplayer
-
-install -dm755 $PKG/usr/share/{applications,pixmaps}
-install -m644 exmplayer.desktop exmplayer_enqueue.desktop $PKG/usr/share/applications
-install -Dm644 debian/exmplayer.png $PKG/usr/share/pixmaps/exmplayer.png
-
-install -dm755 $PKG/etc/exmplayer
-install -m644 linux_build/{sc_default.xml,fmts} $PKG/etc/exmplayer
-
-# to receive installed ffmpeg link (instead of a internal copy):
-install -dm755 $PKG/usr/share/exmplayer
-ln -s /usr/bin/ffmpeg $PKG/usr/share/exmplayer/ffmpeg
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp debian/{changelog,copyright} README.md Release_notes.txt $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/ExMplayer/ExMplayer.info b/multimedia/ExMplayer/ExMplayer.info
deleted file mode 100644
index d3a7afc156..0000000000
--- a/multimedia/ExMplayer/ExMplayer.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="ExMplayer"
-VERSION="5.0.1"
-HOMEPAGE="http://exmplayer.sourceforge.net/index.html"
-DOWNLOAD="https://github.com/rupeshs/ExMplayer/archive/v5.0.1/ExMplayer-5.0.1.tar.gz"
-MD5SUM="60a32c7bd520fdfa9c187b2c6c66e3cc"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="ffmpeg"
-MAINTAINER="orphaned - no maintainer"
-EMAIL="nobody@nowhere"
diff --git a/multimedia/ExMplayer/README b/multimedia/ExMplayer/README
deleted file mode 100644
index 989077fce4..0000000000
--- a/multimedia/ExMplayer/README
+++ /dev/null
@@ -1,42 +0,0 @@
-ExMplayer (MPlayer GUI front-end with 3D/2D video playback support)
-
-ExMplayer is a free GUI front-end for award-winning MPlayer with 3D/2D
-video playback support, tools like audio converter, media cutter and
-audio extractor. It can play audio, video, dvd files (.vob), vcd files
-(.mpg,.dat) etc and supports network streaming.
-
-Plays hundreds of different video and audio formats, including MPEG-1,
--2 and -4 (DivX), H.264,H265 /HEVC, VP9, Ogg Vorbis and AAC. Supports
-subtitles, subtitle decoding is done using the ASS library. So it can
-play any media formats without any external codecs.
-
-ExMplayer also supports 3D video playback, wide variety of 3D formats
-supported. You can easily watch low volume media files with volume
-booster with volume boost up to 5000%.Media cutter can be used to cut
-media files without quality loss. Audio extractor can be used to
-extract audio from video files.Audio converter supports 11 different
-audio formats.
-
-Download video/audio from YouTube, facebook, dailymotion, metacafe
-and more sites.
-
-Features:
-
- * Video downloader
- * Subtitle Search (Opensubtitles.org)
- * 3D video playback support
- * Volume booster
- * Seekview
- * Audio extractor
- * Audio converter
- * Media cutter
- * Movie Animator
- * 10 band audio equalizer
- * video equalizer
- * Winamp dsp plugins support
- * 8 Audio effect filters
- * 17 Video effect filters
- * Configurable keyboard shortcuts and mouse
- * Facebook sharing( Listening to... Watching....)
-
-Optional dependency: youtube-dl
diff --git a/multimedia/ExMplayer/slack-desc b/multimedia/ExMplayer/slack-desc
deleted file mode 100644
index 534334ce73..0000000000
--- a/multimedia/ExMplayer/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-ExMplayer: ExMplayer (MPlayer GUI front-end with 3D/2D video playback support)
-ExMplayer:
-ExMplayer: ExMplayer (Extended MPlayer) is a GUI front-end for MPlayer with flow
-ExMplayer: view and tool like media cutter. It can play audio, video, dvd files
-ExMplayer: (.vob), vcd, files(.mpg,.dat) etc and supports network streaming. It
-ExMplayer: supports subtitles, subtitle decoding is done by using ass library.
-ExMplayer: It can play any media formats without any external codecs.
-ExMplayer:
-ExMplayer: ExMplayer Play any media files, convert, extract, animate, and more.
-ExMplayer:
-ExMplayer: Home page: http://exmplayer.sourceforge.net/index.html
diff --git a/multimedia/FFaudioConverter/FFaudioConverter.SlackBuild b/multimedia/FFaudioConverter/FFaudioConverter.SlackBuild
new file mode 100644
index 0000000000..e7c324b3d8
--- /dev/null
+++ b/multimedia/FFaudioConverter/FFaudioConverter.SlackBuild
@@ -0,0 +1,96 @@
+#!/bin/bash
+#
+# Slackware build script for FFaudioConverter.
+#
+# Copyright 2023-2024 Edinaldo P. Silva, Rio de Janeiro, Brazil.
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=FFaudioConverter
+VERSION=${VERSION:-0.32.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+
+mkdir -p build
+cd build/
+
+qmake-qt5 PREFIX=$PKG/usr ../FFaudioConverter.pro -spec linux-g++ CONFIG+=release
+make
+strip -s ffaudioconverter
+make DESTDIR=$PKG/usr install
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+install -m0644 ../{LICENSE,README.md} $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/FFaudioConverter/FFaudioConverter.info b/multimedia/FFaudioConverter/FFaudioConverter.info
new file mode 100644
index 0000000000..8aafaaf5aa
--- /dev/null
+++ b/multimedia/FFaudioConverter/FFaudioConverter.info
@@ -0,0 +1,10 @@
+PRGNAM="FFaudioConverter"
+VERSION="0.32.0"
+HOMEPAGE="https://github.com/Bleuzen/FFaudioConverter/"
+DOWNLOAD="https://github.com/Bleuzen/FFaudioConverter/archive/v0.32.0/FFaudioConverter-0.32.0.tar.gz"
+MD5SUM="a02068b13e5016327d9bb561b35fef36"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Edinaldo P. Silva"
+EMAIL="edps.mundognu@gmail.com"
diff --git a/multimedia/FFaudioConverter/README b/multimedia/FFaudioConverter/README
new file mode 100644
index 0000000000..0c75eb7433
--- /dev/null
+++ b/multimedia/FFaudioConverter/README
@@ -0,0 +1,21 @@
+FFaudioConverter (Graphical audio converter)
+
+is a GUI for converting music or videos to audio files with FFmpeg.
+
+Features:
+ * DnD support
+ * Multithreading (use the full power of your cpu)
+ * Convert many files or whole directories very fast
+ * Audio filters possible (bass boost your music or do fade-ins/outs...)
+ * Change of samplerate possible
+ * High quality resampling with SoX possible
+ * Quick mode for copying files in same format and skip already
+ converted files
+
+Currently supported output formats are:
+ * mp3
+ * aac
+ * ogg
+ * opus
+ * flac
+ * wav
diff --git a/multimedia/ExMplayer/doinst.sh b/multimedia/FFaudioConverter/doinst.sh
index aea0f894eb..aea0f894eb 100644
--- a/multimedia/ExMplayer/doinst.sh
+++ b/multimedia/FFaudioConverter/doinst.sh
diff --git a/multimedia/subtitlecomposer/slack-desc b/multimedia/FFaudioConverter/slack-desc
index a18a5db3e7..04132c8d96 100644
--- a/multimedia/subtitlecomposer/slack-desc
+++ b/multimedia/FFaudioConverter/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-subtitlecomposer: subtitlecomposer (A text-based subtitles editor)
-subtitlecomposer:
-subtitlecomposer: subtitlecomposer is a text-based subtitles editor that supports basic
-subtitlecomposer: operations as well as more advanced ones, aiming to become an improved
-subtitlecomposer: version of Subtitle Workshop for every platform supported by KDE.
-subtitlecomposer:
-subtitlecomposer:
-subtitlecomposer:
-subtitlecomposer:
-subtitlecomposer:
-subtitlecomposer:
+FFaudioConverter: FFaudioConverter (Graphical audio converter)
+FFaudioConverter:
+FFaudioConverter: is a GUI for converting music or videos to audio files with FFmpeg.
+FFaudioConverter:
+FFaudioConverter:
+FFaudioConverter: Home page: https://github.com/Bleuzen/FFaudioConverter/
+FFaudioConverter:
+FFaudioConverter:
+FFaudioConverter:
+FFaudioConverter:
+FFaudioConverter:
diff --git a/multimedia/Gem/Gem.SlackBuild b/multimedia/Gem/Gem.SlackBuild
index c1db894296..16a4e081f6 100644
--- a/multimedia/Gem/Gem.SlackBuild
+++ b/multimedia/Gem/Gem.SlackBuild
@@ -1,12 +1,19 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <Gem>
#
# Michales (clavisound) Michaloudes korgie@gmail.com <2017>
+# 20220214 bkw: Modified by SlackBuilds.org:
+# - updated for v0.94, as 0.93.3 won't build on Slackware 15.0.
+# - moved pkg-config stuff to proper place (/usr/lib64 on x86_64).
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=Gem
-VERSION=${VERSION:-0.93.3}
+VERSION=${VERSION:-0.94}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -16,7 +23,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -37,18 +48,21 @@ fi
set -e
+ZIPFILE="$CWD/Gem[v0.94](Sources).dek"
+[ -e "$ZIPFILE" ] || ZIPFILE="$CWD/Gem%5Bv0.94%5D%28Sources%29.dek"
+
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM
+unzip $ZIPFILE
+cd $PRGNAM
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
# I think useless
# patch externals/Gem/configure.ac < $CWD/change_gem_configure_file.patch
@@ -56,8 +70,10 @@ find -L . \
# Cannot manage to compile with v4l2
# sed -i "s|linux/videodev\.h|libv4l1-videodev.h|" configure || exit 1
+./autogen.sh
+
CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS"
+CXXFLAGS="$SLKCFLAGS -std=c++11 -fpermissive" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
@@ -77,10 +93,12 @@ make
# make install DESTDIR=$PKG/usr/lib${LIBDIRSUFFIX}/pd/extra
# will go to $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM
-make install DESTDIR=$PKG
+make install-strip DESTDIR=$PKG
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+if [ -n "$LIBDIRSUFFIX" ] ; then
+ mv $PKG/usr/lib/pkgconfig $PKG/usr/lib$LIBDIRSUFFIX
+fi
+rmdir $PKG/usr/lib 2>/dev/null || true # does nothing on 32-bit.
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
@@ -99,5 +117,5 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/Gem/Gem.info b/multimedia/Gem/Gem.info
index 3dca8f22a4..4113217a69 100644
--- a/multimedia/Gem/Gem.info
+++ b/multimedia/Gem/Gem.info
@@ -1,10 +1,10 @@
PRGNAM="Gem"
-VERSION="0.93.3"
+VERSION="0.94"
HOMEPAGE="http://gem.iem.at"
-DOWNLOAD="http://gem.iem.at/releases/0.93.3/Gem-0.93.3.tar.gz"
-MD5SUM="06ec538d157b06cbb2972c0e137ddb48"
+DOWNLOAD="http://gem.iem.at/releases/0.94/Gem%5Bv0.94%5D%28Sources%29.dek"
+MD5SUM="20b3f7aaca8f77b1691b89145e80bb4f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="pd"
+REQUIRES="pd ftgl"
MAINTAINER="Michales Michaloudes"
EMAIL="korgie@gmail.com"
diff --git a/multimedia/HandBrake/HandBrake.SlackBuild b/multimedia/HandBrake/HandBrake.SlackBuild
index 4c8a28ff04..e16c80373b 100644
--- a/multimedia/HandBrake/HandBrake.SlackBuild
+++ b/multimedia/HandBrake/HandBrake.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for HandBrake
@@ -7,10 +7,13 @@
# Modified by Erik Hanson at SlackBuilds.org
# Patched to fix x264 segfault by John Vogel
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=HandBrake
-VERSION=${VERSION:-1.0.7}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-1.5.1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
DOCDIR=${DOCDIR:-/usr/doc}
if [ -z "$ARCH" ]; then
@@ -21,13 +24,17 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -41,8 +48,6 @@ else
fi
SLKCFLAGS="$SLKCFLAGS -fno-aggressive-loop-optimizations"
-saved_CFLAGS="$CFLAGS"
-saved_CXXFLAGS="$CFLAGS"
export CFLAGS="$SLKCFLAGS"
export CXXFLAGS="$SLKCFLAGS"
@@ -52,10 +57,10 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+tar xvf $CWD/$PRGNAM-$VERSION-source.tar.bz2
cd $PRGNAM-$VERSION
mkdir -p download
-cp -r $CWD/* download
+cp -r $CWD/*{gz,bz2} download
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -63,25 +68,33 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+# 20220324 bkw: this fixes the 32-bit build, at the cost of adding
+# x265 as a required dep. It's based on Debian's
+# 0001-Remove-embedded-downloaded-copies-of-various-librari.patch
+# ...but it only affects x265.
+patch -p1 < $CWD/system_x265.diff
+
+# Autodetect onevpl support
+if pkg-config --exists vpl ; then qsv="--enable-qsv" ; else qsv="" ; fi
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--disable-gtk-update-checks \
--enable-fdk-aac \
- --disable-libav-aac \
+ --enable-nvenc \
+ --enable-vce \
--enable-x265 \
+ $qsv \
--arch=$ARCH
cd build
- # Fix underlinking by configuring the gtk module first, then sed:
- make gtk.configure
make
make install DESTDIR=$PKG
-cd $TMP/$PRGNAM-$VERSION
+strip $PKG/usr/bin/*
-export CFLAGS="$saved_CFLAGS"
-export CXXFLAGS="$saved_CXXFLAGS"
+cd $TMP/$PRGNAM-$VERSION
mkdir -p $PKG/$DOCDIR/$PRGNAM-$VERSION
cp -a AUTHORS.markdown COPYING NEWS.markdown THANKS.markdown README.markdown \
@@ -93,4 +106,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/HandBrake/HandBrake.info b/multimedia/HandBrake/HandBrake.info
index c71c92ada3..3b55d6b603 100644
--- a/multimedia/HandBrake/HandBrake.info
+++ b/multimedia/HandBrake/HandBrake.info
@@ -1,26 +1,30 @@
PRGNAM="HandBrake"
-VERSION="1.0.7"
+VERSION="1.5.1"
HOMEPAGE="https://handbrake.fr/"
-DOWNLOAD="https://download.handbrake.fr/releases/1.0.7/HandBrake-1.0.7.tar.bz2 \
- https://download.handbrake.fr/contrib/libvpx-1.5.0.tar.bz2 \
- https://download.handbrake.fr/handbrake/contrib/libav-12.tar.gz \
- https://download.handbrake.fr/handbrake/contrib/fdk-aac-0.1.4.tar.gz \
- https://download.handbrake.fr/handbrake/contrib/libdvdread-5.0.0-6-gcb1ae87.tar.gz \
- https://download.handbrake.fr/handbrake/contrib/libdvdnav-5.0.1.tar.bz2 \
- https://download.handbrake.fr/contrib/x265_2.1-1.tar.gz \
- https://download.handbrake.fr/handbrake/contrib/libbluray-0.9.3.tar.bz2 \
- https://download.handbrake.fr/contrib/mfx_dispatch-9f4a84d7.tar.gz"
-MD5SUM="bf39fcc56a82ccca32a9faac8fa633f5 \
- 49e59dd184caa255886683facea56fca \
- a389fd293cf7b52d8fe194615e2547a8 \
- e274a7d7f6cd92c71ec5c78e4dc9f8b7 \
- 607a5dd41b0dd2f35433d6deac79b99e \
- 81e30fb57eaf9f61aa6513a7bd85bd74 \
- 2d9cb183d2675dfb325abdedd2424bfa \
- c51fd34f933431559371be30b59cff51 \
- 694058b83b43b39b7e5b5fc38dbe2b88"
+DOWNLOAD="https://github.com/HandBrake/HandBrake/releases/download/1.5.1/HandBrake-1.5.1-source.tar.bz2 \
+ https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/AMF-1.4.18.tar.gz \
+ https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/dav1d-0.9.2.tar.bz2 \
+ https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/fdk-aac-2.0.1.tar.gz \
+ https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/ffmpeg-4.4.1.tar.bz2 \
+ https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/libbluray-1.3.0.tar.bz2 \
+ https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/libdvdnav-6.1.1.tar.bz2 \
+ https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/libdvdread-6.1.1.tar.bz2 \
+ https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/nv-codec-headers-11.0.10.1.tar.gz \
+ https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/oneVPL-2021.6.0.tar.gz \
+ https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/zimg-3.0.3.tar.gz"
+MD5SUM="d7fa3057eb830d11d5a18a868bd3ff2d \
+ c1e8aae3434b8fe6109e47e88e5b4de4 \
+ 52415d8b51774e960598bc6d07e6a608 \
+ 5b85f858ee416a058574a1028a3e1b85 \
+ 9c2ca54e7f353a861e57525ff6da335b \
+ d185696bef5f10ac04154e2b22b55b67 \
+ 46c46cb0294fbd1fcb8a0181818dad15 \
+ 09c7423568fb679279fd2a2bc6b10b6e \
+ 3400a117b9d4291f36be00c522057578 \
+ 10e99ad6f862598f2f39a50d663bf4f3 \
+ 43e157debdfebf737db3a709fc971869"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="libass x264 lame jansson opus"
+REQUIRES="libass x264 x265 numactl"
MAINTAINER="klaatu"
EMAIL="klaatu@member.fsf.org"
diff --git a/multimedia/HandBrake/README b/multimedia/HandBrake/README
index 85642f5a07..fd686dcd3b 100644
--- a/multimedia/HandBrake/README
+++ b/multimedia/HandBrake/README
@@ -1,7 +1,7 @@
-HandBrake is a DVD ripping application that reads DVDs and outputs to a
-variety of video and audio formats, with options for subtitles, alternate
-data streams, presets, and control over advanced options like bitrate,
-pixel aspect ratio, deinterlacing, and so on.
+HandBrake is a DVD ripping application that reads DVDs and outputs
+to a variety of video and audio formats, with options for subtitles,
+alternate data streams, presets, and control over advanced options
+like bitrate, pixel aspect ratio, deinterlacing, and so on.
The legality of ripping content from commercial DVDs varies from
nation to nation.
diff --git a/multimedia/HandBrake/system_x265.diff b/multimedia/HandBrake/system_x265.diff
new file mode 100644
index 0000000000..0badbab3ec
--- /dev/null
+++ b/multimedia/HandBrake/system_x265.diff
@@ -0,0 +1,45 @@
+diff -Naur HandBrake-1.5.1/libhb/module.defs HandBrake-1.5.1.patched/libhb/module.defs
+--- HandBrake-1.5.1/libhb/module.defs 2022-01-10 14:11:37.000000000 -0500
++++ HandBrake-1.5.1.patched/libhb/module.defs 2022-03-24 15:57:45.803548141 -0400
+@@ -129,10 +129,6 @@
+ LIBHB.dll.libs += $(CONTRIB.build/)lib/libvpl.a
+ endif
+
+-ifeq (1,$(FEATURE.x265))
+-LIBHB.dll.libs += $(CONTRIB.build/)lib/libx265.a
+-endif
+-
+ ifneq ($(HAS.iconv),1)
+ LIBHB.dll.libs += $(CONTRIB.build/)lib/libiconv.a
+ else
+diff -Naur HandBrake-1.5.1/make/include/main.defs HandBrake-1.5.1.patched/make/include/main.defs
+--- HandBrake-1.5.1/make/include/main.defs 2022-01-10 14:11:37.000000000 -0500
++++ HandBrake-1.5.1.patched/make/include/main.defs 2022-03-24 15:58:28.972263692 -0400
+@@ -40,13 +40,6 @@
+ MODULES += contrib/fdk-aac
+ endif
+
+-ifeq (1,$(FEATURE.x265))
+- MODULES += contrib/x265
+- MODULES += contrib/x265_8bit
+- MODULES += contrib/x265_10bit
+- MODULES += contrib/x265_12bit
+-endif
+-
+ MODULES += contrib/libdav1d
+ MODULES += contrib/zimg
+ MODULES += contrib/ffmpeg
+diff -Naur HandBrake-1.5.1/test/module.defs HandBrake-1.5.1.patched/test/module.defs
+--- HandBrake-1.5.1/test/module.defs 2022-01-10 14:11:37.000000000 -0500
++++ HandBrake-1.5.1.patched/test/module.defs 2022-03-24 15:59:19.957108790 -0400
+@@ -23,6 +23,10 @@
+ TEST.GCC.l += fontconfig
+ endif
+
++ifeq (1,$(FEATURE.x265))
++ TEST.GCC.l += x265
++endif
++
+ ifeq (1,$(FEATURE.qsv))
+ TEST.GCC.l += vpl
+ ifneq (,$(filter $(HOST.system),linux freebsd))
diff --git a/multimedia/JSampler/JSampler.SlackBuild b/multimedia/JSampler/JSampler.SlackBuild
index c061ac0e48..d90897d403 100644
--- a/multimedia/JSampler/JSampler.SlackBuild
+++ b/multimedia/JSampler/JSampler.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for JSampler
@@ -11,10 +11,22 @@
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
+# 20220331 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - abort if JAVA_HOME not set and can't be set from /etc/profile.d.
+# this avoids creating a /jre in the package root.
+# - include an icon in the package, since there's a .desktop file.
+# - add a doinst.sh, needed for the icon and .desktop.
+# - include a wrapper script to launch from the command line.
+# Note: this really should be noarch, and should install the .jar file
+# to /usr/share/$PRGNAM. I don't have time to test such changes right now.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=JSampler
VERSION=${VERSION:-0.9}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -24,7 +36,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -56,9 +72,21 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
+
+if [ -z "$JAVA_HOME" ]; then
+ source /etc/profile.d/zulu-openjdk8.sh
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+ cat <<EOF
+*** No JDK found. Install zulu-openjdk8 or another *jdk package and
+*** try again.
+EOF
+ exit 1
+fi
# make sure destdir exists
mkdir -p $PKG/$JAVA_HOME/jre/bin/
@@ -77,6 +105,18 @@ install -D -m 0644 $CWD/$PRGNAM.desktop \
echo -e "\nExec=java -jar $JAVA_HOME/jre/bin/$(echo "${THEME[@]^}")-0.9.jar" \
>> $PKG/usr/share/applications/$PRGNAM-$THEME.desktop
+# 20220331 bkw: for those of us who don't use KDE or XFCE or want to:
+mkdir -p $PKG/usr/bin
+cat > $PKG/usr/bin/$PRGNAM <<EOF
+#!/bin/sh
+exec java -jar $JAVA_HOME/jre/bin/$(echo "${THEME[@]^}")-0.9.jar
+EOF
+chmod 0755 $PKG/usr/bin/$PRGNAM
+
+# 20220331 bkw: icon. should be multiple sizes in /usr/share/icons...
+mkdir -p $PKG/usr/share/pixmaps
+cat res/fantasia/icons/LinuxSampler-logo.png > $PKG/usr/share/pixmaps/$PRGNAM.png
+
# docs
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -ar \
@@ -87,6 +127,7 @@ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/JSampler/JSampler.desktop b/multimedia/JSampler/JSampler.desktop
index 4dfe780082..9fbf1be85f 100644
--- a/multimedia/JSampler/JSampler.desktop
+++ b/multimedia/JSampler/JSampler.desktop
@@ -3,7 +3,7 @@ Name=JSampler
Version=1.0
GenericName=LinuxSampler GUI
Comment=JSampler is a LinuxSampler Java GUI Interface
-Icon=qsampler
+Icon=/usr/share/pixmaps/JSampler.png
Categories=Audio;AudioVideo;Midi;X-Alsa;X-Jack;
Terminal=false
Type=Application
diff --git a/multimedia/OpenLP/doinst.sh b/multimedia/JSampler/doinst.sh
index 5fb28930db..5fb28930db 100644
--- a/multimedia/OpenLP/doinst.sh
+++ b/multimedia/JSampler/doinst.sh
diff --git a/multimedia/LBRY/LBRY.SlackBuild b/multimedia/LBRY/LBRY.SlackBuild
index e266a06e40..a43b059fcc 100644
--- a/multimedia/LBRY/LBRY.SlackBuild
+++ b/multimedia/LBRY/LBRY.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for LBRY
-# Copyright 2020, Chris Abela, Malta
+# Copyright 2020-2022, Chris Abela, Malta
+# lbc donations will be accepted at: bZQ9x64nw2iVi9F2WeB1Z25U29rQ5TxkUm
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +23,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=LBRY
-VERSION=${VERSION:-0.43.4}
+VERSION=${VERSION:-0.53.9}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -62,7 +73,7 @@ find -L . \
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-ln -s /opt/LBRY/lbry usr/bin/lbry
+ln -s ../../opt/LBRY/lbry usr/bin/lbry
mv usr/share/doc/lbry usr/doc/$PRGNAM-$VERSION
rm -rf usr/share/doc
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -72,4 +83,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/LBRY/LBRY.info b/multimedia/LBRY/LBRY.info
index 5e6a32538c..8cd3bdc8c1 100644
--- a/multimedia/LBRY/LBRY.info
+++ b/multimedia/LBRY/LBRY.info
@@ -1,10 +1,10 @@
PRGNAM="LBRY"
-VERSION="0.43.4"
+VERSION="0.53.9"
HOMEPAGE="https://lbry.com/"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/lbryio/lbry-desktop/releases/download/v0.43.4/LBRY_0.43.4.deb"
-MD5SUM_x86_64="8c18dd16046bc27ce22d4ecb7bf9dbf7"
+DOWNLOAD_x86_64="https://github.com/lbryio/lbry-desktop/releases/download/v0.53.9/LBRY_0.53.9.deb"
+MD5SUM_x86_64="394476f14540a5e6a3d3040b54e1617c"
REQUIRES=""
MAINTAINER="Chris Abela"
EMAIL="kristofru@gmail.com"
diff --git a/multimedia/LBRY/slack-desc b/multimedia/LBRY/slack-desc
index 44acb0dbaa..5f90f22476 100644
--- a/multimedia/LBRY/slack-desc
+++ b/multimedia/LBRY/slack-desc
@@ -11,7 +11,7 @@ LBRY:
LBRY: LBRY is a browser for the LBRY network; a digital marketplace
LBRY: controlled by its users.
LBRY:
-LBRY: This is a re-packinging of the upstream Debian binary package.
+LBRY: This is a repackaging of the upstream Debian binary package.
LBRY:
LBRY:
LBRY:
diff --git a/multimedia/MediathekView/MediathekView.SlackBuild b/multimedia/MediathekView/MediathekView.SlackBuild
index 2eea232951..03d28cf187 100644
--- a/multimedia/MediathekView/MediathekView.SlackBuild
+++ b/multimedia/MediathekView/MediathekView.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for MediathekView
-# Copyright 2013-2015 Heiko Rosemann, Germany
+# Copyright 2013-2024 Heiko Rosemann, Germany
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,27 +22,44 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=MediathekView
-VERSION=${VERSION:-13.2.1}
+VERSION=${VERSION:-14.0.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+ARCH=${ARCH:-$(uname -m)}
-ARCH=noarch
+SRCNAM=${PRGNAM}-${VERSION}-linux
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
-CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
+if [ ! "${ARCH}" = "x86_64" ] ; then
+ echo "Architecture ${ARCH} is not supported."
+ exit 1
+fi
+
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-mkdir -p $PRGNAM-$VERSION
-tar xvzf $CWD/${PRGNAM}-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM
+mkdir -p $PRGNAM
+tar xvzf $CWD/${SRCNAM}.tar.gz
+cd $PRGNAM
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -50,20 +67,20 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-mkdir -p $PKG/usr/share/$PRGNAM/bin
-cp -a bin/flv-linux.sh $PKG/usr/share/$PRGNAM/bin/flv.sh
-cp -a lib/ $PKG/usr/share/$PRGNAM
-cp -a MediathekView.jar $PKG/usr/share/$PRGNAM
+mkdir -p $PKG/usr/share/$PRGNAM
+cp -a MediathekView MediathekView.ico MediathekView.jar MediathekView.svg \
+ MediathekView.vmoptions .install4j/ bin/ jre/ \
+ $PKG/usr/share/$PRGNAM
mkdir -p $PKG/usr/bin
-cat $CWD/$PRGNAM.wrapper > $PKG/usr/bin/$PRGNAM
-chmod 0755 $PKG/usr/bin/$PRGNAM
+ln -s /usr/share/$PRGNAM/MediathekView $PKG/usr/bin/MediathekView
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp README.txt $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/MediathekView/MediathekView.info b/multimedia/MediathekView/MediathekView.info
index 64fd26bd0c..fa48420d53 100644
--- a/multimedia/MediathekView/MediathekView.info
+++ b/multimedia/MediathekView/MediathekView.info
@@ -1,10 +1,10 @@
PRGNAM="MediathekView"
-VERSION="13.2.1"
+VERSION="14.0.0"
HOMEPAGE="http://www.mediathekview.de"
-DOWNLOAD="https://download.mediathekview.de/stabil/MediathekView-13.2.1.tar.gz"
-MD5SUM="88449174dce08d94876184a7b021fd63"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="jdk"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://download.mediathekview.de/stabil/MediathekView-14.0.0-linux.tar.gz"
+MD5SUM_x86_64="b0858af80566c17faabcc25adb32f1e6"
+REQUIRES=""
MAINTAINER="Heiko Rosemann"
EMAIL="heiko.rosemann@web.de"
diff --git a/multimedia/MediathekView/MediathekView.wrapper b/multimedia/MediathekView/MediathekView.wrapper
deleted file mode 100644
index db5ab145f8..0000000000
--- a/multimedia/MediathekView/MediathekView.wrapper
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-cd /usr/share/MediathekView
-exec java -jar MediathekView.jar $*
-cd $OLDPWD
diff --git a/multimedia/MediathekView/README b/multimedia/MediathekView/README
index 7d216a4b23..0d9f5b6de5 100644
--- a/multimedia/MediathekView/README
+++ b/multimedia/MediathekView/README
@@ -7,6 +7,4 @@ public TV's online databases for shows.
These shows can be streamed or saved locally using a user-
configurable program.
-This version of MediathekView requires JavaFX - if you are using the jdk from
-Oracle (SBo-package jdk) you are fine, they provide JavaFX, but if you use
-openjdk, you need both openjdk and openjfx.
+This version of MediathekView includes the JRE it requires to run.
diff --git a/multimedia/MediathekView/slack-desc b/multimedia/MediathekView/slack-desc
index 7980d70910..1edc007eab 100644
--- a/multimedia/MediathekView/slack-desc
+++ b/multimedia/MediathekView/slack-desc
@@ -12,8 +12,8 @@ MediathekView: MediathekView is a program to search the German/Swiss/Austrian
MediathekView: public TV's online databases for shows.
MediathekView: (ARD, ZDF, Arte, 3Sat, SWR, BR, MDR, NDR, WDR, HR, RBB, ORF and SF)
MediathekView:
-MediathekView: This version of MediathekView requires JavaFX - if you are using the
-MediathekView: jdk from Oracle (SBo-package jdk) you are fine, they provide JavaFX,
-MediathekView: but if you use openjdk, you need both openjdk and openjfx.
+MediathekView: This version of MediathekView includes the JRE it requires to run.
+MediathekView:
+MediathekView:
MediathekView:
MediathekView:
diff --git a/multimedia/Mopidy/Mopidy.SlackBuild b/multimedia/Mopidy/Mopidy.SlackBuild
index 6a99d52c82..14fcc9fc12 100644
--- a/multimedia/Mopidy/Mopidy.SlackBuild
+++ b/multimedia/Mopidy/Mopidy.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for Mopidy
-# Copyright 2014-2017 Dimitris Zlatanidis Orestiada, Greece
+# Copyright 2014-2023 Dimitris Zlatanidis Orestiada, Greece
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=Mopidy
-VERSION=${VERSION:-2.1.0}
+VERSION=${VERSION:-3.4.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -69,16 +79,25 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-python setup.py install --root=$PKG
+python3 setup.py install --root=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-mkdir -p $PKG/usr/man/man1
-cp $CWD/mopidy.1.gz $PKG/usr/man/man1/mopidy.1.gz
+mkdir -p $PKG/usr/bin
+install -m0755 extra/mopidyctl/mopidyctl $PKG/usr/bin
+
+mkdir -p $PKG/usr/share/applications
+cp extra/desktop/mopidy.desktop $PKG/usr/share/applications/
+
+mkdir -p $PKG/usr/man/man8
+cp extra/mopidyctl/mopidyctl.8 $PKG/usr/man/man8
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS LICENSE PKG-INFO README.rst $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS LICENSE PKG-INFO README.rst docs/*.rst $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -86,4 +105,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/Mopidy/Mopidy.info b/multimedia/Mopidy/Mopidy.info
index 37d5942b67..4c51562a5b 100644
--- a/multimedia/Mopidy/Mopidy.info
+++ b/multimedia/Mopidy/Mopidy.info
@@ -1,10 +1,10 @@
PRGNAM="Mopidy"
-VERSION="2.1.0"
+VERSION="3.4.2"
HOMEPAGE="https://www.mopidy.com/"
-DOWNLOAD="https://pypi.python.org/packages/60/76/427ad1fbe879034e34cf9898310ba5a9cc42cd36b08898059be06066fa38/Mopidy-2.1.0.tar.gz"
-MD5SUM="ac41bb099309653b6a859daa32af30fb"
+DOWNLOAD="https://files.pythonhosted.org/packages/cc/41/1f291572997c49fce9eef47cea6d06b7d30e9923cc75a84679767f7fc99e/Mopidy-3.4.2.tar.gz"
+MD5SUM="000129df314183118c88df28284b5fb6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="Pykka gst-python tornado python-requests"
+REQUIRES="Pykka python3-tornado"
MAINTAINER="Dimitris Zlatanidis"
-EMAIL="d.zlatanidis@gmail.com"
+EMAIL="dslackw@gmail.com"
diff --git a/multimedia/Mopidy/README b/multimedia/Mopidy/README
index d12942a260..9011fa48ff 100644
--- a/multimedia/Mopidy/README
+++ b/multimedia/Mopidy/README
@@ -1,5 +1,5 @@
-Mopidy is a music server which can play music both from multiple sources, like
-your local hard drive, radio streams, and from Spotify and SoundCloud. Searches
-combines results from all music sources, and you can mix tracks from all
-sources in your play queue. Your playlists from Spotify or SoundCloud are also
-available for use.
+Mopidy is a music server which can play music both from multiple
+sources, like your local hard drive, radio streams, and from Spotify
+and SoundCloud. Searches combines results from all music sources, and
+you can mix tracks from all sources in your play queue. Your playlists
+from Spotify or SoundCloud are also available for use.
diff --git a/multimedia/Mopidy/mopidy.1.gz b/multimedia/Mopidy/mopidy.1.gz
deleted file mode 100644
index 4995bcf973..0000000000
--- a/multimedia/Mopidy/mopidy.1.gz
+++ /dev/null
Binary files differ
diff --git a/multimedia/MuseScore-Legacy/MuseScore-Legacy.SlackBuild b/multimedia/MuseScore-Legacy/MuseScore-Legacy.SlackBuild
new file mode 100644
index 0000000000..bf7e78e944
--- /dev/null
+++ b/multimedia/MuseScore-Legacy/MuseScore-Legacy.SlackBuild
@@ -0,0 +1,150 @@
+#!/bin/bash
+
+# Slackware build script for MuseScore-Legacy
+
+# Copyright 2024 Antonio Leal, Porto Salvo, Oeiras, Portugal
+# Copyright 2022-2023 Klaatu <klaatu@member.fsf.org> | Lawrence NZ
+# Thanks to Tim Dickson
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=MuseScore-Legacy
+VERSION=${VERSION:-3.6.2}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf ${PRGNAM::-7}-$VERSION
+
+tar xvf $CWD/${PRGNAM::-7}-$VERSION.tar.gz
+
+cd ${PRGNAM::-7}-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# Copy over sound files for installation.
+cp $CWD/MuseScore_General_License.md share/sound
+cp $CWD/MuseScore_General.sf3 share/sound
+
+# Turn off Qt crash reporter. Option isn't available in Makefile,
+# so turn it off in CMakeLists.txt
+sed -i '/(BUILD_CRASH_REPORTER/s|ON)|OFF)|' CMakeLists.txt
+sed -i 's|share/man|man|' CMakeLists.txt
+
+mkdir b
+cd b
+cmake .. \
+ -DCMAKE_INSTALL_PREFIX=/opt/MuseScore-Legacy \
+ -DCMAKE_C_FLAGS_RELEASE="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS_RELEASE="$SLKCFLAGS" \
+ -DCMAKE_MODULE_LINKER_FLAGS_RELEASE="-pthread" \
+ -DMUSESCORE_BUILD_CONFIG=release \
+ -DDOWNLOAD_SOUNDFONT=OFF \
+ -DUSE_SYSTEM_FREETYPE=ON \
+ -DBUILD_WEBENGINE=OFF \
+ -DBUILD_TELEMETRY_MODULE=OFF \
+ -DBUILD_PORTAUDIO=ON \
+ -DBUILD_PORTMIDI=ON \
+ -DQMAKE=/usr/lib"${LIBDIRSUFFIX}"/qt5/bin/qmake \
+ -DQT_QMAKE_EXECUTABLE=/usr/lib"${LIBDIRSUFFIX}"/qt5/bin/qmake
+
+make install \
+ DESTDIR=$PKG \
+ UPDATE_CACHE=FALSE
+
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/share/pixmaps
+mv $PKG/opt/MuseScore-Legacy/share/icons/hicolor/128x128/apps/mscore.png $PKG/usr/share/pixmaps/mscore-legacy.png
+rm -rf $PKG/opt/MuseScore-Legacy/share/icons
+
+mkdir -p $PKG/usr/share/applications
+mv $PKG/opt/MuseScore-Legacy/share/applications/mscore.desktop $PKG/usr/share/applications/mscore-legacy.desktop
+rm -rf $PKG/opt/MuseScore-Legacy/share/applications
+sed -i 's|Exec=mscore %F|Exec=mscore-legacy %F|' $PKG/usr/share/applications/mscore-legacy.desktop
+sed -i 's|Icon=mscore|Icon=mscore-legacy|' $PKG/usr/share/applications/mscore-legacy.desktop
+
+mkdir -p $PKG/usr/man/man1
+mv $PKG/opt/MuseScore-Legacy/man/man1/mscore.1.gz $PKG/usr/man/man1/mscore-legacy.1.gz
+rm -rf $PKG/opt/MuseScore-Legacy/man
+
+mkdir -p $PKG/usr/bin
+( cd $PKG/usr/bin ; rm -rf mscore-legacy )
+( cd $PKG/usr/bin ; ln -sf ../../opt/MuseScore-Legacy/bin/mscore mscore-legacy )
+( cd $PKG/usr/bin ; rm -rf MuseScore-Legacy )
+( cd $PKG/usr/bin ; ln -sf ../../opt/MuseScore-Legacy/bin/mscore MuseScore-Legacy )
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSE.* README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/MuseScore-Legacy/MuseScore-Legacy.info b/multimedia/MuseScore-Legacy/MuseScore-Legacy.info
new file mode 100644
index 0000000000..5341f63336
--- /dev/null
+++ b/multimedia/MuseScore-Legacy/MuseScore-Legacy.info
@@ -0,0 +1,14 @@
+PRGNAM="MuseScore-Legacy"
+VERSION="3.6.2"
+HOMEPAGE="http://www.musescore.org/"
+DOWNLOAD="https://github.com/musescore/MuseScore/archive/v3.6.2/MuseScore-3.6.2.tar.gz \
+http://ftp.osuosl.org/pub/musescore/soundfont/MuseScore_General/MuseScore_General.sf3 \
+http://ftp.osuosl.org/pub/musescore/soundfont/MuseScore_General/MuseScore_General_License.md"
+MD5SUM="682c4a38b8b39d246d196c392ae08ab7 \
+ 7b354559c7ef4e859a2bfad8738d477d \
+ bc7b4fbe58b37788876b6c36f19577d0"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="jack portaudio portmidi"
+MAINTAINER="antonioleal"
+EMAIL="antonioleal@yahoo.com"
diff --git a/multimedia/MuseScore-Legacy/README b/multimedia/MuseScore-Legacy/README
new file mode 100644
index 0000000000..1cb7734255
--- /dev/null
+++ b/multimedia/MuseScore-Legacy/README
@@ -0,0 +1,12 @@
+MuseScore is a free cross platform WYSIWYG music notation
+program, licenced under GNU GPL. Features:
+ * WYSIWYG, notes are entered on a "virtual note sheet"
+ * unlimited number of staves
+ * up to four voices/staff
+ * easy and fast note entry with mouse, keyboard or midi
+ * integrated sequencer and FluidSynth software synthesizer
+ * import and export of MusicXml and standard midifiles (SMF)
+ * platform independent code for Linux, Windows, Mac
+
+This package builds the legacy version 3.6.2 the last one in
+the 3.x series.
diff --git a/multimedia/subtitlecomposer/doinst.sh b/multimedia/MuseScore-Legacy/doinst.sh
index 0fb9c8b686..aea0f894eb 100644
--- a/multimedia/subtitlecomposer/doinst.sh
+++ b/multimedia/MuseScore-Legacy/doinst.sh
@@ -11,4 +11,3 @@ if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
/usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
fi
fi
-
diff --git a/multimedia/MuseScore-Legacy/slack-desc b/multimedia/MuseScore-Legacy/slack-desc
new file mode 100644
index 0000000000..1b697d6232
--- /dev/null
+++ b/multimedia/MuseScore-Legacy/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+MuseScore-Legacy: MuseScore-Legacy (WYSIWYG Music Score Typesetter version 3.6.2)
+MuseScore-Legacy:
+MuseScore-Legacy: MuseScore is a free cross platform WYSIWYG music notation program,
+MuseScore-Legacy: licensed under GNU GPL.
+MuseScore-Legacy: This package builds the legacy version 3.6.2 the last one in the 3.x
+MuseScore-Legacy: series.
+MuseScore-Legacy:
+MuseScore-Legacy: Homepage: http://www.musescore.org/
+MuseScore-Legacy:
+MuseScore-Legacy:
+MuseScore-Legacy:
diff --git a/multimedia/MuseScore/MuseScore.SlackBuild b/multimedia/MuseScore/MuseScore.SlackBuild
index 051026c944..7ab0fb1ebc 100644
--- a/multimedia/MuseScore/MuseScore.SlackBuild
+++ b/multimedia/MuseScore/MuseScore.SlackBuild
@@ -1,11 +1,36 @@
-#!/bin/sh
+#!/bin/bash
+
# Slackware build script for MuseScore
-# Maintained by Klaatu at member.fsf dot org
+
+# Copyright 2024 Antonio Leal, Porto Salvo, Oeiras, Portugal
+# Copyright 2022-2023 Klaatu <klaatu@member.fsf.org> | Lawrence NZ
+# Thanks to Tim Dickson
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=MuseScore
-VERSION=${VERSION:-3.2}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-4.2.1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -15,7 +40,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -35,51 +64,76 @@ else
fi
set -e
-
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+
+tar xvfz $CWD/$PRGNAM-$VERSION.tar.gz
+
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-# Copy over sound files for installation.
-cp $CWD/MuseScore_General_License.md share/sound
-cp $CWD/MuseScore_General.sf3 share/sound
-
-# Turn off Qt crash reporter. Option isn't available in Makefile,
-# so turn it off in CMakeLists.txt
-sed -i '/(BUILD_CRASH_REPORTER/s|ON)|OFF)|' CMakeLists.txt
-sed -i 's|share/man|man|' CMakeLists.txt
-#musescore doesn't like to build with webengine with qt4 installed
-#because the qmake finder finds the qt4 version. lets patch this
-sed -i 's/qmake)/qmake-qt5)/g' build/FindQt5.cmake
-make release \
- PREFIX=/usr \
- CFLAGS="$SLKCFLAGS" \
- CXXFLAGS="$SLKCFLAGS" \
- LDFLAGS="-pthread" \
- DOWNLOAD_SOUNDFONT=OFF \
- USE_SYSTEM_FREETYPE=ON \
- BUILD_WEBENGINE=ON \
- VERBOSE=1
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+
+mkdir b
+cd b
+cmake .. \
+ -DCMAKE_INSTALL_PREFIX=/opt/MuseScore \
+ -DCMAKE_C_FLAGS_RELEASE="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS_RELEASE="$SLKCFLAGS" \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_MODULE_LINKER_FLAGS_RELEASE="-pthread" \
+ -DQMAKE=/usr/lib"${LIBDIRSUFFIX}"/qt5/bin/qmake \
+ -DQT_QMAKE_EXECUTABLE=/usr/lib"${LIBDIRSUFFIX}"/qt5/bin/qmake
+
make install \
- -C build.release \
DESTDIR=$PKG \
UPDATE_CACHE=FALSE
+
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/share/icons
+mv $PKG/opt/MuseScore/share/icons/hicolor $PKG/usr/share/icons/
+rm -rf $PKG/opt/MuseScore/share/icons
+
+mkdir -p $PKG/usr/share/applications
+cp $CWD/MuseScore.desktop $PKG/usr/share/applications/
+rm -rf $PKG/opt/MuseScore/share/applications
+
+mkdir -p $PKG/usr/man/man1
+mv $PKG/opt/MuseScore/share/man/man1/mscore.1.gz $PKG/usr/man/man1/
find $PKG/usr/man -type f -exec gzip -9 {} \;
+rm -rf $PKG/opt/MuseScore/share/man
+
+mv $PKG/opt/MuseScore/share/metainfo $PKG/usr/share/
+
+mv $PKG/opt/MuseScore/share/mime $PKG/usr/share/
+
+mkdir -p $PKG/opt/MuseScore/share/demos
+cp -avxu demos/*.msc? $PKG/opt/MuseScore/share/demos
+
+mkdir -p $PKG/usr/bin
+( cd $PKG/usr/bin ; rm -rf mscore )
+( cd $PKG/usr/bin ; ln -sf ../../opt/MuseScore/bin/mscore mscore )
+( cd $PKG/usr/bin ; rm -rf MuseScore )
+( cd $PKG/usr/bin ; ln -sf ../../opt/MuseScore/bin/mscore MuseScore )
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a LICENSE.* README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cp doc/* $PKG/usr/doc/$PRGNAM-$VERSION
+cp LICENSE.txt $PKG/usr/doc/$PRGNAM-$VERSION
+cp README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cp CONTRIBUTING.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -87,4 +141,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/MuseScore/MuseScore.desktop b/multimedia/MuseScore/MuseScore.desktop
new file mode 100644
index 0000000000..d183c1284b
--- /dev/null
+++ b/multimedia/MuseScore/MuseScore.desktop
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Name=MuseScore
+GenericName=Music notation
+Comment=Create, play and print beautiful sheet music
+Exec=mscore
+Icon=mscore
+Terminal=false
+StartupNotify=true
+NoDisplay=false
+MimeType=application/x-musescore;application/x-musescore+xml;x-scheme-handler/musescore;application/vnd.recordare.musicxml;application/vnd.recordare.musicxml+xml;audio/midi;application/x-bww;application/x-biab;application/x-capella;audio/x-gtp;application/x-musedata;application/x-overture;audio/x-ptb;application/x-sf2;application/x-sf3;
+Categories=AudioVideo;
+Keywords=music;notation;composition;composing;arranging;making;sheet music;music notation software;lead sheet;leadsheet;score;full score;scorewriter;MIDI;musicxml;playback;instrument;
+
diff --git a/multimedia/MuseScore/MuseScore.info b/multimedia/MuseScore/MuseScore.info
index 85224ce691..1afc8b2503 100644
--- a/multimedia/MuseScore/MuseScore.info
+++ b/multimedia/MuseScore/MuseScore.info
@@ -1,14 +1,10 @@
PRGNAM="MuseScore"
-VERSION="3.2"
-HOMEPAGE="http://www.musescore.org/"
-DOWNLOAD="https://github.com/musescore/MuseScore/archive/v3.2/MuseScore-3.2.tar.gz \
- http://ftp.osuosl.org/pub/musescore/soundfont/MuseScore_General/MuseScore_General.sf3 \
- http://ftp.osuosl.org/pub/musescore/soundfont/MuseScore_General/MuseScore_General_License.md"
-MD5SUM="f7b6a53fea406c0a0e90c12ee347c056 \
- 3e02cc70ae6df3077d0003bbcb95456c \
- 6ab9352030223f909bb36b8f067c7d26"
+VERSION="4.2.1"
+HOMEPAGE="https://github.com/musescore/MuseScore"
+DOWNLOAD="https://github.com/musescore/MuseScore/archive/v4.2.1/MuseScore-4.2.1.tar.gz"
+MD5SUM="be651dd658905545bfd3601c23d8831b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="qt5-webkit jack lame portaudio portmidi"
-MAINTAINER="Klaatu"
-EMAIL="klaatu@member.fsf.org"
+REQUIRES=""
+MAINTAINER="Antonio Leal"
+EMAIL="antonioleal@yahoo.com"
diff --git a/multimedia/MuseScore/README b/multimedia/MuseScore/README
index 26c3e9a318..c8249719ba 100644
--- a/multimedia/MuseScore/README
+++ b/multimedia/MuseScore/README
@@ -1,11 +1,16 @@
MuseScore is a free cross platform WYSIWYG music notation
program, licenced under GNU GPL. Features:
- * WYSIWYG, notes are entered on a "virtual note sheet"
- * unlimited number of staves
- * up to four voices/staff
- * easy and fast note entry with mouse, keyboard or midi
- * integrated sequencer and FluidSynth software synthesizer
- * import and export of MusicXml and standard midifiles (SMF)
- * platform independent code for Linux, Windows and Mac
-Optional dependency: portaudio
+ - WYSIWYG design, notes are entered on a "virtual notepaper"
+ - TrueType font(s) for printing & display allows for high quality
+ scaling to all sizes
+ - Easy & fast note entry
+ - Many editing functions
+ - MusicXML import/export
+ - MIDI (SMF) import/export
+ - MuseData import
+ - MIDI input for note entry
+ - Integrated sequencer and software synthesizer to play the score
+ - Print or create pdf files
+
+This package partially installs to /opt/MuseScore
diff --git a/multimedia/OpenLP/OpenLP.desktop b/multimedia/OpenLP/OpenLP.desktop
deleted file mode 100644
index 395cb013b1..0000000000
--- a/multimedia/OpenLP/OpenLP.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name= OpenLP
-Name[he]= OpenLP
-Comment=Open Source Worship Presentation
-Exec=openlp.pyw
-Icon=OpenLP
-Terminal=false
-Type=Application
-Categories=AudioVideo;
-GenericName=Church lyrics projection
diff --git a/multimedia/OpenLP/OpenLP.info b/multimedia/OpenLP/OpenLP.info
deleted file mode 100644
index d5bcc44840..0000000000
--- a/multimedia/OpenLP/OpenLP.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="OpenLP"
-VERSION="2.0.5"
-HOMEPAGE="https://openlp.org/"
-DOWNLOAD="https://downloads.sourceforge.net/project/openlp/openlp/2.0.5/OpenLP-2.0.5.tar.gz"
-MD5SUM="539626eb8da337814d64e82329e22e78"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="lxml pyenchant SQLAlchemy"
-MAINTAINER="Dimitris Zlatanidis"
-EMAIL="d.zlatanidis@gmail.com"
diff --git a/multimedia/OpenLP/README b/multimedia/OpenLP/README
deleted file mode 100644
index 4077fe3e13..0000000000
--- a/multimedia/OpenLP/README
+++ /dev/null
@@ -1,15 +0,0 @@
-OpenLP stands for "Open Lyrics Projection" and is presentation software
-developed for churches to provide a single easy to use interface for the
-projection needs of a typical worship service.
-First created in 2004, it has steadily grown in features and maturity such
-that it is now a mainstay in hundreds of churches around the world.
-
-OpenLP has searchable databases of songs and Bible verses allowing them to be
-projected instantly or saved in a pre-prepared order of service file. Themes
-allow for a variety of presentation options and allow you to add attractive
-visuals to enhance your presentations. PowerPoint and OpenOffice presentations,
-videos and audio files can be run from within the program removing the need
-to switch between different programs. Alert messages can be displayed so the
-nursery or car park stewards can notify the congregation easily.
-Remote capability allows the worship leader to change songs, or for alert
-messages to be sent from anywhere on the network, even via smart phone/tablet.
diff --git a/multimedia/OpenLP/slack-desc b/multimedia/OpenLP/slack-desc
deleted file mode 100644
index 8b988ee5e6..0000000000
--- a/multimedia/OpenLP/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-OpenLP: OpenLP (Open Source Worship Presentation)
-OpenLP:
-OpenLP: OpenLP stands for "Open Lyrics Projection" and is presentation
-OpenLP: software developed or churches to provide a single easy to use
-OpenLP: nterface for the projection needs of a typical worship service.
-OpenLP: First created in 2004, it has steadily grown in features and maturity
-OpenLP: that it is now a mainstay in hundreds of churches around the world.
-OpenLP:
-OpenLP: Homepage: https://openlp.org/
-OpenLP:
-OpenLP:
diff --git a/multimedia/OpenPHT/OpenPHT b/multimedia/OpenPHT/OpenPHT
deleted file mode 100644
index 78c8190d1d..0000000000
--- a/multimedia/OpenPHT/OpenPHT
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# disable PulseAudio
-export AE_ENGINE=Soft
-
-export XBMC_HOME=/opt/OpenPHT/share/XBMC
-exec /opt/OpenPHT/bin/openpht
diff --git a/multimedia/OpenPHT/OpenPHT.SlackBuild b/multimedia/OpenPHT/OpenPHT.SlackBuild
deleted file mode 100644
index 77d26d38fe..0000000000
--- a/multimedia/OpenPHT/OpenPHT.SlackBuild
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for "OpenPHT"
-
-# Copyright 2014-2015 Marcel Saegebarth <marc@mos6581.de>
-# Copyright 2016 Philip van der Hoeven, Almere, The Netherlands
-# All rights reserved.
-#
-# 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.
-#
-# 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.
-
-PRGNAM=OpenPHT
-VERSION=${VERSION:-1.8.0.148}
-REV=${REV:-573b6d73}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION-$REV
-tar xvf $CWD/$PRGNAM-$VERSION-$REV.tar.gz || tar xvf $CWD/v$VERSION-$REV.tar.gz
-cd $PRGNAM-$VERSION-$REV
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-# Find fribidi-0.19.7
-# https://raw.githubusercontent.com/foux/fouxlay/master/media-tv/plex-home-theater/files/fribidi.patch
-patch -p1 < $CWD/fribidi.patch
-
-mkdir build
-cd build
-
-cmake \
- -DCMAKE_C_FLAGS="$SLKCFLAGS" \
- -DCMAKE_CXX_FLAGS="$SLKCFLAGS" \
- -DCMAKE_INSTALL_PREFIX=/opt/$PRGNAM \
- -DCMAKE_BUILD_TYPE=Release \
- -DENABLE_AUTOUPDATE='FALSE' \
- -DENABLE_DUMP_SYMBOLS='FALSE' \
- -DENABLE_PYTHON='TRUE' \
- -DUSE_INTERNAL_FFMPEG='TRUE' \
- -DCREATE_BUNDLE='FALSE' \
- -DENABLE_SHAIRPLAY=off \
- -DENABLE_CEC=off \
- ..
-
-# internal ffmpeg version doesn't build with multiple jobs
-make -j1
-make install DESTDIR=$PKG
-
-cd ..
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/bin
-install -D -m 0755 $CWD/OpenPHT $PKG/usr/bin
-
-mkdir -p $PKG/usr/share/applications
-install -D -m 0644 $CWD/$PRGNAM.desktop $PKG/usr/share/applications
-
-mkdir -p $PKG/usr/share/pixmaps
-install -D -m 0644 $CWD/${PRGNAM}_512x512.png $PKG/usr/share/pixmaps
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a CONTRIBUTORS LICENSE.GPL README README-BUILD-PLEX.md docs/README.* \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/OpenPHT/OpenPHT.desktop b/multimedia/OpenPHT/OpenPHT.desktop
deleted file mode 100644
index 1a0bcb7a17..0000000000
--- a/multimedia/OpenPHT/OpenPHT.desktop
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Name=OpenPHT - Plex Home Theater
-GenericName=Media Center
-Exec=OpenPHT
-StartupNotify=true
-Terminal=false
-Type=Application
-Icon=/usr/share/pixmaps/OpenPHT_512x512.png
-Categories=Audio;Music;Video;Player;AudioVideo;
diff --git a/multimedia/OpenPHT/OpenPHT.info b/multimedia/OpenPHT/OpenPHT.info
deleted file mode 100644
index 1c84e2fd5a..0000000000
--- a/multimedia/OpenPHT/OpenPHT.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="OpenPHT"
-VERSION="1.8.0.148"
-HOMEPAGE="https://github.com/RasPlex/OpenPHT"
-DOWNLOAD="https://github.com/RasPlex/OpenPHT/archive/v1.8.0.148-573b6d73/OpenPHT-1.8.0.148-573b6d73.tar.gz"
-MD5SUM="7eddac9c7638d70c2a25d04cc451ddcc"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="yajl libmicrohttpd tinyxml avahi libmpeg2 libass rtmpdump libmodplug lame openjdk7 libcec"
-MAINTAINER="Philip van der Hoeven"
-EMAIL="philip@vd-hoeven.nl"
diff --git a/multimedia/OpenPHT/OpenPHT_512x512.png b/multimedia/OpenPHT/OpenPHT_512x512.png
deleted file mode 100644
index 89f68bb648..0000000000
--- a/multimedia/OpenPHT/OpenPHT_512x512.png
+++ /dev/null
Binary files differ
diff --git a/multimedia/OpenPHT/README b/multimedia/OpenPHT/README
deleted file mode 100644
index 5c581bf1ea..0000000000
--- a/multimedia/OpenPHT/README
+++ /dev/null
@@ -1,6 +0,0 @@
-
-Plex Home Theater is optimized for the big screen and supports
-a wide variety of formats with high-definition audio, native
-framerates, and more.
-
-(Some) Optional dependencies: libbluray libcec libnfs
diff --git a/multimedia/OpenPHT/fribidi.patch b/multimedia/OpenPHT/fribidi.patch
deleted file mode 100644
index 3b135bdfc3..0000000000
--- a/multimedia/OpenPHT/fribidi.patch
+++ /dev/null
@@ -1,47 +0,0 @@
---- a/plex/CMakeModules/FindFriBiDi.cmake
-+++ b/plex/CMakeModules/FindFriBiDi.cmake
-@@ -10,43 +10,9 @@
- # FRIBIDI_LIBRARY, where to find the FriBiDi library.
-
- include(CheckSymbolExists)
-+include(FindPkgConfig)
-+pkg_check_modules(FRIBIDI fribidi)
-
--SET(FRIBIDI_FOUND "NO")
--
--# Set variable in temp var, otherwise FIND_PATH might fail
--# unset isn't present in the required version of cmake.
--FIND_PATH(xFRIBIDI_INCLUDE_DIR fribidi.h
-- PATHS /usr/local/include
-- /usr/include
-- PATH_SUFFIXES fribidi
-- )
--set(FRIBIDI_INCLUDE_DIR ${xFRIBIDI_INCLUDE_DIR})
--
--SET(FRIBIDI_NAMES ${FRIBIDI_NAMES} fribidi libfribidi)
--FIND_LIBRARY(FRIBIDI_LIBRARY
-- NAMES ${FRIBIDI_NAMES}
-- PATHS /usr/lib /usr/local/lib
-- )
--
--IF (FRIBIDI_LIBRARY AND FRIBIDI_INCLUDE_DIR)
-- SET(CMAKE_REQUIRED_INCLUDES ${FRIBIDI_INCLUDE_DIR})
-- SET(CMAKE_REQUIRED_LIBRARIES ${FRIBIDI_LIBRARY})
-- CHECK_SYMBOL_EXISTS(fribidi_utf8_to_unicode fribidi.h FOUND_fribidi_utf8_to_unicode)
-- CHECK_SYMBOL_EXISTS(fribidi_charset_to_unicode fribidi.h FOUND_fribidi_charset_to_unicode)
-- if(FOUND_fribidi_charset_to_unicode)
-- SET(FRIBIDI_LIBRARIES ${FRIBIDI_LIBRARY})
-- SET(FRIBIDI_FOUND "YES")
-- elseif(FOUND_fribidi_utf8_to_unicode)
-- SET(FRIBIDI_LIBRARIES ${FRIBIDI_LIBRARY})
-- SET(FRIBIDI_FOUND "YES")
-- add_definitions(-DOLD_FRIBIDI)
-- MESSAGE(STATUS "Legacy FriBiDi: ${FRIBIDI_LIBRARY}")
-- else()
-- SET(FRIBIDI_LIBRARIES "NOTFOUND")
-- SET(FRIBIDI_INCLUDE_DIR "NOTFOUND")
-- SET(FRIBIDI_FOUND "NO")
-- endif()
--ENDIF (FRIBIDI_LIBRARY AND FRIBIDI_INCLUDE_DIR)
-
- IF (FRIBIDI_FOUND)
diff --git a/multimedia/QMPlay2/QMPlay2.SlackBuild b/multimedia/QMPlay2/QMPlay2.SlackBuild
index bdfdee018d..028e7c1b26 100644
--- a/multimedia/QMPlay2/QMPlay2.SlackBuild
+++ b/multimedia/QMPlay2/QMPlay2.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
#
# Slackware build script for QMPlay2.
#
-# Copyright 2017-2019 Edinaldo P. Silva, Rio de Janeiro, Brazil.
+# Copyright 2017-2024 Edinaldo P. Silva, Rio de Janeiro, Brazil.
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=QMPlay2
-VERSION=${VERSION:-18.12.26}
+VERSION=${VERSION:-24.04.07}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -59,9 +69,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM-src-$VERSION
+tar xvf $CWD/$PRGNAM-src-$VERSION.tar.?z
+cd $PRGNAM-src-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -69,17 +79,24 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+mkdir build
+cd build
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib$LIBDIRSUFFIX \
-DLANGUAGES=All \
- -DUSE_LINK_TIME_OPTIMIZATION=ON \
- -DUSE_JEMALLOC=OFF \
+ -DUSE_LINK_TIME_OPTIMIZATION=OFF \
+ -DUSE_GLSLC=OFF \
-DUSE_CHIPTUNE_SID=OFF \
- .
+ -DUSE_PCH=ON \
+ -DUSE_GLSLC=OFF \
+ -DUSE_GIT_VERSION=OFF \
+ ..
make
make install DESTDIR=$PKG
+cd ..
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
@@ -88,8 +105,11 @@ mv $PKG/usr/share/man $PKG/usr/man
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+# to pass sbopkglint test...
+rm -rf $PKG/usr/share/icons/hicolor/scalable
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp AUTHORS ChangeLog LICENSE README.md TODO $PKG/usr/doc/$PRGNAM-$VERSION
+cp AUTHORS ChangeLog LICENSE README.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -97,4 +117,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/QMPlay2/QMPlay2.info b/multimedia/QMPlay2/QMPlay2.info
index 95251bcf51..3e14eb292d 100644
--- a/multimedia/QMPlay2/QMPlay2.info
+++ b/multimedia/QMPlay2/QMPlay2.info
@@ -1,10 +1,10 @@
PRGNAM="QMPlay2"
-VERSION="18.12.26"
+VERSION="24.04.07"
HOMEPAGE="https://github.com/zaps166/QMPlay2"
-DOWNLOAD="https://github.com/zaps166/QMPlay2/archive/18.12.26/QMPlay2-18.12.26.tar.gz"
-MD5SUM="d8169c445dec1503b21791b82d9eedd8"
+DOWNLOAD="https://github.com/zaps166/QMPlay2/releases/download/24.04.07/QMPlay2-src-24.04.07.tar.xz"
+MD5SUM="05a2792b0d54070ea0c13e718d9e7eb1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="qt5 ffmpeg libass libgme"
+REQUIRES="libass libgme"
MAINTAINER="Edinaldo P. Silva"
EMAIL="edps.mundognu@gmail.com"
diff --git a/multimedia/RenameMyTVSeries/README b/multimedia/RenameMyTVSeries/README
new file mode 100644
index 0000000000..a9605bafd1
--- /dev/null
+++ b/multimedia/RenameMyTVSeries/README
@@ -0,0 +1,15 @@
+A tool to quickly and easily rename poorly named TV Show episode
+files to a format that makes sense and is to your liking using
+information from thetvdb.com
+
+Features:
+Support the new TheTVDB.com API (v2)
+Caching shows and banners
+Dark Theme support (MacOS and Linux only)
+Automatically move files into a desired directory structure
+Define your own file and directory name format
+Create NFO files for the TV Show and for individual Episodes
+Store a banner for the TV Show
+Merge 2 Episodes into 1 (filename only of course)
+Log file of what files have been renamed
+
diff --git a/multimedia/RenameMyTVSeries/RenameMyTVSeries.SlackBuild b/multimedia/RenameMyTVSeries/RenameMyTVSeries.SlackBuild
new file mode 100644
index 0000000000..6601c799de
--- /dev/null
+++ b/multimedia/RenameMyTVSeries/RenameMyTVSeries.SlackBuild
@@ -0,0 +1,121 @@
+#!/bin/bash
+
+# Slackware build script for RenameMyTVSeries
+
+# Copyright 2023 Matt Dinslage, Springfield MO
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=RenameMyTVSeries
+VERSION=${VERSION:-2.1.7}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+PKGSOURCE=$TMP/$PRGNAM-$VERSION
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+mkdir $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION-GTK-beta-Linux-64bit-shared-ffmpeg.tar.gz -C $PRGNAM-$VERSION
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# Create directories and install binary
+mkdir -p $PKG/usr/bin
+mkdir -p $PKG/usr/share/applications
+install -Dm755 $PRGNAM $PKG/usr/bin
+
+# Add application icons
+chmod 0644 icons/*
+for i in 16 32 64 128 256 512; do
+ mkdir -p $PKG/usr/share/icons/hicolor/${i}x${i}/apps
+ cp icons/${i}x${i}.png $PKG/usr/share/icons/hicolor/${i}x${i}/apps/$PRGNAM.png
+done
+
+# Correct RenameMyTVSeries.desktop file
+cat $PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
+sed -i '4d;12d' $PKG/usr/share/applications/$PRGNAM.desktop
+sed -i \
+ -e "s|Exec=/usr/share/RenameMyTVSeries/RenameMyTVSeries|Exec=/usr/bin/RenameMyTVSeries|" \
+ -e "s|Icon=/usr/share/RenameMyTVSeries/icons/512x512.png|Icon=RenameMyTVSeries|" \
+ -e "s|Categories=Utility;|Categories=AudioVideo;|" \
+ $PKG/usr/share/applications/$PRGNAM.desktop
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ readme.txt \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/RenameMyTVSeries/RenameMyTVSeries.info b/multimedia/RenameMyTVSeries/RenameMyTVSeries.info
new file mode 100644
index 0000000000..4721771092
--- /dev/null
+++ b/multimedia/RenameMyTVSeries/RenameMyTVSeries.info
@@ -0,0 +1,10 @@
+PRGNAM="RenameMyTVSeries"
+VERSION="2.1.7"
+HOMEPAGE="https://www.tweaking4all.com/home-theatre/rename-my-tv-series-v2/"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://www.tweaking4all.com/downloads/betas/RenameMyTVSeries-2.1.7-GTK-beta-Linux-64bit-shared-ffmpeg.tar.gz"
+MD5SUM_x86_64="cfc8a8456b74a611b8f2e3ab329ca936"
+REQUIRES=""
+MAINTAINER="M.Dinslage"
+EMAIL="matthewdinslage@gmail.com"
diff --git a/multimedia/RenameMyTVSeries/doinst.sh b/multimedia/RenameMyTVSeries/doinst.sh
new file mode 100644
index 0000000000..a25271d80c
--- /dev/null
+++ b/multimedia/RenameMyTVSeries/doinst.sh
@@ -0,0 +1,10 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications
+fi
+
+# If other icon themes are installed, then add to/modify this as needed
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/RenameMyTVSeries/slack-desc b/multimedia/RenameMyTVSeries/slack-desc
new file mode 100644
index 0000000000..1578b61c29
--- /dev/null
+++ b/multimedia/RenameMyTVSeries/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+RenameMyTVSeries: RenameMyTVSeries (Rename My TV Series)
+RenameMyTVSeries:
+RenameMyTVSeries: A simple tool to rename TV Show files using TheTVDB.com database.
+RenameMyTVSeries:
+RenameMyTVSeries:
+RenameMyTVSeries:
+RenameMyTVSeries:
+RenameMyTVSeries:
+RenameMyTVSeries:
+RenameMyTVSeries:
+RenameMyTVSeries:
diff --git a/multimedia/SimpleSysexxer/README b/multimedia/SimpleSysexxer/README
index 4794dcfbd7..36762a2985 100644
--- a/multimedia/SimpleSysexxer/README
+++ b/multimedia/SimpleSysexxer/README
@@ -1,2 +1,2 @@
-SimpleSysexxer is a GUI tool to create backups of the memory contents of your
-MIDI devices
+SimpleSysexxer is a GUI tool to create backups of the memory contents
+of your MIDI devices
diff --git a/multimedia/SimpleSysexxer/SimpleSysexxer.SlackBuild b/multimedia/SimpleSysexxer/SimpleSysexxer.SlackBuild
index ecce87f898..e9848b879d 100644
--- a/multimedia/SimpleSysexxer/SimpleSysexxer.SlackBuild
+++ b/multimedia/SimpleSysexxer/SimpleSysexxer.SlackBuild
@@ -1,11 +1,14 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <SimpleSysexxer>
# Written by Michales Michaloudes korgie@gmail.com
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=SimpleSysexxer
VERSION=${VERSION:-0.3}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -15,7 +18,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -50,7 +60,7 @@ find -L . \
-exec chmod 644 {} \;
sed -i "s%-O0 -g3%$SLKCFLAGS%" $PRGNAM.pro
-qmake SimpleSysexxer.pro
+qmake-qt4 SimpleSysexxer.pro
make
# manual copy of translations
@@ -80,4 +90,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/SimpleSysexxer/SimpleSysexxer.info b/multimedia/SimpleSysexxer/SimpleSysexxer.info
index e3d683e838..b0f29434c8 100644
--- a/multimedia/SimpleSysexxer/SimpleSysexxer.info
+++ b/multimedia/SimpleSysexxer/SimpleSysexxer.info
@@ -3,8 +3,8 @@ VERSION="0.3"
HOMEPAGE="http://www.christeck.de/wp/?page_id=24"
DOWNLOAD="http://downloads.sourceforge.net/project/sysexxer/SimpleSysexxer-0.3/SimpleSysexxer-0.3.tar.gz"
MD5SUM="59c1b91089bb15050e3a58aa602332db"
-DOWNLOAD_x86_64="UNTESTED"
+DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="qt4"
MAINTAINER="Michales Michaloudes"
EMAIL="korgie@gmail.com"
diff --git a/multimedia/Yolo/Yolo.SlackBuild b/multimedia/Yolo/Yolo.SlackBuild
index ea2cab2206..086de8d7ee 100644
--- a/multimedia/Yolo/Yolo.SlackBuild
+++ b/multimedia/Yolo/Yolo.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for Yolo Lipsync
# Copyright 2015 klaatu @ member.fsf.org
# Icon for this Yolo package is cc-0 Klaatu
@@ -9,14 +9,24 @@
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=Yolo
VERSION=${VERSION:-"May_04_2009"}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
ARCH="noarch"
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -55,4 +65,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/Yolo/Yolo.info b/multimedia/Yolo/Yolo.info
index 6aa571df25..a604b97fe7 100644
--- a/multimedia/Yolo/Yolo.info
+++ b/multimedia/Yolo/Yolo.info
@@ -5,6 +5,6 @@ DOWNLOAD="http://iweb.dl.sourceforge.net/project/yolo/Yolo/Yolo%20May%2005%20200
MD5SUM="bb137d249f20d4f262c8a30c07871b36"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="jdk"
+REQUIRES="zulu-openjdk8"
MAINTAINER="klaatu"
EMAIL="klaatu@member.fsf.org"
diff --git a/multimedia/abcMIDI/README b/multimedia/abcMIDI/README
index c5ce7f59fa..44eb2495aa 100644
--- a/multimedia/abcMIDI/README
+++ b/multimedia/abcMIDI/README
@@ -1,8 +1,8 @@
-The abcMIDI package contains the following :
+The abcMIDI package contains the following:
abc2midi - a program to convert abc notation to MIDI files.
midi2abc - a program to produce crude abc from a MIDI file.
- abc2abc - a utility to do transposition, error checking and re-formatting
-on an abc file.
+ abc2abc - a utility to do transposition, error checking and
+ re-formatting on an abc file.
yaps - (NEW) utility to convert abc to PostScript based on Michael
-Methfessel's PostScript library for abc2ps.
+ Methfessel's PostScript library for abc2ps.
diff --git a/multimedia/abcMIDI/abcMIDI.SlackBuild b/multimedia/abcMIDI/abcMIDI.SlackBuild
index ffaa67b6a1..e7500a7753 100644
--- a/multimedia/abcMIDI/abcMIDI.SlackBuild
+++ b/multimedia/abcMIDI/abcMIDI.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <abcMIDI.tar.gz>
#
# Michales (clavisound) Michaloudes korgie@gmail.com <2017>
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=abcMIDI
VERSION=${VERSION:-35}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -95,4 +105,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/aces-dev/README b/multimedia/aces-dev/README
index bbb076e3f5..38988847c5 100644
--- a/multimedia/aces-dev/README
+++ b/multimedia/aces-dev/README
@@ -1,29 +1,24 @@
Aces-dev contains reference CTL transforms and documentation meant to
aid implementing the ACES workflow.
-In this package:
-----------------
+## In this package
* Color encoding and metric specs, file format specs, color
transformations, and an open source reference implementation
* Python and a CSH wrapper script from Arri to generate a CTL based on
- Alexa EI setting
+ Alexa EI Setting
-* Documentation on the system and software tools
-
-
-Missing from this package:
---------------------------
+## Not in this package
500mb of reference images (with CTLs applied). You can download
reference images individually or as a ZIP file from the Academy's
-public DropBox account:
+public DropBox account, referenced in the `images` folder after
+installation.
-https://dl.dropboxusercontent.com/content_link_zip/1Fm7ngrWzwj9AHEpn0AIsy74RItDirfO5KVIiLAWAshpEIpIUSFCh1SxmAtIj60x/file
+## Recommended packages
-Recommended
------------
+For this to be useful, you probably also need
-aces_container
-ctl
+* aces_container
+* ctl
diff --git a/multimedia/aces-dev/aces-dev.SlackBuild b/multimedia/aces-dev/aces-dev.SlackBuild
index b175851325..ec10affda1 100644
--- a/multimedia/aces-dev/aces-dev.SlackBuild
+++ b/multimedia/aces-dev/aces-dev.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for aces-dev
-# Copyright 2016 Klaatu, Wellington NZ
+# Copyright 2016-22 Klaatu <klaatu@member.fsf.org>
# All rights reserved.
#
# GNU All-Permissive License
@@ -11,15 +11,25 @@
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=aces-dev
-VERSION=${VERSION:-1.0.2}
+VERSION=${VERSION:-1.3}
BUILD=${BUILD:-1}
DOCDIR=${DOCDIR:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
ARCH="noarch"
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -47,21 +57,21 @@ mkdir -p $PKG/$PREFIX/bin
find . -type f -name "*.py" -exec install -D -m 0755 {} $PKG/$PREFIX/bin/ \;
find . -type f -name "*.csh" -exec install -D -m 0755 {} $PKG/$PREFIX/bin/ \;
-# if you modify this line,
-find ./transforms/ctl/idt/vendorSupplied/arri/alexa/ -depth -name "*.py" -type f -delete
-find ./transforms/ctl/idt/vendorSupplied/arri/alexa/ -depth -name "*.csh" -type f -delete
-# for heavens sake
-# be careful with find and -delete
+## install utilities
+install -D transforms/renameCTL.py $PKG/usr/bin
mkdir -p $PKG/usr/share/$PRGNAM-$VERSION
-rsync -av transforms/ctl/ $PKG/usr/share/$PRGNAM-$VERSION/
+rsync -av formats $PKG/usr/share/$PRGNAM-$VERSION/
+rsync -av transforms/ctl $PKG/usr/share/$PRGNAM-$VERSION/
+rsync -av images $PKG/usr/share/$PRGNAM-$VERSION/
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a documents/LaTeX images CHANGELOG.md LICENSE.md README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a CHANGELOG.md LICENSE.md README.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/aces-dev/aces-dev.info b/multimedia/aces-dev/aces-dev.info
index fdb2b01f98..9011db2983 100644
--- a/multimedia/aces-dev/aces-dev.info
+++ b/multimedia/aces-dev/aces-dev.info
@@ -1,10 +1,10 @@
PRGNAM="aces-dev"
-VERSION="1.0.2"
+VERSION="1.3"
HOMEPAGE="https://www.oscars.org/science-technology/sci-tech-projects/aces"
-DOWNLOAD="https://github.com/ampas/aces-dev/archive/v1.0.2/aces-dev-1.0.2.tar.gz"
-MD5SUM="66af1b9098515b9ca4d15560bf486214"
+DOWNLOAD="https://github.com/ampas/aces-dev/archive/v1.3/aces-dev-1.3.tar.gz"
+MD5SUM="b9a7b1c8ca2508545d93d53ff2b6fcad"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="numpy"
+REQUIRES="python2-numpy"
MAINTAINER="Klaatu"
EMAIL="klaatu@member.fsf.org"
diff --git a/multimedia/aces_container/aces_container.SlackBuild b/multimedia/aces_container/aces_container.SlackBuild
index f338ff3ef5..3562bc9c95 100644
--- a/multimedia/aces_container/aces_container.SlackBuild
+++ b/multimedia/aces_container/aces_container.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for aces_container
-# Copyright 2016 Klaatu
+# Copyright 2016-22 Klaatu
# All rights reserved.
#
# GNU All-Permissive License
@@ -11,10 +11,13 @@
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=aces_container
-VERSION=${VERSION:-1.0.1}
+VERSION=${VERSION:-1.0.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -24,7 +27,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -86,4 +96,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/aces_container/aces_container.info b/multimedia/aces_container/aces_container.info
index c716c665d1..2f587638e2 100644
--- a/multimedia/aces_container/aces_container.info
+++ b/multimedia/aces_container/aces_container.info
@@ -1,8 +1,8 @@
PRGNAM="aces_container"
-VERSION="1.0.1"
+VERSION="1.0.2"
HOMEPAGE="http://www.oscars.org/aces"
-DOWNLOAD="https://github.com/ampas/aces_container/archive/v1.0.1/aces_container-1.0.1.tar.gz"
-MD5SUM="8c7317267b9feed95187e19f7a573917"
+DOWNLOAD="https://github.com/ampas/aces_container/archive/v1.0.2/aces_container-1.0.2.tar.gz"
+MD5SUM="b82364639768d650dd45e6085b429fb6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/acetoneiso/README b/multimedia/acetoneiso/README
index 6a29b3e2ca..d62f62b188 100644
--- a/multimedia/acetoneiso/README
+++ b/multimedia/acetoneiso/README
@@ -1,11 +1,18 @@
AcetoneISO (CD/DVD image manipulator for GNU/Linux)
-AcetoneISO is a feature-rich and complete software application to
-manage CD/DVD images. AcetoneISO will let You mount typical
-proprietary images formats of the Windows world such as ISO BIN NRG
-MDF IMG and do plenty of other things.
+AcetoneISO is a feature-rich and complete software application
+to manage CD/DVD images. AcetoneISO will let You mount typical
+proprietary images formats of the Windows world such as ISO BIN
+NRG MDF IMG and do plenty of other things.
Some features you can see in /usr/doc/$PRGNAM-$VERSION/FEATURES.
-To create images from folders this suggest "xorriso" from AlienBob's
-repository: http://www.slackware.com/~alien/slackbuilds/xorriso/
+For image conversion you would need PowerISO which can be
+found in https://www.poweriso.com/poweriso-1.3.tar.gz
+extract and put it in $HOME/.acetoneiso
+
+If for some reason cdrtools doesn't work with acetoneiso
+use cdrkit from SBo and uninstall cdrtools.
+
+xorriso comes with Slackware so there is no need to install
+it from AlienBob's repository
diff --git a/multimedia/acetoneiso/acetoneiso b/multimedia/acetoneiso/acetoneiso
deleted file mode 100644
index f8155df961..0000000000
--- a/multimedia/acetoneiso/acetoneiso
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-cd /usr/share/acetoneiso
-exec /usr/share/acetoneiso/acetoneiso
diff --git a/multimedia/acetoneiso/acetoneiso.SlackBuild b/multimedia/acetoneiso/acetoneiso.SlackBuild
index 8a74085826..edd78e39b6 100644
--- a/multimedia/acetoneiso/acetoneiso.SlackBuild
+++ b/multimedia/acetoneiso/acetoneiso.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
-#
-# Slackware build script for acetoneiso.
-#
+#!/bin/bash
+
+# Slackware build script for acetoneiso
+
# Copyright 2016-2020 Edinaldo P. Silva, Rio de Janeiro, Brazil.
+# Copyright 2022 Vijay Marcel
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,47 +23,85 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=acetoneiso
-VERSION=${VERSION:-2.4}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-2.4.3}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
+ i?86)
+ DEBARCH=i386
+ ARCH=i586
+ LIBDIRSUFFIX=""
+ ;;
+ x86_64)
+ DEBARCH=amd64
+ ARCH=x86_64
+ LIBDIRSUFFIX="64"
+ ;;
+ # unsupported
+ *)
+ echo "ARCH $( uname -m ) is unsupported"
+ exit 1
+ ;;
+ esac
+else
+ case "$ARCH" in
+ i?86)
+ DEBARCH=i386
+ LIBDIRSUFFIX=""
+ ;;
+ x86_64)
+ DEBARCH=amd64
+ LIBDIRSUFFIX="64"
+ ;;
+ # unsupported
+ *)
+ echo "$ARCH is unsupported"
+ exit 1
+ ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/${PRGNAM}_${VERSION}.orig.tar.gz
-mv ${PRGNAM}${VERSION} $PRGNAM-$VERSION
-cd $PRGNAM-$VERSION
+mkdir -pv $PRGNAM
+cd $PRGNAM
+
+if [ "$DEBARCH" = "i386" ]; then
+ mv -v $CWD/acetoneiso_2.4-3+b1_i386.deb $CWD/$PRGNAM-$VERSION.deb
+ ar -x $CWD/$PRGNAM-$VERSION.deb
+ tar xvf data.tar.xz -C $PKG
+elif [ "$DEBARCH" = "amd64" ]; then
+ mv -v $CWD/acetoneiso_2.4-3+b1_amd64.deb $CWD/$PRGNAM-$VERSION.deb
+ ar -x $CWD/$PRGNAM-$VERSION.deb
+ tar xvf data.tar.xz -C $PKG
+else
+ echo "This program is not supported for your System Architecture"
+fi
+
+cd $PKG
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -70,37 +109,25 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-cd $PRGNAM/sources
- sed -i 's#<Phonon/#<phonon/#' erase_cd.cpp erase_dvd.cpp \
- burn_iso_2_cd.cpp burn_iso_2_dvd.cpp
cd ..
-qmake
-make
-make install DESTDIR=$PKG
-
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-install -d $PKG/usr/{bin,share/{acetoneiso,applications,pixmaps}}
-install -D -m755 $CWD/acetoneiso $PKG/usr/bin/acetoneiso
-install -D -m755 acetoneiso $PKG/usr/share/acetoneiso/acetoneiso
-cp -a {images,locale,manual,ui} $PKG/usr/share/acetoneiso
-install -D -m644 menu/AcetoneISO.desktop $PKG/usr/share/applications/AcetoneISO.desktop
-install -D -m644 images/Acetino2.png $PKG/usr/share/pixmaps/Acetino2.png
+mv -v $PKG/usr/share/man $PKG/usr/
+rm -rvf $PKG/usr/share/man
-DOCS="../AUTHORS ../CHANGELOG ../FEATURES ../LICENSE ../README ../TODO"
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
+mv -v $PKG/usr/share/doc/acetoneiso/* $PKG/usr/doc/$PRGNAM-$VERSION
+rm -rvf $PKG/usr/share/doc/
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-# create a symlink to unrar-nonfree:
-ln -s /usr/bin/unrar $PKG/usr/bin/unrar-nonfree
-
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/acetoneiso/acetoneiso.info b/multimedia/acetoneiso/acetoneiso.info
index 9c7c255782..9ceb58f79f 100644
--- a/multimedia/acetoneiso/acetoneiso.info
+++ b/multimedia/acetoneiso/acetoneiso.info
@@ -1,10 +1,10 @@
PRGNAM="acetoneiso"
-VERSION="2.4"
-HOMEPAGE="https://launchpad.net/acetoneiso"
-DOWNLOAD="https://launchpad.net/ubuntu/+archive/primary/+files/acetoneiso_2.4.orig.tar.gz"
-MD5SUM="354716f43e4a3866ece823e00f719959"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="ffmpeg p7zip fuseiso cdrkit unrar"
-MAINTAINER="orphaned - no maintainer"
-EMAIL="nobody@nowhere"
+VERSION="2.4.3"
+HOMEPAGE="https://packages.debian.org/bullseye/acetoneiso"
+DOWNLOAD="http://http.us.debian.org/debian/pool/main/a/acetoneiso/acetoneiso_2.4-3+b1_i386.deb"
+MD5SUM="ec4e63fbe75beedc13a1447f72e5e2f2"
+DOWNLOAD_x86_64="http://http.us.debian.org/debian/pool/main/a/acetoneiso/acetoneiso_2.4-3+b1_amd64.deb"
+MD5SUM_x86_64="24ea0feccc4607457cde50163303c74e"
+REQUIRES="fuseiso p7zip youtube-dl"
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/acetoneiso/slack-desc b/multimedia/acetoneiso/slack-desc
index 3b2526be3b..697a1982ff 100644
--- a/multimedia/acetoneiso/slack-desc
+++ b/multimedia/acetoneiso/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-acetoneiso: acetoneiso (CD/DVD image manipulator for GNU/Linux)
+acetoneiso: acetoneiso (CD/DVD Image Manipulator for GNU/Linux)
acetoneiso:
-acetoneiso: AcetoneISO is a feature-rich and complete software application to
-acetoneiso: manage CD/DVD images. AcetoneISO will let You mount typical
-acetoneiso: proprietary images formats of the Windows world such as ISO BIN NRG
-acetoneiso: MDF IMG and do plenty of other things.
+acetoneiso: AcetoneISO is a feature rich and complete software solution
+acetoneiso: to manage CD/DVD images. It will let you mount proprietary
+acetoneiso: image formats such as ISO,NRG,MDF,BIN,IMG and do plenty of
+acetoneiso: other things.
acetoneiso:
-acetoneiso: Home page: https://launchpad.net/acetoneiso
+acetoneiso: Homepage:https://packages.debian.org/bullseye/acetoneiso
acetoneiso:
acetoneiso:
acetoneiso:
diff --git a/multimedia/aegisub/README b/multimedia/aegisub/README
index 8abce30271..267d701606 100644
--- a/multimedia/aegisub/README
+++ b/multimedia/aegisub/README
@@ -1,3 +1,3 @@
-A general-purpose subtitle editor with ASS/SSA support
+A general-purpose subtitle editor
-Optional dependencies: PulseAudio, OpenAL, and PortAudio
+Optional dependency: portaudio
diff --git a/multimedia/aegisub/aegisub.SlackBuild b/multimedia/aegisub/aegisub.SlackBuild
index 0bdf6b18bb..333ac97d46 100644
--- a/multimedia/aegisub/aegisub.SlackBuild
+++ b/multimedia/aegisub/aegisub.SlackBuild
@@ -1,6 +1,6 @@
-#!/bin/sh
+#!/bin/bash
-# Copyright 2014-2017 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
+# Copyright 2014-2023 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,12 +20,14 @@
# OTHERWISE) ARISING IN ANY WAY OUTPUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=aegisub
-VERSION=${VERSION:-3.2.2}
+SRCNAM=Aegisub
+VERSION=${VERSION:-3.3.3}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
-
-MVER=3.2
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +37,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -59,21 +65,25 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
-cd $PRGNAM-$VERSION
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
+cd $SRCNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
-sed 's/$(LIBS_BOOST) $(LIBS_ICU)/$(LIBS_BOOST) $(LIBS_ICU) -pthread/' -i tools/Makefile
+# Patch for current
+patch -p1 < $CWD/boost-1.81.0.patch
+autoreconf -fiv
LDFLAGS="$LDFLAGS -lz" \
CFLAGS="$SLKCFLAGS" \
+CPPFLAGS+=' -DU_USING_ICU_NAMESPACE=1' \
CXXFLAGS="$SLKCFLAGS" \
+FORCE_GIT_VERSION="TRUE" \
./configure \
--prefix=/usr \
--docdir=/usr/doc/$PRGNAM-$VERSION \
@@ -82,22 +92,16 @@ CXXFLAGS="$SLKCFLAGS" \
make
make install DESTDIR=$PKG
-ln -s $PRGNAM-$MVER $PKG/usr/bin/$PRGNAM
-
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-rm -f $PKG/usr/bin/aegisub
-(
- cd $PKG/usr/bin
- ln -s aegisub-$MVER aegisub
-)
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a README.md LICENCE $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-${VERSION}-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/aegisub/aegisub.info b/multimedia/aegisub/aegisub.info
index a1c1451829..2f11f77bec 100644
--- a/multimedia/aegisub/aegisub.info
+++ b/multimedia/aegisub/aegisub.info
@@ -1,10 +1,10 @@
PRGNAM="aegisub"
-VERSION="3.2.2"
-HOMEPAGE="http://www.aegisub.org/"
-DOWNLOAD="http://ftp.aegisub.org/pub/archives/releases/source/aegisub-3.2.2.tar.xz"
-MD5SUM="d80e852c34811add358c06d77f5cd40d"
+VERSION="3.3.3"
+HOMEPAGE="https://github.com/wangqr/Aegisub/"
+DOWNLOAD="https://github.com/wangqr/Aegisub/archive/v3.3.3/Aegisub-3.3.3.tar.gz"
+MD5SUM="08d7750b8b7732b790e9756ca3195baf"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="libass lua ffms2 wxGTK3"
+REQUIRES="libass lua ffms2 wxGTK3 libuchardet"
MAINTAINER="Willy Sudiarto Raharjo"
EMAIL="willysr@slackbuilds.org"
diff --git a/multimedia/aegisub/boost-1.81.0.patch b/multimedia/aegisub/boost-1.81.0.patch
new file mode 100644
index 0000000000..ac264bc706
--- /dev/null
+++ b/multimedia/aegisub/boost-1.81.0.patch
@@ -0,0 +1,56 @@
+diff --git a/libaegisub/include/libaegisub/lua/utils.h b/libaegisub/include/libaegisub/lua/utils.h
+index c5a65d6e4..f4921d582 100644
+--- a/libaegisub/include/libaegisub/lua/utils.h
++++ b/libaegisub/include/libaegisub/lua/utils.h
+@@ -87,7 +87,10 @@ int exception_wrapper(lua_State *L) {
+
+ template<typename T>
+ void set_field(lua_State *L, const char *name, T value) {
+- push_value(L, value);
++ if constexpr(std::is_convertible<T, std::string>::value)
++ push_value(L, static_cast<std::string>(value));
++ else
++ push_value(L, value);
+ lua_setfield(L, -2, name);
+ }
+
+diff --git a/src/auto4_lua.cpp b/src/auto4_lua.cpp
+index 245689679..6d479b2c3 100644
+--- a/src/auto4_lua.cpp
++++ b/src/auto4_lua.cpp
+@@ -115,7 +115,8 @@ namespace {
+ int get_translation(lua_State *L)
+ {
+ wxString str(check_wxstring(L, 1));
+- push_value(L, _(str).utf8_str());
++ const char* val = static_cast<const char*>( _(str).utf8_str());
++ push_value(L, val);
+ return 1;
+ }
+
+diff --git a/src/command/video.cpp b/src/command/video.cpp
+index fb2bcb0ba..77e3e9ca7 100644
+--- a/src/command/video.cpp
++++ b/src/command/video.cpp
+@@ -475,7 +475,7 @@ static void save_snapshot(agi::Context *c, bool raw) {
+ // If where ever that is isn't defined, we can't save there
+ if ((basepath == "\\") || (basepath == "/")) {
+ // So save to the current user's home dir instead
+- basepath = wxGetHomeDir().c_str();
++ basepath = static_cast<const char*>(wxGetHomeDir().c_str());
+ }
+ }
+ // Actual fixed (possibly relative) path, decode it
+diff --git a/src/dialog_attachments.cpp b/src/dialog_attachments.cpp
+index 38ff53027..e30339f81 100644
+--- a/src/dialog_attachments.cpp
++++ b/src/dialog_attachments.cpp
+@@ -161,7 +161,7 @@ void DialogAttachments::OnExtract(wxCommandEvent &) {
+
+ // Multiple or single?
+ if (listView->GetNextSelected(i) != -1)
+- path = wxDirSelector(_("Select the path to save the files to:"), to_wx(OPT_GET("Path/Fonts Collector Destination")->GetString())).c_str();
++ path = static_cast<const char*>(wxDirSelector(_("Select the path to save the files to:"), to_wx(OPT_GET("Path/Fonts Collector Destination")->GetString())).c_str());
+ else {
+ path = SaveFileSelector(
+ _("Select the path to save the file to:"),
diff --git a/multimedia/aegisub/slack-desc b/multimedia/aegisub/slack-desc
index 053d304d0a..a29184e5ba 100644
--- a/multimedia/aegisub/slack-desc
+++ b/multimedia/aegisub/slack-desc
@@ -8,10 +8,10 @@
|-----handy-ruler------------------------------------------------------|
aegisub: aegisub (General-purpose subtitle editor)
aegisub:
-aegisub: A general-purpose subtitle editor with ASS/SSA support
+aegisub: A general-purpose subtitle editor
aegisub:
aegisub:
-aegisub: Project Site: https://code.google.com/p/aegisub/
+aegisub: Project Site: https://github.com/wangqr/Aegisub
aegisub:
aegisub:
aegisub:
diff --git a/multimedia/anyremote/README b/multimedia/anyremote/README
index 51fe66945a..198129cbe0 100644
--- a/multimedia/anyremote/README
+++ b/multimedia/anyremote/README
@@ -1,19 +1,23 @@
-The overall goal of this project is to provide remote control service on Linux
-through Bluetooth, InfraRed, Wi-Fi or TCP/IP connection.
+The overall goal of this project is to provide remote control service
+on Linux through Bluetooth, InfraRed, Wi-Fi or TCP/IP connection.
-anyRemote supports wide range of modern cell phones line Nokia, SonyEricsson,
-Motorola and others.
+anyRemote supports wide range of modern cell phones line Nokia,
+SonyEricsson, Motorola and others.
-anyRemote was developed as a thin "communication" layer between Buetooth
-(IR, Wi-Fi)-capabled phone and Linux, and in principle could be configured
-to manage almost any software.
+anyRemote was developed as a thin "communication" layer between
+Buetooth (IR, Wi-Fi)-capabled phone and Linux, and in principle could
+be configured to manage almost any software.
anyRemote could be used with:
- * bluetooth connection with java client if cell phone is JSR82 compatible
+ * bluetooth connection with java client if cell phone is JSR82
+ compatible
* Wi-Fi connection with java client if phone supports Wi-Fi
- * IR connection with java client if java in phone supports access to IR port
- * TCP/IP connection with java client, if PC is connectable from internet
+ * IR connection with java client if java in phone supports access
+ to IR port
+ * TCP/IP connection with java client, if PC is connectable from
+ internet
* bluetooth, infrared or cable connection using AT "modem" commands
* web interface
- * it supports some of IR remotes supplied with TV tuner cards (like LIRC)
+ * it supports some of IR remotes supplied with TV tuner cards (like
+ LIRC)
* it has limited support for Bemused clients
diff --git a/multimedia/anyremote/anyremote.SlackBuild b/multimedia/anyremote/anyremote.SlackBuild
index 4aaf8f08e8..576975c76c 100644
--- a/multimedia/anyremote/anyremote.SlackBuild
+++ b/multimedia/anyremote/anyremote.SlackBuild
@@ -1,29 +1,39 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for anyRemote
# Written by otzy_007 (oz [at] oprod [dot] net)
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=anyremote
VERSION=${VERSION:-6.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -81,4 +91,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/aom/README b/multimedia/aom/README
new file mode 100644
index 0000000000..dbddf20cbb
--- /dev/null
+++ b/multimedia/aom/README
@@ -0,0 +1,7 @@
+AOMedia Video 1 (AV1) is an Open Source video codec designed for
+video transmission over the Internet. AV1 is planned to surpass
+VP9 and also to eventually be a competitor with HEVC/H.265.
+
+This script builds the encoder aomenc, the decoder aomdec as well
+as shared libraries which can be utilised by suitable versions of
+both FFmpeg and vlc.
diff --git a/multimedia/aom/aom.SlackBuild b/multimedia/aom/aom.SlackBuild
new file mode 100644
index 0000000000..1045d3e0a3
--- /dev/null
+++ b/multimedia/aom/aom.SlackBuild
@@ -0,0 +1,126 @@
+#!/bin/bash
+# ----------------------------------------------------------------------
+# Slackware build script for aom
+#
+# Copyright (c) 2018-2023 Andrew Strong, Blue Mountains, Australia.
+#
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+# 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.
+# ----------------------------------------------------------------------
+
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=aom
+# The 'official' archive for the aom 3.6.0 release has the git commit in
+# the filename, so adjustments are required for a sane Slackware build:
+VERSION=${VERSION:-3.6.0}
+GITCOMMIT=${GITCOMMIT:-3c65175b1972da4a1992c1dae2365b48d13f9a8d}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+mkdir -p $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$GITCOMMIT.tar.gz -C $TMP/$PRGNAM-$VERSION
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+cd build
+
+ # I don't build either the HTML or the Latex docs as IMHO at this stage
+ # of aom development they are still not terribly useful for non-developers.
+ # To enable these docs change '-DENABLE_DOCS=0' below to '1' to build
+ # the docs and then uncomment the 'extra docs' section below to install them...
+
+ cmake \
+ -G "Unix Makefiles" \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} \
+ -DCMAKE_INSTALL_INCLUDEDIR=include \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DENABLE_NASM=1 \
+ -DENABLE_DOCS=0 \
+ -DBUILD_SHARED_LIBS=1 \
+ -DENABLE_TESTS=0 \
+ ../
+ make -j1
+ make install DESTDIR=$PKG
+cd ..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS CHANGELOG LICENSE PATENTS README.md Sample.cfg $PKG/usr/doc/$PRGNAM-$VERSION
+
+# These are the 'extra docs', more details above...
+# mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/{html,latex}
+# cp -a build/docs/html/* $PKG/usr/doc/$PRGNAM-$VERSION/html
+# cp -a build/docs/latex/* $PKG/usr/doc/$PRGNAM-$VERSION/latex
+
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/aom/aom.info b/multimedia/aom/aom.info
new file mode 100644
index 0000000000..815f782382
--- /dev/null
+++ b/multimedia/aom/aom.info
@@ -0,0 +1,10 @@
+PRGNAM="aom"
+VERSION="3.6.0"
+HOMEPAGE="https://aomedia.googlesource.com/aom"
+DOWNLOAD="http://www.andrews-corner.org/downloads/aom-3c65175b1972da4a1992c1dae2365b48d13f9a8d.tar.gz"
+MD5SUM="4c73a44a710688e8c496b3740ecee84b"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Andrew Strong"
+EMAIL="andrew.david.strong@gmail.com"
diff --git a/multimedia/aom/slack-desc b/multimedia/aom/slack-desc
new file mode 100644
index 0000000000..981c25fff9
--- /dev/null
+++ b/multimedia/aom/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+aom: aom (Open Source Video Codec)
+aom:
+aom: AOMedia Video 1 (AV1) is designed to be the successor to VP9 and
+aom: also to eventually be a direct competitor for HEVC/H.265.
+aom: This Slackbuild builds the 'reference' encoder aomenc as well as
+aom: the 'reference' decoder aomdec.
+aom:
+aom: Homepage: https://aomedia.googlesource.com/aom
+aom:
+aom:
+aom:
diff --git a/multimedia/apetag/README b/multimedia/apetag/README
index 35ab63e86d..e25e75e546 100644
--- a/multimedia/apetag/README
+++ b/multimedia/apetag/README
@@ -1,2 +1,4 @@
+apetag (command line APE 2.0 tagger)
+
Apetag is command line tagging tool for music files such
as Monkey's Audio and Musepack using the APE 2.0 standard.
diff --git a/multimedia/apetag/apetag.SlackBuild b/multimedia/apetag/apetag.SlackBuild
index c7b92916cc..7ee1e22e4a 100644
--- a/multimedia/apetag/apetag.SlackBuild
+++ b/multimedia/apetag/apetag.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for apetag
@@ -22,19 +22,23 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# Now maintained by B. Watson <yalhcru@gmail.com>
+# Now maintained by B. Watson <urchlay@slackware.uk>
+# 20210910 bkw: BUILD=3, fix HTML doc.
# 20160817 bkw:
# - take over maintenance
# - BUILD=2
# - actually use SLKCFLAGS
# - i486 => i586
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=apetag
SRCNAM=Apetag
VERSION=${VERSION:-1.12}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -44,7 +48,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -72,11 +80,11 @@ rm -rf $SRCNAM
tar xvf $CWD/$PRGNAM.$VERSION.tar.gz
cd $SRCNAM
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+# 20210910 bkw: these hyperlinks don't work, get rid of 'em.
+sed -i '/href="\(00changes\|apetag\.1\)/d' index.html
make CXXOPT="$SLKCFLAGS" CXXDEBUG="-Wno-error"
strip $PRGNAM
@@ -92,4 +100,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/apetag/apetag.info b/multimedia/apetag/apetag.info
index 2d743f04a9..4c7851cd8d 100644
--- a/multimedia/apetag/apetag.info
+++ b/multimedia/apetag/apetag.info
@@ -1,10 +1,10 @@
PRGNAM="apetag"
VERSION="1.12"
-HOMEPAGE="http://www.muth.org/Robert/Apetag/"
-DOWNLOAD="http://www.muth.org/Robert/Apetag/apetag.1.12.tar.gz"
+HOMEPAGE="https://robert.muth.org/Apetag/"
+DOWNLOAD="https://robert.muth.org/Apetag/apetag.1.12.tar.gz"
MD5SUM="f47a2fc02ea88018afd05e8a16f11235"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/apetag/slack-desc b/multimedia/apetag/slack-desc
index 968caef47b..29d632d044 100644
--- a/multimedia/apetag/slack-desc
+++ b/multimedia/apetag/slack-desc
@@ -6,13 +6,13 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-apetag: apetag (A command line ape 2.0 tagger)
+apetag: apetag (command line APE 2.0 tagger)
apetag:
apetag: Apetag is command line tagging tool for music files such as Monkey's
apetag: Audio and Musepack using the APE 2.0 standard.
apetag:
apetag:
-apetag: http://www.muth.org/Robert/Apetag/
+apetag:
apetag:
apetag:
apetag:
diff --git a/multimedia/audio-recorder/README b/multimedia/audio-recorder/README
index 1e6343d584..f49af0dcf5 100644
--- a/multimedia/audio-recorder/README
+++ b/multimedia/audio-recorder/README
@@ -1,22 +1,22 @@
- Audio-recorder (Audio recorder for GNOME and Unity Desktops)
+Audio-recorder (Audio recorder for GNOME and Unity Desktops)
- This amazing program allows you to record your favourite music and
- audio to a file. It can record audio from your system's sound card,
- microphones, browsers, webcams & more. Put simply; if it plays out
- of your loudspeakers you can record it.
+This amazing program allows you to record your favourite music and
+audio to a file. It can record audio from your system's sound card,
+microphones, browsers, webcams & more. Put simply; if it plays out
+of your loudspeakers you can record it.
- It has an advanced timer that can:
+It has an advanced timer that can:
* Start, stop or pause recording at a given clock time.
* Start, stop or pause after a time period.
* Stop when the recorded file size exceeds a limit.
* Start recording on voice or sound (user can set the audio
- threshold).
+ threshold).
* Stop or pause recording on "silence" (user can set the audio
- threshold and delay).
-
- After you first run the application it will autostart at every login,
- you can disable this in the "Additional settings". It also offers a
- convenient appindicator.
+ threshold and delay).
- Optional dependencies to record MP3 and M4A formats:
- gst-plugins-ugly gst-plugins-bad \ No newline at end of file
+After you first run the application it will autostart at every login,
+you can disable this in the "Additional settings". It also offers a
+convenient appindicator.
+
+Optional dependencies to record MP3 and M4A formats:
+gst-plugins-ugly gst-plugins-bad
diff --git a/multimedia/audio-recorder/audio-recorder.SlackBuild b/multimedia/audio-recorder/audio-recorder.SlackBuild
index e5108fab81..0687f58c4c 100644
--- a/multimedia/audio-recorder/audio-recorder.SlackBuild
+++ b/multimedia/audio-recorder/audio-recorder.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Slackware build script for audio-recorder
#
@@ -22,15 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=audio-recorder
VERSION=${VERSION:-2.2.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -40,6 +38,15 @@ if [ -z "$ARCH" ]; then
esac
fi
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
@@ -65,9 +72,9 @@ cd $PRGNAM
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
aclocal
autoconf
@@ -81,13 +88,8 @@ CFLAGS="$SLKCFLAGS" \
--build=$ARCH-slackware-linux
make
-make install DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+make install-strip DESTDIR=$PKG
+gzip -9 $PKG/usr/man/man*/*
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a COPYING ChangeLog README \
@@ -99,4 +101,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/audio-recorder/audio-recorder.info b/multimedia/audio-recorder/audio-recorder.info
index 52de5352b5..e03cf133c1 100644
--- a/multimedia/audio-recorder/audio-recorder.info
+++ b/multimedia/audio-recorder/audio-recorder.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://launchpad.net/audio-recorder/trunk/stable/+download/audio-reco
MD5SUM="073fce8423e610b9b2f5eb7e92e729ee"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="libappindicator3"
+REQUIRES=""
MAINTAINER="Alexander Schultz"
-EMAIL="alexander_schultz@posteo.se" \ No newline at end of file
+EMAIL="alexander_schultz@posteo.se"
diff --git a/multimedia/audiopreview/README b/multimedia/audiopreview/README
index 8d57408e18..020d938149 100644
--- a/multimedia/audiopreview/README
+++ b/multimedia/audiopreview/README
@@ -1,10 +1,12 @@
-AudioPreview is a small command-line tool for Linux that can play previews of:
+AudioPreview is a small command-line tool for Linux that can play
+previews of:
+
* Audio Files
- o mp3, ogg, flac, rm, wma...
+ mp3, ogg, flac, rm, wma...
* Video Files
- o avi, mpg, ogg, mkv, ...
+ avi, mpg, ogg, mkv, ...
* Internet Streams
- o radio stations, video streams and audio streams, ...
+ radio stations, video streams and audio streams, ...
-For additional codec support install the optional dependencies
-gst0-plugins-bad, gst0-plugins-ugly, and gst0-ffmpeg (for video support).
+For additional codec support, install the optional dependencies
+gst0-plugins-ugly and gst0-ffmpeg (for video support).
diff --git a/multimedia/audiopreview/audiopreview.SlackBuild b/multimedia/audiopreview/audiopreview.SlackBuild
index e194bfadf1..4483e79a90 100644
--- a/multimedia/audiopreview/audiopreview.SlackBuild
+++ b/multimedia/audiopreview/audiopreview.SlackBuild
@@ -1,13 +1,16 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for audiopreview
# Written by Larry Hajali <larryhaja[at]gmail[dot]com>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=audiopreview
VERSION=${VERSION:-0.6}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -17,7 +20,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -47,11 +54,11 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
-CFLAGS="$SLKCFLAGS" \
+CFLAGS="$SLKCFLAGS -fcommon" \
./configure \
--prefix=/usr \
--mandir=/usr/man \
@@ -77,4 +84,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/audiopreview/audiopreview.info b/multimedia/audiopreview/audiopreview.info
index e11416c532..30010de22b 100644
--- a/multimedia/audiopreview/audiopreview.info
+++ b/multimedia/audiopreview/audiopreview.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://launchpad.net/audiopreview/0.x/0.6/+download/audiopreview-0.6.
MD5SUM="120f3ba6197c8008d8281e39874e3186"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="gstreamer0"
MAINTAINER="Larry Hajali"
EMAIL="larryhaja[at]gmail[dot]com"
diff --git a/multimedia/avidemux/README b/multimedia/avidemux/README
index 18c21f4f53..39e6cb56a1 100644
--- a/multimedia/avidemux/README
+++ b/multimedia/avidemux/README
@@ -1,6 +1,8 @@
-Avidemux is a free video editor designed for simple cutting, filtering and
-encoding tasks. It supports many file types, including AVI, DVD compatible
-MPEG files, MP4 and ASF, using a variety of codecs. Tasks can be automated
-using projects, job queue and powerful scripting capabilities.
+Avidemux is a free video editor designed for simple cutting, filtering
+and encoding tasks. It supports many file types, including AVI, DVD
+compatible MPEG files, MP4 and ASF, using a variety of codecs. Tasks
+can be automated using projects, job queue and powerful scripting
+capabilities.
-Optional dependencies are aften, amrnb, jack, nv-codec-headers, and x265.
+Optional dependencies are aften, amrnb, jack, nv-codec-headers,
+and x265.
diff --git a/multimedia/avidemux/avidemux.SlackBuild b/multimedia/avidemux/avidemux.SlackBuild
index e1ae707bad..37202fb9d3 100644
--- a/multimedia/avidemux/avidemux.SlackBuild
+++ b/multimedia/avidemux/avidemux.SlackBuild
@@ -1,11 +1,11 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for avidemux
# Derived from a SlackBuild by Eric Hameleers.
# Copyright 2009, 2010, 2011, 2013 Eric Hameleers, Eindhoven, NL
# Copyright 2015 John Vogel Corning, NY USA
-# Copyright 2017-2019 Matteo Bernardini, Pisa, IT
+# Copyright 2017-2022 Matteo Bernardini, Pisa, IT
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,10 +25,16 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220402 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - man page was getting installed as a *file* called /usr/man/man1. fix.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=avidemux
-VERSION=${VERSION:-2.7.4}
+VERSION=${VERSION:-2.8.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -38,7 +44,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -70,9 +80,12 @@ cd ${PRGNAM}_${VERSION}
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+
+# Thanks FreeBSD guys!
+[[ "$ARCH" = "i586" ]] && patch -p0 < $CWD/extra-patch-i386-nosse.patch
sed -i 's|../avidemux/qt4|../avidemux/qt4 -DLRELEASE_EXECUTABLE=/usr/bin/lrelease-qt5|' bootStrap.bash || exit 1
sed -i 's|0.19|1.0|' avidemux_plugins/ADM_videoFilters6/ass/CMakeLists.txt || exit 1
@@ -85,7 +98,8 @@ make -C buildPluginsCLI DESTDIR="$PKG" install
make -C buildPluginsCommon DESTDIR="$PKG" install
install -Dm 644 avidemux_icon.png $PKG/usr/share/pixmaps/avidemux.png
-install -Dm 644 man/avidemux.1 $PKG/usr/man/man1
+mkdir -p $PKG/usr/man/man1
+gzip -9c < man/avidemux.1 > $PKG/usr/man/man1/avidemux.1.gz
make -C buildQt5 DESTDIR="$PKG" install
make -C buildPluginsQt5 DESTDIR="$PKG" install
@@ -102,4 +116,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/${PRGNAM}-${VERSION}-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/avidemux/avidemux.info b/multimedia/avidemux/avidemux.info
index bafc51fb4f..948c45dcc6 100644
--- a/multimedia/avidemux/avidemux.info
+++ b/multimedia/avidemux/avidemux.info
@@ -1,10 +1,10 @@
PRGNAM="avidemux"
-VERSION="2.7.4"
+VERSION="2.8.1"
HOMEPAGE="http://avidemux.org"
-DOWNLOAD="http://downloads.sf.net/avidemux/avidemux_2.7.4.tar.gz"
-MD5SUM="87b4dd1ef3a1f695b3d0f9971da8abde"
+DOWNLOAD="http://downloads.sf.net/avidemux/avidemux_2.8.1.tar.gz"
+MD5SUM="fee41934cba460ec0fde2a453d5a6307"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="faac faad2 lame libdca qt5 x264 xvidcore"
+REQUIRES="faac faad2 libdca x264 xvidcore"
MAINTAINER="Matteo Bernardini"
EMAIL="ponce@slackbuilds.org"
diff --git a/multimedia/avidemux/extra-patch-i386-nosse.patch b/multimedia/avidemux/extra-patch-i386-nosse.patch
new file mode 100644
index 0000000000..fbad75fb59
--- /dev/null
+++ b/multimedia/avidemux/extra-patch-i386-nosse.patch
@@ -0,0 +1,14 @@
+--- avidemux/common/ADM_audioFilter/src/ADM_soundtouch/STTypes.h.orig 2022-09-17 13:59:16 UTC
++++ avidemux/common/ADM_audioFilter/src/ADM_soundtouch/STTypes.h
+@@ -153,11 +153,6 @@ namespace soundtouch
+ // efficient autovectorization
+ typedef float LONG_SAMPLETYPE;
+
+- #ifdef SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS
+- // Allow SSE optimizations
+- #define SOUNDTOUCH_ALLOW_SSE 1
+- #endif
+-
+ #endif // SOUNDTOUCH_INTEGER_SAMPLES
+
+ #if ((SOUNDTOUCH_ALLOW_SSE) || (__SSE__) || (SOUNDTOUCH_USE_NEON))
diff --git a/multimedia/bdtools/bdtools.SlackBuild b/multimedia/bdtools/bdtools.SlackBuild
index 8028a4b3b2..6867148c25 100644
--- a/multimedia/bdtools/bdtools.SlackBuild
+++ b/multimedia/bdtools/bdtools.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for "bdtools".
@@ -24,26 +24,38 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220404 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - no execute permission on COPYING.
+# - no useless INSTALL instructions in doc dir.
+# - get rid of empty/useless /usr/share dir.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=bdtools
VERSION=${VERSION:-1.5}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -67,9 +79,9 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -87,12 +99,14 @@ make
make install-strip DESTDIR=$PKG
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a COPYING INSTALL $PKG/usr/doc/$PRGNAM-$VERSION
+install -m0644 COPYING $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-rm -rf $PKG/usr/share/doc/gtt
+rm -rf $PKG/usr/share # 20220404 bkw: nothing there but doc/
+
+rm -f $PKG/usr/lib*/*.la
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/beets/README b/multimedia/beets/README
index ddef9f9baa..a926da9257 100644
--- a/multimedia/beets/README
+++ b/multimedia/beets/README
@@ -24,5 +24,5 @@ panacea:
If beets doesn't do what you want yet, writing your own plugin is
shockingly simple if you know a little Python.
-Optional dependencies:
-Flask, pyechonest, pyacoustid, pylast, python-requests, discogs-client.
+Optional dependencies:
+Flask, gst-python, pyacoustid, pylast.
diff --git a/multimedia/beets/beet b/multimedia/beets/beet
new file mode 100644
index 0000000000..5532252f29
--- /dev/null
+++ b/multimedia/beets/beet
@@ -0,0 +1,2 @@
+_load_beet_completion() { eval "$(beet completion)"; }
+complete -F _load_beet_completion beet
diff --git a/multimedia/beets/beets.SlackBuild b/multimedia/beets/beets.SlackBuild
index 110e81b4cc..21d2b1b97e 100644
--- a/multimedia/beets/beets.SlackBuild
+++ b/multimedia/beets/beets.SlackBuild
@@ -1,7 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for beets
+# Copyright 2022 fourtysixandtwo <fourtysixandtwo@sliderr.net>
# Copyright 2014-2019 Dimitris Zlatanidis Orestiada, Greece
# All rights reserved.
#
@@ -22,10 +23,16 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20221016 46and2: Added bash/zsh completions.
+# 20221103 46and2: Rebuilt for python3-mediafile and python3-confuse.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=beets
-VERSION=${VERSION:-1.4.8}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-1.6.0}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +42,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -69,7 +83,13 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-python setup.py install --root=$PKG
+python3 setup.py install --root=$PKG
+
+mkdir -p $PKG/usr/share/bash-completion/completions
+install -m644 $CWD/beet $PKG/usr/share/bash-completion/completions/
+
+mkdir -p $PKG/usr/share/zsh/site-functions
+install -m644 extra/_beet $PKG/usr/share/zsh/site-functions/
install -D -m644 man/beet.1 $PKG/usr/man/man1/beet.1
install -D -m644 man/beetsconfig.5 $PKG/usr/man/man5/beetsconfig.5
@@ -89,4 +109,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/beets/beets.info b/multimedia/beets/beets.info
index 3586393339..2c17f299f2 100644
--- a/multimedia/beets/beets.info
+++ b/multimedia/beets/beets.info
@@ -1,10 +1,10 @@
PRGNAM="beets"
-VERSION="1.4.8"
+VERSION="1.6.0"
HOMEPAGE="http://beets.radbox.org"
-DOWNLOAD="https://files.pythonhosted.org/packages/0b/94/f3a4a9e4b622c725b4ed1fb3503cccac9de7b91644648e8fb8bb9ed7b322/beets-1.4.8.tar.gz"
-MD5SUM="8c20ba715bf9584af0ffedb9a85f1823"
+DOWNLOAD="https://github.com/beetbox/beets/releases/download/v1.6.0/beets-1.6.0.tar.gz"
+MD5SUM="d03cd61d7083bc62f4b17ce2808df0d8"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="mutagen munkres Unidecode musicbrainzngs PyYAML enum34 jellyfish six"
-MAINTAINER="Dimitris Zlatanidis"
-EMAIL="d.zlatanidis@gmail.com"
+REQUIRES="munkres Unidecode musicbrainzngs jellyfish python3-confuse python3-mediafile"
+MAINTAINER="fourtysixandtwo"
+EMAIL="fourtysixandtwo@sliderr.net"
diff --git a/multimedia/beets/slack-desc b/multimedia/beets/slack-desc
index 2c53b0407a..0fb6331910 100644
--- a/multimedia/beets/slack-desc
+++ b/multimedia/beets/slack-desc
@@ -11,7 +11,7 @@ beets:
beets: Beets is the media library management system for obsessive-compulsive
beets: music geeks.
beets:
-beets: homepage: http://beets.radbox.org
+beets: homepage: https://beets.io/
beets:
beets:
beets:
diff --git a/multimedia/bino/README b/multimedia/bino/README
index 89a0a9c9e9..c272804882 100644
--- a/multimedia/bino/README
+++ b/multimedia/bino/README
@@ -2,15 +2,12 @@ bino (3D video player)
Bino is a 3D video player with multi-display support.
-3D videos are more accurately called stereoscopic videos. Such videos
-have separate views for the left and right eye and thus allow depth
+3D videos are more accurately called stereoscopic videos. Such videos
+have separate views for the left and right eyes and thus allow depth
perception through stereopsis.
-The left and right view of a stereoscopic video can be stored using
-different layouts. Bino supports all commonly used layouts.
-NOTE:
-This SlackBuild build with Qt4 even though the default from upstream
-is Qt5. It's still broken at this moment.
+The left and right view of a stereoscopic video can be stored using
+different layouts. Bino supports all commonly used layouts.
-Optional dependency: lirc for infra-red support.
-You may need to edit the SlackBuild to enable lirc.
+Optional dependency: lirc for infra-red support. Autodetected, but
+may be disabled with LIRC=no in the environment.
diff --git a/multimedia/bino/bino.SlackBuild b/multimedia/bino/bino.SlackBuild
index 9c474f0d44..63b9ce2019 100644
--- a/multimedia/bino/bino.SlackBuild
+++ b/multimedia/bino/bino.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for bino3d
@@ -22,10 +22,20 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220215 bkw: Modified by SlackBuilds.org:
+# - updated for v1.6.8 (old version wouldn't build on Slack 15.0).
+# - build with qt5, not qt4.
+# - autodetect and build with lirc if present.
+# - drop freealut dep from .info (because upstream dropped it).
+# - include the texinfo documentation in the package (/usr/info).
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=bino
-VERSION=${VERSION:-1.6.5}
+VERSION=${VERSION:-1.6.8}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +45,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -65,10 +79,20 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+# 20220215 bkw: configure script doesn't pick up lirc's libraries,
+# help it out a little.
+if [ "${LIRC:-yes}" = "yes" ] && pkg-config --exists lirc; then
+ LIRCLIBS="-llirc -llirc_client"
+ LIRCOPT="--with-lirc"
+else
+ LIRCOPT="--without-lirc"
+fi
+
+lirc_LIBS="$LIRCLIBS" \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -79,20 +103,17 @@ CXXFLAGS="$SLKCFLAGS" \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--without-equalizer \
- --without-lirc \
- --with-qt-version=4 \
+ $LIRCOPT \
+ --with-qt-version=5 \
--build=$ARCH-slackware-linux
make
-make install DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+make install-strip DESTDIR=$PKG
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+mv $PKG/usr/share/info $PKG/usr/info
+rm -f $PKG/usr/info/dir
-rm -Rf $PKG/usr/info/dir $PKG/usr/share/info
+gzip -9 $PKG/usr/man/man*/* $PKG/usr/info/*
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a AUTHORS COPYING README README.Linux $PKG/usr/doc/$PRGNAM-$VERSION
@@ -102,4 +123,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/bino/bino.info b/multimedia/bino/bino.info
index fe38dd2241..f3e5842ea3 100644
--- a/multimedia/bino/bino.info
+++ b/multimedia/bino/bino.info
@@ -1,10 +1,10 @@
PRGNAM="bino"
-VERSION="1.6.5"
+VERSION="1.6.8"
HOMEPAGE="http://bino3d.org"
-DOWNLOAD="http://download.savannah.nongnu.org/releases/bino/bino-1.6.5.tar.xz"
-MD5SUM="36da300a320481ae9637c66f1f4617d9"
+DOWNLOAD="https://bino3d.org/releases/bino-1.6.8.tar.xz"
+MD5SUM="8a8e250e62e5e3c136eafc1ffc63e71d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg freealut libass"
+REQUIRES="libass"
MAINTAINER="William PC"
EMAIL="w_calandrini[at]hotmail[dot]com"
diff --git a/multimedia/bino/slack-desc b/multimedia/bino/slack-desc
index 5fbdd2c990..422ba902d8 100644
--- a/multimedia/bino/slack-desc
+++ b/multimedia/bino/slack-desc
@@ -11,9 +11,9 @@ bino:
bino: Bino is a 3D video player with multi-display support.
bino:
bino: 3D videos are more accurately called stereoscopic videos. Such videos
-bino: have separate views for the left and right eye and thus allow depth
+bino: have separate views for the left and right eyes and thus allow depth
bino: perception through stereopsis.
+bino:
bino: The left and right view of a stereoscopic video can be stored using
bino: different layouts. Bino supports all commonly used layouts.
bino:
-bino:
diff --git a/multimedia/bombono-dvd/bombono-dvd.SlackBuild b/multimedia/bombono-dvd/bombono-dvd.SlackBuild
index 4ad1cf1197..b36426d4eb 100644
--- a/multimedia/bombono-dvd/bombono-dvd.SlackBuild
+++ b/multimedia/bombono-dvd/bombono-dvd.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for bombono-dvd
# Maintained by Klaatu @member.fsf.org
@@ -23,10 +23,15 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220215 bkw: Modified by SlackBuilds.org, fix build on 15.0.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=bombono-dvd
VERSION=${VERSION:-1.2.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +41,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -66,26 +75,23 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+
+# 20220215 bkw: ported the stupid scons stuff to python3, since
+# 15.0's scons doesn't do python2.
+patch -p1 < $CWD/patches/scons.diff
-# specify our CFLAGS
-sed -i "s|-O2||" SConstruct
# Allow use of cdrtools as an alternative to cdrkit, thanks gentoo
patch -p1 < $CWD/patches/bombono-dvd-1.2.0-cdrtools.patch
-# Fix for the newer ffmpeg - thanks ArchLinux
-patch -p1 < $CWD/patches/fix_ffmpeg_codecid.patch
-
-# Credit to ARCH Linux
-patch -p1 < $CWD/patches/fix_ptr2bool_cast.patch
-patch -p1 < $CWD/patches/fix_c++11_literal_warnings.patch
-patch -p1 < $CWD/patches/autoptr2uniqueptr.patch
-patch -p1 < $CWD/patches/boost.patch
+# 20220215 bkw: more boost breakage. this is upstream's commit e0956f48d5,
+# but slightly edited to remove the reference to README (which won't apply).
+patch -p1 < $CWD/patches/boost-1.78.diff
-# Fix for ffmpeg-3
-patch -p1 < $CWD/patches/ffmpeg3.patch
+# specify our CFLAGS
+sed -i "s|-O2||" SConstruct
# Build package
scons \
@@ -111,13 +117,10 @@ scons \
DESTDIR=$PKG \
install
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+strip $PKG/usr/bin/*
mv $PKG/usr/share/man $PKG/usr/
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+gzip -9 $PKG/usr/man/man*/*
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a COPYING README $PKG/usr/doc/$PRGNAM-$VERSION
@@ -128,4 +131,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/bombono-dvd/bombono-dvd.info b/multimedia/bombono-dvd/bombono-dvd.info
index cc49911f18..aa6ece7b69 100644
--- a/multimedia/bombono-dvd/bombono-dvd.info
+++ b/multimedia/bombono-dvd/bombono-dvd.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/muravjov/bombono-dvd/archive/1.2.4/bombono-dvd-1.2.
MD5SUM="76c70125fc1de553f7b46ac09aaedba2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="dvdauthor ffmpeg libxml++ mjpegtools twolame"
+REQUIRES="libxml++ mjpegtools twolame"
MAINTAINER="Klaatu"
EMAIL="klaatu@member.fsf.org"
diff --git a/multimedia/bombono-dvd/patches/autoptr2uniqueptr.patch b/multimedia/bombono-dvd/patches/autoptr2uniqueptr.patch
deleted file mode 100644
index ca4c045537..0000000000
--- a/multimedia/bombono-dvd/patches/autoptr2uniqueptr.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- bombono-dvd-1.2.2/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp 2013-03-08 00:50:45.000000000 +0330
-+++ new/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp 2015-11-26 20:06:48.693423531 +0330
-@@ -39,7 +39,7 @@
- slots = static_cast<tss_slots*>( pthread_getspecific(tss_data_native_key()));
- if (slots == 0)
- {
-- std::auto_ptr<tss_slots> temp( new_object_ensure_delete<tss_slots>() );
-+ std::unique_ptr<tss_slots> temp( new_object_ensure_delete<tss_slots>() );
- // pre-allocate a few elems, so that we'll be fast
- temp->resize(BOOST_LOG_TSS_SLOTS_SIZE);
-
-
diff --git a/multimedia/bombono-dvd/patches/boost-1.78.diff b/multimedia/bombono-dvd/patches/boost-1.78.diff
new file mode 100644
index 0000000000..c5df5c413b
--- /dev/null
+++ b/multimedia/bombono-dvd/patches/boost-1.78.diff
@@ -0,0 +1,914 @@
+diff --git a/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp b/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp
+index 3077276..af9afd2 100644
+--- a/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp
++++ b/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp
+@@ -39,7 +39,7 @@ inline tss_slots* get_slots()
+ slots = static_cast<tss_slots*>( pthread_getspecific(tss_data_native_key()));
+ if (slots == 0)
+ {
+- std::auto_ptr<tss_slots> temp( new_object_ensure_delete<tss_slots>() );
++ std::unique_ptr<tss_slots> temp( new_object_ensure_delete<tss_slots>() );
+ // pre-allocate a few elems, so that we'll be fast
+ temp->resize(BOOST_LOG_TSS_SLOTS_SIZE);
+
+diff --git a/src/mbase/project/media.cpp b/src/mbase/project/media.cpp
+index 81e44d2..5f9e4f6 100644
+--- a/src/mbase/project/media.cpp
++++ b/src/mbase/project/media.cpp
+@@ -58,7 +58,9 @@ void StorageMD::MakeByPath(const std::string& path, bool cnv_to_utf8,
+
+ std::string MakeAutoName(const std::string& str, int old_sz)
+ {
+- return (str::stream() << str << " " << old_sz+1).str();
++ str::stream ss;
++ ss << str << " " << old_sz+1;
++ return ss.str();
+ }
+
+ void VideoMD::AddChapter(ChapterItem chp)
+diff --git a/src/mbase/project/menu.cpp b/src/mbase/project/menu.cpp
+index 1f25817..94b8755 100644
+--- a/src/mbase/project/menu.cpp
++++ b/src/mbase/project/menu.cpp
+@@ -166,7 +166,9 @@ void MenuMD::SerializeImpl(Archieve& ar)
+ static std::string MakeObjectPath(int idx, const char* type)
+ {
+ ASSERT( idx != NO_HNDL );
+- return (str::stream() << type << "." << idx).str();
++ str::stream ss;
++ ss << type << "." << idx;
++ return ss.str();
+ }
+
+ std::string GetMediaRef(MediaItem mi)
+@@ -197,7 +199,9 @@ class RefMaker: public ObjVisitor
+ void RefMaker::Visit(VideoChapterMD& obj)
+ {
+ refStr = GetMediaRef(obj.owner);
+- refStr += (str::stream() << "." << ChapterPosInt(&obj)).str();
++ str::stream ss;
++ ss << "." << ChapterPosInt(&obj);
++ refStr += ss.str();
+ }
+
+ std::string Media2Ref(MediaItem mi)
+@@ -233,8 +237,9 @@ int GetRefIndex(const char*& str)
+
+ std::string ThrowBadIndex(const char* prefix, int idx)
+ {
+- throw std::runtime_error(
+- (str::stream() << prefix << idx).str() );
++ str::stream ss;
++ ss << prefix << idx;
++ throw std::runtime_error(ss.str());
+ }
+
+ MediaItem TryGetMedia(int idx)
+diff --git a/src/mbase/project/serialization.h b/src/mbase/project/serialization.h
+index ff5b7a9..547c438 100644
+--- a/src/mbase/project/serialization.h
++++ b/src/mbase/project/serialization.h
+@@ -75,7 +75,9 @@ namespace ToString
+ template<typename T>
+ std::string MakeString(const T& t)
+ {
+- return (str::stream() << t).str();
++ str::stream ss;
++ ss << t;
++ return ss.str();
+ }
+
+ template<typename T>
+diff --git a/src/mbase/project/srl-common.cpp b/src/mbase/project/srl-common.cpp
+index c2c92b5..ab1c62b 100644
+--- a/src/mbase/project/srl-common.cpp
++++ b/src/mbase/project/srl-common.cpp
+@@ -36,10 +36,12 @@ void Serialize(Archieve& ar, MenuParams& mp)
+ std::string ToString(const RGBA::Pixel& pxl)
+ {
+ using Mpeg::set_hms;
+- return (str::stream("#") << std::hex
+- << set_hms() << (int)pxl.red
+- << set_hms() << (int)pxl.green
+- << set_hms() << (int)pxl.blue << (int)pxl.alpha).str();
++ str::stream ss ("#");
++ ss << std::hex
++ << set_hms() << (int)pxl.red
++ << set_hms() << (int)pxl.green
++ << set_hms() << (int)pxl.blue << (int)pxl.alpha;
++ return ss.str();
+ }
+
+ // как pango_color_parse()
+diff --git a/src/mbase/project/srl-db.cpp b/src/mbase/project/srl-db.cpp
+index c3babec..e50a523 100644
+--- a/src/mbase/project/srl-db.cpp
++++ b/src/mbase/project/srl-db.cpp
+@@ -102,7 +102,7 @@ void DbSerializeProjectImpl(Archieve& ar)
+ }
+
+ void ADatabase::Load(const std::string& fname,
+- const std::string& cur_dir) throw (std::exception)
++ const std::string& cur_dir)
+ {
+ try
+ {
+diff --git a/src/mbase/project/table.cpp b/src/mbase/project/table.cpp
+index 455c334..3e52383 100644
+--- a/src/mbase/project/table.cpp
++++ b/src/mbase/project/table.cpp
+@@ -29,6 +29,7 @@
+ #include "theme.h"
+
+ #include <mbase/resources.h>
++#include <boost/filesystem/directory.hpp>
+
+
+ const char* APROJECT_VERSION = "1.2.4";
+@@ -154,7 +155,7 @@ NameValueT<Media> LoadMedia(Archieve& ar, MediaList& md_list)
+ void SerializePath(Archieve& ar, const char* tag_name, std::string& fpath)
+ {
+ //ar & NameValue("Path", mdPath);
+- fs::path rel_to_dir = fs::path(AData().GetProjectFName()).branch_path();
++ fs::path rel_to_dir = fs::path(AData().GetProjectFName()).parent_path();
+ if( ar.IsLoad() )
+ {
+ ar >> NameValue(tag_name, fpath);
+@@ -162,7 +163,7 @@ void SerializePath(Archieve& ar, const char* tag_name, std::string& fpath)
+ if( !fpath.empty() )
+ {
+ fs::path pth(fpath);
+- if( !pth.is_complete() )
++ if( !pth.is_absolute() )
+ fpath = (rel_to_dir/fpath).string();
+ }
+ }
+diff --git a/src/mbase/project/table.h b/src/mbase/project/table.h
+index 7c73085..cc7e36d 100644
+--- a/src/mbase/project/table.h
++++ b/src/mbase/project/table.h
+@@ -128,7 +128,7 @@ class ADatabase: public Singleton<ADatabase>, public DataWare
+ void ClearSettings();
+
+ void Load(const std::string& fname,
+- const std::string& cur_dir = std::string()) throw (std::exception);
++ const std::string& cur_dir = std::string());
+ bool Save();
+
+ bool SaveAs(const std::string& fname,
+diff --git a/src/mbase/project/tests/test_table.cpp b/src/mbase/project/tests/test_table.cpp
+index f8a1c20..3e7115a 100644
+--- a/src/mbase/project/tests/test_table.cpp
++++ b/src/mbase/project/tests/test_table.cpp
+@@ -129,7 +129,7 @@ BOOST_AUTO_TEST_CASE( TestMediaList )
+ // проверка чтениÑ/запиÑи путей
+ boost::intrusive_ptr<StillImageMD> pict2 = ptr::dynamic_pointer_cast<StillImageMD>(ml[2]);
+ fs::path pth = pict2->GetPath();
+- BOOST_CHECK( pth.is_complete() );
++ BOOST_CHECK( pth.is_absolute() );
+ BOOST_CHECK( fs::exists(pth) );
+
+ // проверка ÑÑылок
+diff --git a/src/mdemux/dvdread.cpp b/src/mdemux/dvdread.cpp
+index d8392b1..12fcae6 100644
+--- a/src/mdemux/dvdread.cpp
++++ b/src/mdemux/dvdread.cpp
+@@ -35,8 +35,10 @@ namespace DVD {
+ std::string VobFName(VobPos& pos, const std::string& suffix)
+ {
+ using Mpeg::set_hms;
+- return (str::stream("Video") << set_hms() << int(pos.Vts())
+- << "-" << set_hms() << pos.VobId() << suffix << ".vob").str();
++ str::stream ss ("Video");
++ ss << set_hms() << int(pos.Vts())
++ << "-" << set_hms() << pos.VobId() << suffix << ".vob";
++ return ss.str();
+ }
+
+ typedef boost::function<void(int, double)> VobTimeFnr;
+@@ -282,9 +284,11 @@ VobPtr FindVob(VobArr& dvd_vobs, uint8_t vts, uint16_t vob_id)
+ static void TryDVDReadBlocks(dvd_file_t* file, int off, size_t cnt, char* buf)
+ {
+ int real_cnt = DVDReadBlocks(file, off, cnt, (unsigned char*)buf);
+- if( (int)cnt != real_cnt )
+- throw std::runtime_error( (str::stream() << real_cnt <<
+- " != DVDReadBlocks(" << cnt << ")").str() );
++ if( (int)cnt != real_cnt ) {
++ str::stream ss;
++ ss << real_cnt << " != DVDReadBlocks(" << cnt << ")";
++ throw std::runtime_error( ss.str() );
++ }
+ }
+
+ // размер буфера должен ÑоответÑтвовать читаемому диапазону
+diff --git a/src/mdemux/mpeg2demux.cpp b/src/mdemux/mpeg2demux.cpp
+index bb7b1b1..ecb3774 100644
+--- a/src/mdemux/mpeg2demux.cpp
++++ b/src/mdemux/mpeg2demux.cpp
+@@ -71,7 +71,9 @@ bool DemuxSvc::Filter(uint32_t code)
+
+ static std::string MakePESKey(int id, const char* ext)
+ {
+- return (str::stream() << id << "." << ext).str();
++ str::stream ss;
++ ss << id << "." << ext;
++ return ss.str();
+ }
+
+ static bool ReadPart(io::stream& strm, uint8_t* buf, int sz, int& len)
+@@ -110,7 +112,9 @@ static std::string MakeKeyNameForLPCM(int track, uint8_t inf)
+ ASSERT(0);
+ }
+
+- std::string header_str = (str::stream() << sample_rate << ":" << channels << ":" << bps << ".lpcm").str();
++ str::stream ss;
++ ss << sample_rate << ":" << channels << ":" << bps << ".lpcm";
++ std::string header_str = ss.str();
+ return MakePESKey(track, header_str.c_str());
+ }
+
+diff --git a/src/mdemux/seek.cpp b/src/mdemux/seek.cpp
+index e46658f..f0ce934 100644
+--- a/src/mdemux/seek.cpp
++++ b/src/mdemux/seek.cpp
+@@ -37,8 +37,10 @@ std::string SecToHMS(double len, bool round_sec)
+ int hh = min / 60;
+ int mm = min - hh*60;
+
+- return (str::stream() << set_hms() << hh << ":"
+- << set_hms() << mm << ":" << set_hms() << ss).str();
++ str::stream strss;
++ strss << set_hms() << hh << ":"
++ << set_hms() << mm << ":" << set_hms() << ss;
++ return strss.str();
+ }
+
+ bool MediaInfo::InitBegin(VideoLine& vl)
+diff --git a/src/mgui/author/burn.cpp b/src/mgui/author/burn.cpp
+index ddfad0a..578429e 100644
+--- a/src/mgui/author/burn.cpp
++++ b/src/mgui/author/burn.cpp
+@@ -85,7 +85,7 @@ BurnData& GetInitedBD()
+ return bd;
+ }
+
+-re::pattern WriteSpeed_RE("Write Speed #"RG_NUM":"RG_SPS RG_NUM"\\."RG_NUM "x1385");
++re::pattern WriteSpeed_RE("Write Speed #" RG_NUM ":" RG_SPS RG_NUM "\\." RG_NUM "x1385");
+
+ RefPtr<Gtk::ListStore> sp_store;
+
+@@ -253,7 +253,7 @@ DVDInfo ParseDVDInfo(bool is_good, const std::string& out_info)
+ }
+ else
+ {
+- static re::pattern media_type_re("Mounted Media:"RG_SPS"[0-9A-F]+h, ([^ \n]+)");
++ static re::pattern media_type_re("Mounted Media:" RG_SPS "[0-9A-F]+h, ([^ \n]+)");
+ re::match_results what;
+
+ bool is_found = re::search(out_info, what, media_type_re);
+@@ -277,7 +277,7 @@ DVDInfo ParseDVDInfo(bool is_good, const std::string& out_info)
+ // isBlank
+ if( res != dvdOTHER )
+ {
+- static re::pattern media_status_re("Disc status:"RG_SPS"([a-z]+)\n");
++ static re::pattern media_status_re("Disc status:" RG_SPS "([a-z]+)\n");
+ bool is_found = re::search(out_info, what, media_status_re);
+ ASSERT_RTL( is_found );
+
+diff --git a/src/mgui/author/execute.cpp b/src/mgui/author/execute.cpp
+index 5b2330c..e308552 100644
+--- a/src/mgui/author/execute.cpp
++++ b/src/mgui/author/execute.cpp
+@@ -64,9 +64,9 @@ static void InitFoundStageTag(RefPtr<Gtk::TextTag> tag)
+ tag->property_foreground() = "darkgreen";
+ }
+
+-re::pattern DVDAuthorRE(RG_CMD_BEG"dvdauthor"RG_EW ".*-x"RG_EW RG_SPS RG_BW"DVDAuthor\\.xml"RG_EW);
+-re::pattern MkIsoFsRE(RG_CMD_BEG MK_ISO_CMD RG_EW ".*-dvd-video"RG_EW ".*>.*"RG_BW"dvd.iso"RG_EW);
+-re::pattern GrowIsoFsRE(RG_CMD_BEG"growisofs"RG_EW ".*-dvd-compat"RG_EW ".*-dvd-video"RG_EW);
++re::pattern DVDAuthorRE(RG_CMD_BEG"dvdauthor" RG_EW ".*-x" RG_EW RG_SPS RG_BW "DVDAuthor\\.xml" RG_EW);
++re::pattern MkIsoFsRE(RG_CMD_BEG MK_ISO_CMD RG_EW ".*-dvd-video" RG_EW ".*>.*" RG_BW "dvd.iso" RG_EW);
++re::pattern GrowIsoFsRE(RG_CMD_BEG"growisofs" RG_EW ".*-dvd-compat" RG_EW ".*-dvd-video" RG_EW);
+
+ //static void PrintMatchResults(const re::match_results& what)
+ //{
+@@ -94,7 +94,7 @@ class MkIsoFsPP: public ProgressParser
+ virtual void Filter(const std::string& line);
+ };
+
+-re::pattern MkIsoFsPercent_RE( RG_FLT"?% done");
++re::pattern MkIsoFsPercent_RE( RG_FLT "?% done");
+
+ void MkIsoFsPP::Filter(const std::string& line)
+ {
+@@ -126,8 +126,8 @@ class DVDAuthorPP: public ProgressParser
+ bool fixStage;
+ };
+
+-re::pattern DVDAuthorVOB_RE( "^STAT: VOBU "RG_NUM" at "RG_NUM"MB");
+-re::pattern DVDAuthorFix_RE( "^STAT: fixing VOBU at "RG_NUM"MB \\("RG_NUM"/"RG_NUM", "RG_NUM"%\\)");
++re::pattern DVDAuthorVOB_RE( "^STAT: VOBU " RG_NUM " at " RG_NUM "MB");
++re::pattern DVDAuthorFix_RE( "^STAT: fixing VOBU at " RG_NUM "MB \\(" RG_NUM "/" RG_NUM ", " RG_NUM "%\\)");
+
+ void DVDAuthorPP::Filter(const std::string& line)
+ {
+@@ -157,7 +157,7 @@ void DVDAuthorPP::Filter(const std::string& line)
+ if( p )
+ of.SetProgress(p);
+
+- static re::pattern ch_error_re("ERR:.*Cannot jump to chapter "RG_NUM" of title "RG_NUM", only "RG_NUM" exist");
++ static re::pattern ch_error_re("ERR:.*Cannot jump to chapter " RG_NUM " of title " RG_NUM ", only " RG_NUM " exist");
+ if( re::search(line, what, ch_error_re) )
+ {
+ std::string& err_str = of.firstError;
+diff --git a/src/mgui/author/render.cpp b/src/mgui/author/render.cpp
+index 1ffbca2..81720d7 100644
+--- a/src/mgui/author/render.cpp
++++ b/src/mgui/author/render.cpp
+@@ -866,7 +866,7 @@ std::string FFmpegPostArgs(const std::string& out_fname, bool is_4_3, bool is_pa
+ //
+ // :KLUDGE: (только) в ffmpeg, avformat 53.13.0, поменÑли . на : => надо
+ // Ñамим открывать файл и узнавать индекÑ!
+- static re::pattern audio_idx("Stream #"RG_NUM"[\\.|:]"RG_NUM".*Audio:");
++ static re::pattern audio_idx("Stream #" RG_NUM "[\\.|:]" RG_NUM ".*Audio:");
+
+ re::match_results what;
+ // флаг означает, что перевод Ñтроки не может быть точкой
+@@ -1221,17 +1221,17 @@ void TestFFmpegForDVDEncoding(const std::string& conts)
+ {
+ CheckNoCodecs(CheckForCodecList(conts));
+
+- static re::pattern dvd_format("^ .E dvd"RG_EW);
++ static re::pattern dvd_format("^ .E dvd" RG_EW);
+ CheckStrippedFFmpeg(dvd_format, conts, "dvd format");
+
+ // :TRICKY: Ñ Ð²ÐµÑ€Ñии libavcodec 54 при выводе начальный пробел не ÑтавÑÑ‚ => поÑтому ?
+ // ("ÑпаÑибо" Anton Khirnov за очередное "улучшение")
+ #define _CPP_ "^ ?"
+- static re::pattern mpeg2video_codec(_CPP_".EV... mpeg2video"RG_EW);
++ static re::pattern mpeg2video_codec(_CPP_ ".EV... mpeg2video" RG_EW);
+ CheckStrippedFFmpeg(mpeg2video_codec, conts, "mpeg2 video encoder");
+
+ // по факту ffmpeg вÑегда иÑпользует ac3, однако mp2 тоже возможен
+- static re::pattern ac3_codec(_CPP_".EA... ac3"RG_EW);
++ static re::pattern ac3_codec(_CPP_ ".EA... ac3" RG_EW);
+ CheckStrippedFFmpeg(ac3_codec, conts, "ac3 audio encoder");
+ #undef _CPP_
+ }
+@@ -1241,7 +1241,7 @@ TripleVersion FindAVVersion(const std::string& conts, const char* avlib_name)
+ // * ищем верÑию libavfilter
+ // пример: " libavfilter 0. 4. 0 / "
+ #define RG_PADNUM RG_SPS RG_NUM
+- std::string reg_str = boost::format(RG_BW"%1%"RG_PADNUM"\\."RG_PADNUM"\\."RG_PADNUM" / ")
++ std::string reg_str = boost::format(RG_BW "%1%" RG_PADNUM "\\." RG_PADNUM "\\." RG_PADNUM " / ")
+ % avlib_name % bf::stop;
+ re::pattern avfilter_version(reg_str.c_str());
+ return FindVersion(conts, avfilter_version, AVCnvBin(), avlib_name);
+@@ -1307,7 +1307,9 @@ FFmpegVersion CheckFFDVDEncoding()
+
+ bool RenderMainPicture(const std::string& out_dir, Menu mn, int i)
+ {
+- Author::Info((str::stream() << "Rendering menu \"" << mn->mdName << "\" ...").str());
++ str::stream ss;
++ ss << "Rendering menu \"" << mn->mdName << "\" ...";
++ Author::Info(ss.str());
+ const std::string mn_dir = MakeMenuPath(out_dir, mn, i);
+
+ if( IsMotion(mn) )
+diff --git a/src/mgui/author/script.cpp b/src/mgui/author/script.cpp
+index ccfd32f..f2b1c7e 100644
+--- a/src/mgui/author/script.cpp
++++ b/src/mgui/author/script.cpp
+@@ -130,7 +130,9 @@ static std::string MakeFPTarget(MediaItem mi)
+ {
+ VideoItem vi = IsVideo(mi);
+ ASSERT( vi );
+- str = (str::stream() << "title " << GetAuthorNumber(vi)).str();
++ str::stream ss;
++ ss << "title " << GetAuthorNumber(vi);
++ str = ss.str();
+ }
+ return str;
+ }
+@@ -179,7 +181,9 @@ void TargetCommandVis::Visit(VideoChapterMD& obj)
+ // Потому: Ð´Ð»Ñ ÑƒÐ´Ð¾Ñтва пользователей даем Ñоздавать нулевую главу, Ñ€Ð°Ð·Ñ€ÐµÑˆÐ°Ñ Ñто здеÑÑŒ
+ // (однако доп. нулевые главы будут приводить к ошибке Cannot jump to chapter N ... only M exist)
+ int c_num = ChapterPosInt(&obj) + (owner->List()[0]->chpTime ? 2 : 1) ;
+- res = (str::stream() << "jump title " << v_num << " chapter " << c_num << ";").str();
++ str::stream ss;
++ ss << "jump title " << v_num << " chapter " << c_num << ";";
++ res = ss.str();
+ }
+
+ static std::string MakeButtonJump(MediaItem mi, bool vts_domain)
+@@ -204,7 +208,9 @@ std::string MenuAuthorDir(Menu mn, int idx, bool cnv_from_utf8)
+ if( !fs::native(name) )
+ name = "Menu";
+
+- std::string fname = (str::stream() << idx+1 << "." << name).str();
++ str::stream ss;
++ ss << idx+1 << "." << name;
++ std::string fname = ss.str();
+ return cnv_from_utf8 ? ConvertPathFromUtf8(fname) : fname ;
+ }
+
+@@ -626,7 +632,9 @@ static void CopyRootFile(const std::string& fname, const std::string& out_dir)
+ void AuthorSectionInfo(const std::string& str)
+ {
+ Author::Info("\n#", false);
+- Author::Info((str::stream() << "# " << str).str(), false);
++ str::stream ss;
++ ss << "# " << str;
++ Author::Info(ss.str(), false);
+ Author::Info("#\n", false);
+ }
+
+@@ -676,7 +684,7 @@ static void CheckSpumuxFontFile()
+ if( !fs::exists(font_path) )
+ {
+ std::string err_str;
+- if( !CreateDirs(font_path.branch_path(), err_str) )
++ if( !CreateDirs(font_path.parent_path(), err_str) )
+ Error(err_str.c_str());
+ fs::copy_file(DataDirPath("copy-n-paste/FreeSans.ttf"), font_path);
+ }
+@@ -755,9 +763,9 @@ static void CalcTransPercent(double cur_dur, Job& job, JobData& jd, double full_
+ // ffmpeg выводит ÑтатиÑтику первого Ñоздаваемого файла каждые полÑекунды,
+ // Ñм. print_report() (при verbose=1, по умолчанию)
+ // Формат размера: "size=%8.0fkB"
+-re::pattern FFmpegSizePat( "size= *"RG_NUM"kB");
++re::pattern FFmpegSizePat( "size= *" RG_NUM "kB");
+ // Формат длительноÑти: "time=%0.2f"
+-re::pattern FFmpegDurPat( "time="RG_FLT);
++re::pattern FFmpegDurPat( "time=" RG_FLT);
+
+ static void OnTranscodePrintParse(const char* dat, int sz, const PercentFunctor& fnr)
+ {
+@@ -787,7 +795,7 @@ static void OnTranscodePrintParse(const char* dat, int sz, const PercentFunctor&
+
+ // Формат длительноÑти Ð´Ð»Ñ ffmpeg c коммита dd471070: "time=%02d:%02d:%02d.%02d"
+ // Образец: frame= 208 fps= 58 q=2.0 size= 476kB time=00:00:08.44 bitrate= 461.9kbits/s dup=1 drop=0
+-re::pattern FFmpegNewDurPat( "time="RG_NUM":"RG_NUM":"RG_FLT);
++re::pattern FFmpegNewDurPat( "time=" RG_NUM ":" RG_NUM ":" RG_FLT);
+
+ static void OnTranscodeHMSParse(const char* dat, int sz, const PercentFunctor& fnr)
+ {
+@@ -1082,7 +1090,9 @@ static void TranscodeVideos(int pass, const std::string& out_dir)
+
+ static void AuthorImpl(const std::string& out_dir)
+ {
+- AuthorSectionInfo((str::stream() << "Build DVD-Video in folder: " << out_dir).str());
++ str::stream ss;
++ ss << "Build DVD-Video in folder: " << out_dir;
++ AuthorSectionInfo(ss.str());
+ IteratePendingEvents();
+
+ IndexVideosForAuthoring();
+@@ -1136,7 +1146,7 @@ static void AuthorImpl(const std::string& out_dir)
+ // 2) парÑер dvdauthor не любит незнакомые ему атрибуты => spumux < 0.7 не работает
+ std::string help_str;
+ PipeOutput("spumux -h", help_str);
+- static re::pattern spumux_version("DVDAuthor::spumux, version "RG_NUM"\\."RG_NUM"\\."RG_NUM"\\.\n");
++ static re::pattern spumux_version("DVDAuthor::spumux, version " RG_NUM "\\." RG_NUM "\\." RG_NUM "\\.\n");
+ if( IsVersionGE(FindVersion(help_str, spumux_version, "spumux"), TripleVersion(0, 7, 0)) )
+ AddFormatAttr(sp);
+
+diff --git a/src/mgui/dvdimport.cpp b/src/mgui/dvdimport.cpp
+index 44dcdec..fc9b965 100644
+--- a/src/mgui/dvdimport.cpp
++++ b/src/mgui/dvdimport.cpp
+@@ -211,10 +211,11 @@ static void OnPreparePage(ImportData& id)
+ row[VF().selState] = false;
+ row[VF().name] = VobFName(vob.pos);
+ row[VF().thumbnail] = vob.aspect == af4_3 ? pix4_3 : pix16_9;
+- std::string desc = (str::stream(Mpeg::SecToHMS(vob.tmLen, true)) << ", "
+- << vob.sz.x << "x" << vob.sz.y << ", "
+- << (vob.aspect == af4_3 ? "4:3" : "16:9") << ", "
+- << std::fixed << std::setprecision(2) << vob.Count()/512. << " " << _("MB")).str();
++ str::stream ss (Mpeg::SecToHMS(vob.tmLen, true));
++ ss << ", " << vob.sz.x << "x" << vob.sz.y << ", "
++ << (vob.aspect == af4_3 ? "4:3" : "16:9") << ", "
++ << std::fixed << std::setprecision(2) << vob.Count()/512. << " " << _("MB");
++ std::string desc = ss.str();
+ row[VF().desc] = desc;
+ }
+ CompleteSelection(id, false);
+@@ -275,7 +276,7 @@ static ReaderPtr OpenDVD(const std::string& dvd_path, ImportData& id)
+ id.errLbl.hide();
+
+ id.reader = rd;
+- SetCurPageComplete(id.ast, id.reader);
++ SetCurPageComplete(id.ast, bool(id.reader));
+
+ return rd;
+ }
+diff --git a/src/mgui/editor/toolbar.cpp b/src/mgui/editor/toolbar.cpp
+index 6a1894c..a039c3a 100644
+--- a/src/mgui/editor/toolbar.cpp
++++ b/src/mgui/editor/toolbar.cpp
+@@ -45,6 +45,8 @@
+ #include <mlib/sdk/logger.h>
+ #include <mlib/range/enumerate.h>
+
++#include <boost/filesystem/directory.hpp>
++
+ namespace Editor
+ {
+
+diff --git a/src/mgui/ffviewer.cpp b/src/mgui/ffviewer.cpp
+index 64ea813..a8dc6cb 100644
+--- a/src/mgui/ffviewer.cpp
++++ b/src/mgui/ffviewer.cpp
+@@ -36,6 +36,10 @@
+ #define AVFORMAT_54
+ #endif
+
++C_LINKAGE_BEGIN
++#include <libavutil/imgutils.h>
++C_LINKAGE_END
++
+ // разрабы libav Ñчитают ÑÐµÐ±Ñ Ñамыми умными и потому решили
+ // закрыть проÑтым Ñмертным доÑтуп к ffurl_register_protocol()
+ // (Ð±Ñ‹Ð²ÑˆÐ°Ñ av_register_protocol2()),- https://bugzilla.libav.org/show_bug.cgi?id=224
+@@ -74,7 +78,7 @@ C_LINKAGE_BEGIN
+
+ typedef struct AVCodecTag {
+ #if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,39,00)
+- enum CodecID id;
++ enum AVCodecID id;
+ #else
+ int id;
+ #endif
+@@ -82,14 +86,14 @@ typedef struct AVCodecTag {
+ } AVCodecTag;
+
+ #if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,34,00)
+-static uint FFCodecID2Tag(CodecID codec_id)
++static uint FFCodecID2Tag(AVCodecID codec_id)
+ {
+ unsigned int ff_codec_get_tag(const AVCodecTag *tags, int id);
+ extern const AVCodecTag ff_codec_bmp_tags[];
+ return ff_codec_get_tag(ff_codec_bmp_tags, codec_id);
+ }
+ #else
+-static uint FFCodecID2Tag(CodecID codec_id)
++static uint FFCodecID2Tag(AVCodecID codec_id)
+ {
+ unsigned int codec_get_tag(const AVCodecTag *tags, int id);
+ extern const AVCodecTag codec_bmp_tags[];
+@@ -400,7 +404,7 @@ static unsigned char GetChar(uint tag, int bit_begin)
+ return (tag>>bit_begin) & 0xFF;
+ }
+
+-static std::string CodecID2Str(CodecID codec_id)
++static std::string CodecID2Str(AVCodecID codec_id)
+ {
+ #ifdef _MSC_VER
+ std::string tag_str = boost::format("%1%") % codec_id % bf::stop;
+@@ -807,7 +811,7 @@ static void DoVideoDecode(FFViewer& ffv, int& got_picture, AVPacket* pkt)
+ #ifdef AVFRAME_INIT_CHANGE
+ // avcodec_get_frame_defaults() перенеÑли в avcodec_decode_video2()
+ #else
+- avcodec_get_frame_defaults(&picture); // ffmpeg.c очищает каждый раз
++ av_frame_unref (&picture);
+ #endif
+
+ #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52,25,00)
+diff --git a/src/mgui/mux.cpp b/src/mgui/mux.cpp
+index 427058e..885dde7 100644
+--- a/src/mgui/mux.cpp
++++ b/src/mgui/mux.cpp
+@@ -162,7 +162,7 @@ static void OnVideoSelected(Gtk::FileChooserButton& v_btn, Gtk::FileChooserButto
+ fs::path pth = GetFilename(v_btn);
+ if( pth.empty() )
+ return;
+- std::string folder = pth.branch_path().string();
++ std::string folder = pth.parent_path().string();
+
+ if( a_btn.get_filename().empty() )
+ a_btn.set_current_folder(folder);
+diff --git a/src/mgui/project/add.cpp b/src/mgui/project/add.cpp
+index 9454578..e8ae94f 100644
+--- a/src/mgui/project/add.cpp
++++ b/src/mgui/project/add.cpp
+@@ -86,7 +86,9 @@ static void SetImportError(ErrorDesc& ed, bool is_good, const std::string& out_s
+
+ static std::string FpsToStr(const Point& frate)
+ {
+- return (str::stream() << (double)frate.x/frate.y).str();
++ str::stream ss;
++ ss << (double)frate.x/frate.y;
++ return ss.str();
+ }
+
+ static std::string TVTypeStr(bool is_ntsc)
+@@ -163,7 +165,9 @@ void CheckVideoFormat(ErrorDesc& ed, const Mpeg::SequenceData& vid, bool is_ntsc
+ // *
+ bool is_aspect_ok = vid.sarCode == af4_3 || vid.sarCode == af16_9;
+ Point aspect = vid.SizeAspect();
+- std::string aspect_str = (str::stream() << aspect.x << ':' << aspect.y).str();
++ str::stream ss;
++ ss << aspect.x << ':' << aspect.y;
++ std::string aspect_str = ss.str();
+ SetImportError(ed, is_aspect_ok,
+ std::string(_("Aspect ratio")) + ": \t" + MarkError(aspect_str, is_aspect_ok),
+ BF_(Descriptions[2]) % tv_type % bf::stop);
+@@ -479,7 +483,7 @@ void TryAddMedias(const Str::List& paths, MediaBrowser& brw,
+ MessageBox(BF_("The file \"%1%\" looks like VOB from DVD.\nRun import?") % leaf % bf::stop,
+ Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_OK_CANCEL) == Gtk::RESPONSE_OK )
+ {
+- DVD::RunImport(*GetTopWindow(brw), pth.branch_path().string());
++ DVD::RunImport(*GetTopWindow(brw), pth.parent_path().string());
+ return;
+ }
+ }
+diff --git a/src/mgui/project/browser.cpp b/src/mgui/project/browser.cpp
+index 02d95a1..47b730b 100644
+--- a/src/mgui/project/browser.cpp
++++ b/src/mgui/project/browser.cpp
+@@ -328,7 +328,7 @@ Gtk::HButtonBox& CreateMListButtonBox()
+ return hb;
+ }
+
+-std::string MediaItemDnDTVType() { return "DnDTreeView<"DND_MI_NAME">"; }
++std::string MediaItemDnDTVType() { return "DnDTreeView<" DND_MI_NAME ">"; }
+
+ void SetupBrowser(ObjectBrowser& brw, int dnd_column, bool is_media_brw)
+ {
+diff --git a/src/mgui/project/mconstructor.cpp b/src/mgui/project/mconstructor.cpp
+index 3b56587..754f9f8 100644
+--- a/src/mgui/project/mconstructor.cpp
++++ b/src/mgui/project/mconstructor.cpp
+@@ -52,6 +52,8 @@
+ // COPY_N_PASTE_ETALON из go-file.c, проект Gnumeric, http://projects.gnome.org/gnumeric/
+ //
+
++#include <boost/filesystem/directory.hpp>
++
+ #ifndef GOFFICE_WITH_GNOME
+ static char *
+ check_program (char const *prog)
+diff --git a/src/mgui/project/serialize.cpp b/src/mgui/project/serialize.cpp
+index a5366aa..03583ec 100644
+--- a/src/mgui/project/serialize.cpp
++++ b/src/mgui/project/serialize.cpp
+@@ -73,7 +73,7 @@ static std::string MakeProjectTitle(bool with_path_breakdown = false)
+ fs::path full_path(db.GetProjectFName());
+ std::string res_str = fs::name_str(full_path);
+ if( with_path_breakdown )
+- res_str += " (" + full_path.branch_path().string() + ")";
++ res_str += " (" + full_path.parent_path().string() + ")";
+ return res_str;
+ }
+
+diff --git a/src/mgui/sdk/cairo_utils.cpp b/src/mgui/sdk/cairo_utils.cpp
+index 14f11be..10c1f97 100644
+--- a/src/mgui/sdk/cairo_utils.cpp
++++ b/src/mgui/sdk/cairo_utils.cpp
+@@ -27,6 +27,8 @@
+ std::string MakeSVGFilename(const char* prefix)
+ {
+ static int idx = 1;
+- return (str::stream() << prefix << "-" << Mpeg::set_hms() << idx++ << ".svg" ).str();
++ str::stream ss;
++ ss << prefix << "-" << Mpeg::set_hms() << idx++ << ".svg";
++ return ss.str();
+ }
+
+diff --git a/src/mgui/timeline/layout.cpp b/src/mgui/timeline/layout.cpp
+index c139626..b5b5ca7 100644
+--- a/src/mgui/timeline/layout.cpp
++++ b/src/mgui/timeline/layout.cpp
+@@ -600,8 +600,10 @@ time4_t FramesToTime(int cnt, double fps)
+ void FramesToTime(std::string& str, int cnt, double fps)
+ {
+ time4_t t4 = FramesToTime(cnt, fps);
+- str = (str::stream() << Mpeg::set_hms() << t4.hh << ":" << Mpeg::set_hms() << t4.mm << ":"
+- << Mpeg::set_hms() << t4.ss << ";" << Mpeg::set_hms() << t4.ff).str();
++ str::stream ss;
++ ss << Mpeg::set_hms() << t4.hh << ":" << Mpeg::set_hms() << t4.mm << ":"
++ << Mpeg::set_hms() << t4.ss << ";" << Mpeg::set_hms() << t4.ff;
++ str = ss.str();
+ }
+
+ } // namespace TimeLine
+diff --git a/src/mgui/timeline/select.cpp b/src/mgui/timeline/select.cpp
+index 9d8ec5a..337ada6 100644
+--- a/src/mgui/timeline/select.cpp
++++ b/src/mgui/timeline/select.cpp
+@@ -152,7 +152,7 @@ static void SaveFrame(DAMonitor& mon)
+
+ mon.FramePixbuf()->save(fnam, ext);
+
+- SaveFrameDir() = fs::path(fnam).branch_path().string();
++ SaveFrameDir() = fs::path(fnam).parent_path().string();
+ if( add_btn.get_active() )
+ Project::TryAddMediaQuiet(fnam, "SaveFrame");
+ }
+diff --git a/src/mgui/win_utils.cpp b/src/mgui/win_utils.cpp
+index e135f1a..beafca8 100644
+--- a/src/mgui/win_utils.cpp
++++ b/src/mgui/win_utils.cpp
+@@ -132,7 +132,9 @@ void Scale(RefPtr<Context> cr, RefPtr<ImageSurface> src,
+
+ std::string ColorToString(const unsigned int rgba)
+ {
+- return (str::stream() << std::hex << (rgba >> 8)).str();
++ str::stream ss;
++ ss << std::hex << (rgba >> 8);
++ return ss.str();
+ }
+
+ CR::Color GetBGColor(Gtk::Widget& wdg)
+diff --git a/src/mlib/filesystem.cpp b/src/mlib/filesystem.cpp
+index 7ae7162..278dfc5 100644
+--- a/src/mlib/filesystem.cpp
++++ b/src/mlib/filesystem.cpp
+@@ -30,6 +30,7 @@
+ #if BOOST_MINOR_VERSION >= 51
+ #define BOOST_FS_3 boost::filesystem
+ #include <boost/filesystem/path_traits.hpp> // boost::filesystem::convert()
++#include <boost/filesystem/directory.hpp>
+ #else
+ #define BOOST_FS_3 boost::filesystem3
+ #include <boost/filesystem/v3/path_traits.hpp>
+@@ -161,25 +162,16 @@ namespace Project
+
+ fs::path MakeAbsolutePath(const fs::path& pth, const fs::path& cur_dir)
+ {
+- fs::path res;
+-
+- if( pth.is_complete() )
+- res = pth;
+- else
+- {
+- fs::path dir = cur_dir.empty() ? fs::current_path() : cur_dir ;
+- res = dir/pth;
+- }
+- return res.normalize();
++ return absolute(pth, cur_dir);
+ }
+
+ // оба аргумента должны быть абÑолютными путÑми
+ bool MakeRelativeToDir(fs::path& pth, fs::path dir)
+ {
+- pth.normalize();
+- dir.normalize();
+- ASSERT( pth.is_complete() );
+- ASSERT( dir.is_complete() );
++ pth = canonical(pth);
++ dir = canonical(dir);
++ ASSERT( pth.is_absolute() );
++ ASSERT( dir.is_absolute() );
+
+ fs::path::iterator p_itr = pth.begin(), p_end = pth.end();
+ fs::path::iterator d_itr = dir.begin(), d_end = dir.end();
+diff --git a/src/mlib/read_stream.h b/src/mlib/read_stream.h
+index 9806ae3..05c6e1f 100644
+--- a/src/mlib/read_stream.h
++++ b/src/mlib/read_stream.h
+@@ -22,6 +22,8 @@
+ #ifndef __MLIB_READ_STREAM_H__
+ #define __MLIB_READ_STREAM_H__
+
++#include <boost/mpl/bool.hpp>
++
+ #include "stream.h"
+ #include "filesystem.h"
+
+diff --git a/src/mlib/regex.cpp b/src/mlib/regex.cpp
+index df98fdb..dc9ea62 100644
+--- a/src/mlib/regex.cpp
++++ b/src/mlib/regex.cpp
+@@ -22,7 +22,7 @@
+ #include "regex.h"
+ #include "string.h"
+
+-#include <boost/regex.hpp>
++#include <boost/regex/v4/regex.hpp>
+
+ namespace re
+ {
+diff --git a/src/mlib/regex.h b/src/mlib/regex.h
+index 4a18717..8da1214 100644
+--- a/src/mlib/regex.h
++++ b/src/mlib/regex.h
+@@ -27,6 +27,7 @@
+ #include <boost/regex/v4/regbase.hpp>
+ #include <boost/regex/v4/match_flags.hpp>
+
++#include <boost/mpl/bool.hpp>
+ #include <mlib/ptr.h>
+
+ #include <string>
+@@ -185,7 +186,7 @@ bool search(const std::string& s,
+ #define RG_EW "\\>" // конец Ñлова
+ #define RG_SPS "[[:space:]]*" // пробелы
+ #define RG_NUM "([0-9]+)" // чиÑло
+-#define RG_FLT RG_NUM"([\\.,]"RG_NUM")" // вещ. чиÑло, в паре Ñ ExtractDouble()
++#define RG_FLT RG_NUM "([\\.,]" RG_NUM ")" // вещ. чиÑло, в паре Ñ ExtractDouble()
+ #define RG_CMD_BEG RG_BW // "^"RG_SPS // начало команды
+
+ bool ExtractDouble(double& val, const re::match_results& what, int idx = 1);
+diff --git a/src/mlib/sdk/bfs.h b/src/mlib/sdk/bfs.h
+index c12b5d0..6e172cc 100644
+--- a/src/mlib/sdk/bfs.h
++++ b/src/mlib/sdk/bfs.h
+@@ -7,6 +7,7 @@
+ //#define BOOST_FILESYSTEM_NO_DEPRECATED
+
+ #include <boost/filesystem/path.hpp>
++#include <boost/filesystem/exception.hpp>
+ #include <boost/filesystem/operations.hpp>
+ #include <boost/filesystem/convenience.hpp> // fs::create_directories()
+
+diff --git a/src/mlib/sdk/misc.cpp b/src/mlib/sdk/misc.cpp
+index 5d3f297..803187b 100644
+--- a/src/mlib/sdk/misc.cpp
++++ b/src/mlib/sdk/misc.cpp
+@@ -173,12 +173,16 @@ std::string PointToStr(const Point& pnt)
+ std::string Double2Str(double val)
+ {
+ //return boost::format("%1%") % val % bf::stop;
+- return (str::stream() << val).str();
++ str::stream ss;
++ ss << val;
++ return ss.str();
+ }
+
+ std::string Int2Str(int val)
+ {
+- return (str::stream() << val).str();
++ str::stream ss;
++ ss << val;
++ return ss.str();
+ }
+
+ static bool ICaseMatch(const std::string& str, const std::string& pat_str)
+diff --git a/src/mlib/sdk/system.cpp b/src/mlib/sdk/system.cpp
+index 8d10e3f..e9508bd 100644
+--- a/src/mlib/sdk/system.cpp
++++ b/src/mlib/sdk/system.cpp
+@@ -28,7 +28,9 @@
+ int GetMemSize()
+ {
+ pid_t pid = getpid();
+- std::string str = (str::stream() << "/proc/" << pid << "/statm").str();
++ str::stream ss;
++ ss << "/proc/" << pid << "/statm";
++ std::string str = ss.str();
+
+ io::stream strm(str.c_str(), iof::in);
+ int mem;
+diff --git a/src/mlib/tech.h b/src/mlib/tech.h
+index 6ddadf8..f2e2c2a 100644
+--- a/src/mlib/tech.h
++++ b/src/mlib/tech.h
+@@ -26,7 +26,7 @@
+ // ТехничеÑкие вещи
+ //
+ #include <boost/current_function.hpp> // Ð´Ð»Ñ BOOST_CURRENT_FUNCTION
+-#include <boost/detail/endian.hpp> // Ð´Ð»Ñ BOOST_XXX_ENDIAN
++#include <boost/predef/other/endian.h> // BOOST_ENDIAN_*_BYTE
+ #include <boost/version.hpp> // Ð´Ð»Ñ BOOST_MINOR_VERSION
+
+ // Ð´Ð»Ñ Ð¡-шного кода в С++
+@@ -78,9 +78,9 @@ void AssertImpl(const char* assertion, const char* file,
+ long line, const char* function);
+
+ // endianness
+-#if defined(BOOST_BIG_ENDIAN)
++#if defined(BOOST_ENDIAN_BIG_BYTE)
+ # define HAS_BIG_ENDIAN
+-#elif defined(BOOST_LITTLE_ENDIAN)
++#elif defined(BOOST_ENDIAN_LITTLE_BYTE)
+ # define HAS_LITTLE_ENDIAN
+ #else
+ # error mlib/tech.h: unknown endianness (legacy PDP arch?)
+diff --git a/src/mlib/tests/test_utils.cpp b/src/mlib/tests/test_utils.cpp
+index c4712e8..99a2e94 100644
+--- a/src/mlib/tests/test_utils.cpp
++++ b/src/mlib/tests/test_utils.cpp
+@@ -139,17 +139,17 @@ BOOST_AUTO_TEST_CASE( TestFilesystem )
+ #endif
+ }
+
+- // is_complete
++ // is_absolute
+ {
+ fs::path pth("../some_file");
+- BOOST_CHECK( !pth.is_complete() );
+- BOOST_CHECK( fs::current_path().is_complete() );
++ BOOST_CHECK( !pth.is_absolute() );
++ BOOST_CHECK( fs::current_path().is_absolute() );
+
+ fs::path apth = Project::MakeAbsolutePath(pth);
+ //LOG_INF << "Making abs path: " << pth.string() << " => " << apth.string() << io::endl;
+
+- BOOST_CHECK( Project::MakeAbsolutePath(pth, MakeRootComplete("/")).is_complete() );
+- BOOST_CHECK( !Project::MakeAbsolutePath(pth, "./").is_complete() );
++ BOOST_CHECK( Project::MakeAbsolutePath(pth, MakeRootComplete("/")).is_absolute() );
++ BOOST_CHECK( !Project::MakeAbsolutePath(pth, "./").is_absolute() );
+ }
+
+ // MakeRelativeToDir
diff --git a/multimedia/bombono-dvd/patches/boost.patch b/multimedia/bombono-dvd/patches/boost.patch
deleted file mode 100644
index 1bb95aaaa4..0000000000
--- a/multimedia/bombono-dvd/patches/boost.patch
+++ /dev/null
@@ -1,157 +0,0 @@
-diff -ru bombono-dvd-1.2.2/src/mbase/project/table.cpp new/src/mbase/project/table.cpp
---- bombono-dvd-1.2.2/src/mbase/project/table.cpp 2013-03-08 00:50:45.000000000 +0330
-+++ new/src/mbase/project/table.cpp 2016-01-19 13:02:00.117338769 +0330
-@@ -154,7 +154,7 @@
- void SerializePath(Archieve& ar, const char* tag_name, std::string& fpath)
- {
- //ar & NameValue("Path", mdPath);
-- fs::path rel_to_dir = fs::path(AData().GetProjectFName()).branch_path();
-+ fs::path rel_to_dir = fs::path(AData().GetProjectFName()).parent_path();
- if( ar.IsLoad() )
- {
- ar >> NameValue(tag_name, fpath);
-diff -ru bombono-dvd-1.2.2/src/mgui/author/script.cpp new/src/mgui/author/script.cpp
---- bombono-dvd-1.2.2/src/mgui/author/script.cpp 2016-01-19 12:54:07.640700667 +0330
-+++ new/src/mgui/author/script.cpp 2016-01-19 12:59:52.407346489 +0330
-@@ -676,7 +676,7 @@
- if( !fs::exists(font_path) )
- {
- std::string err_str;
-- if( !CreateDirs(font_path.branch_path(), err_str) )
-+ if( !CreateDirs(font_path.parent_path(), err_str) )
- Error(err_str.c_str());
- fs::copy_file(DataDirPath("copy-n-paste/FreeSans.ttf"), font_path);
- }
-diff -ru bombono-dvd-1.2.2/src/mgui/mux.cpp new/src/mgui/mux.cpp
---- bombono-dvd-1.2.2/src/mgui/mux.cpp 2013-03-08 00:50:45.000000000 +0330
-+++ new/src/mgui/mux.cpp 2016-01-19 12:58:22.840685236 +0330
-@@ -162,7 +162,7 @@
- fs::path pth = GetFilename(v_btn);
- if( pth.empty() )
- return;
-- std::string folder = pth.branch_path().string();
-+ std::string folder = pth.parent_path().string();
-
- if( a_btn.get_filename().empty() )
- a_btn.set_current_folder(folder);
-diff -ru bombono-dvd-1.2.2/src/mgui/project/add.cpp new/src/mgui/project/add.cpp
---- bombono-dvd-1.2.2/src/mgui/project/add.cpp 2016-01-19 12:54:07.634034002 +0330
-+++ new/src/mgui/project/add.cpp 2016-01-19 13:00:49.220676388 +0330
-@@ -479,7 +479,7 @@
- MessageBox(BF_("The file \"%1%\" looks like VOB from DVD.\nRun import?") % leaf % bf::stop,
- Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_OK_CANCEL) == Gtk::RESPONSE_OK )
- {
-- DVD::RunImport(*GetTopWindow(brw), pth.branch_path().string());
-+ DVD::RunImport(*GetTopWindow(brw), pth.parent_path().string());
- return;
- }
- }
-diff -ru bombono-dvd-1.2.2/src/mgui/project/serialize.cpp new/src/mgui/project/serialize.cpp
---- bombono-dvd-1.2.2/src/mgui/project/serialize.cpp 2013-03-08 00:50:45.000000000 +0330
-+++ new/src/mgui/project/serialize.cpp 2016-01-19 13:00:29.230677594 +0330
-@@ -73,7 +73,7 @@
- fs::path full_path(db.GetProjectFName());
- std::string res_str = fs::name_str(full_path);
- if( with_path_breakdown )
-- res_str += " (" + full_path.branch_path().string() + ")";
-+ res_str += " (" + full_path.parent_path().string() + ")";
- return res_str;
- }
-
-diff -ru bombono-dvd-1.2.2/src/mgui/timeline/select.cpp new/src/mgui/timeline/select.cpp
---- bombono-dvd-1.2.2/src/mgui/timeline/select.cpp 2013-03-08 00:50:45.000000000 +0330
-+++ new/src/mgui/timeline/select.cpp 2016-01-19 12:59:12.187348923 +0330
-@@ -152,7 +152,7 @@
-
- mon.FramePixbuf()->save(fnam, ext);
-
-- SaveFrameDir() = fs::path(fnam).branch_path().string();
-+ SaveFrameDir() = fs::path(fnam).parent_path().string();
- if( add_btn.get_active() )
- Project::TryAddMediaQuiet(fnam, "SaveFrame");
- }
-diff -ru bombono-dvd-1.2.2/src/mbase/project/table.cpp new/src/mbase/project/table.cpp
---- bombono-dvd-1.2.2/src/mbase/project/table.cpp 2016-01-19 13:11:42.883970202 +0330
-+++ new/src/mbase/project/table.cpp 2016-01-19 13:42:58.317190146 +0330
-@@ -162,7 +162,7 @@
- if( !fpath.empty() )
- {
- fs::path pth(fpath);
-- if( !pth.is_complete() )
-+ if( !pth.is_absolute() )
- fpath = (rel_to_dir/fpath).string();
- }
- }
-diff -ru bombono-dvd-1.2.2/src/mbase/project/tests/test_table.cpp new/src/mbase/project/tests/test_table.cpp
---- bombono-dvd-1.2.2/src/mbase/project/tests/test_table.cpp 2013-03-08 00:50:45.000000000 +0330
-+++ new/src/mbase/project/tests/test_table.cpp 2016-01-19 13:42:16.977192649 +0330
-@@ -129,7 +129,7 @@
- // проверка чтениÑ/запиÑи путей
- boost::intrusive_ptr<StillImageMD> pict2 = ptr::dynamic_pointer_cast<StillImageMD>(ml[2]);
- fs::path pth = pict2->GetPath();
-- BOOST_CHECK( pth.is_complete() );
-+ BOOST_CHECK( pth.is_absolute() );
- BOOST_CHECK( fs::exists(pth) );
-
- // проверка ÑÑылок
-diff -ru bombono-dvd-1.2.2/src/mlib/tests/test_utils.cpp new/src/mlib/tests/test_utils.cpp
---- bombono-dvd-1.2.2/src/mlib/tests/test_utils.cpp 2013-03-08 00:50:45.000000000 +0330
-+++ new/src/mlib/tests/test_utils.cpp 2016-01-19 13:23:58.830592369 +0330
-@@ -139,17 +139,17 @@
- #endif
- }
-
-- // is_complete
-+ // is_absolute
- {
- fs::path pth("../some_file");
-- BOOST_CHECK( !pth.is_complete() );
-- BOOST_CHECK( fs::current_path().is_complete() );
-+ BOOST_CHECK( !pth.is_absolute() );
-+ BOOST_CHECK( fs::current_path().is_absolute() );
-
- fs::path apth = Project::MakeAbsolutePath(pth);
- //LOG_INF << "Making abs path: " << pth.string() << " => " << apth.string() << io::endl;
-
-- BOOST_CHECK( Project::MakeAbsolutePath(pth, MakeRootComplete("/")).is_complete() );
-- BOOST_CHECK( !Project::MakeAbsolutePath(pth, "./").is_complete() );
-+ BOOST_CHECK( Project::MakeAbsolutePath(pth, MakeRootComplete("/")).is_absolute() );
-+ BOOST_CHECK( !Project::MakeAbsolutePath(pth, "./").is_absolute() );
- }
-
- // MakeRelativeToDir
-diff -ru bombono-dvd-1.2.2/src/mlib/filesystem.cpp new/src/mlib/filesystem.cpp
---- bombono-dvd-1.2.2/src/mlib/filesystem.cpp 2013-03-08 00:50:45.000000000 +0330
-+++ new/src/mlib/filesystem.cpp 2016-01-19 14:02:05.303787474 +0330
-@@ -161,25 +161,16 @@
-
- fs::path MakeAbsolutePath(const fs::path& pth, const fs::path& cur_dir)
- {
-- fs::path res;
--
-- if( pth.is_complete() )
-- res = pth;
-- else
-- {
-- fs::path dir = cur_dir.empty() ? fs::current_path() : cur_dir ;
-- res = dir/pth;
-- }
-- return res.normalize();
-+ return absolute(pth, cur_dir);
- }
-
- // оба аргумента должны быть абÑолютными путÑми
- bool MakeRelativeToDir(fs::path& pth, fs::path dir)
- {
-- pth.normalize();
-- dir.normalize();
-- ASSERT( pth.is_complete() );
-- ASSERT( dir.is_complete() );
-+ pth = canonical(pth);
-+ dir = canonical(dir);
-+ ASSERT( pth.is_absolute() );
-+ ASSERT( dir.is_absolute() );
-
- fs::path::iterator p_itr = pth.begin(), p_end = pth.end();
- fs::path::iterator d_itr = dir.begin(), d_end = dir.end();
-
diff --git a/multimedia/bombono-dvd/patches/ffmpeg3.patch b/multimedia/bombono-dvd/patches/ffmpeg3.patch
deleted file mode 100644
index ccf726cd1f..0000000000
--- a/multimedia/bombono-dvd/patches/ffmpeg3.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN old/src/mgui/ffviewer.cpp new/src/mgui/ffviewer.cpp
---- old/src/mgui/ffviewer.cpp 2016-06-18 11:37:10.409735832 +0430
-+++ new/src/mgui/ffviewer.cpp 2016-06-18 11:45:40.343038336 +0430
-@@ -36,6 +36,10 @@
- #define AVFORMAT_54
- #endif
-
-+C_LINKAGE_BEGIN
-+#include <libavutil/imgutils.h>
-+C_LINKAGE_END
-+
- // разрабы libav Ñчитают ÑÐµÐ±Ñ Ñамыми умными и потому решили
- // закрыть проÑтым Ñмертным доÑтуп к ffurl_register_protocol()
- // (Ð±Ñ‹Ð²ÑˆÐ°Ñ av_register_protocol2()),- https://bugzilla.libav.org/show_bug.cgi?id=224
-@@ -807,7 +811,7 @@
- #ifdef AVFRAME_INIT_CHANGE
- // avcodec_get_frame_defaults() перенеÑли в avcodec_decode_video2()
- #else
-- avcodec_get_frame_defaults(&picture); // ffmpeg.c очищает каждый раз
-+ av_frame_unref (&picture);
- #endif
-
- #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52,25,00)
-
diff --git a/multimedia/bombono-dvd/patches/fix_c++11_literal_warnings.patch b/multimedia/bombono-dvd/patches/fix_c++11_literal_warnings.patch
deleted file mode 100644
index 5cfc96f47e..0000000000
--- a/multimedia/bombono-dvd/patches/fix_c++11_literal_warnings.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-diff -ruN old/src/mlib/regex.h new/src/mlib/regex.h
---- old/src/mlib/regex.h 2016-04-10 15:15:39.000000000 +0430
-+++ new/src/mlib/regex.h 2016-06-18 11:02:30.666528235 +0430
-@@ -185,7 +185,7 @@
- #define RG_EW "\\>" // конец Ñлова
- #define RG_SPS "[[:space:]]*" // пробелы
- #define RG_NUM "([0-9]+)" // чиÑло
--#define RG_FLT RG_NUM"([\\.,]"RG_NUM")" // вещ. чиÑло, в паре Ñ ExtractDouble()
-+#define RG_FLT RG_NUM "([\\.,]" RG_NUM ")" // вещ. чиÑло, в паре Ñ ExtractDouble()
- #define RG_CMD_BEG RG_BW // "^"RG_SPS // начало команды
-
- bool ExtractDouble(double& val, const re::match_results& what, int idx = 1);
-diff -ruN old/src/mgui/author/burn.cpp new/src/mgui/author/burn.cpp
---- old/src/mgui/author/burn.cpp 2016-04-10 15:15:39.000000000 +0430
-+++ new/src/mgui/author/burn.cpp 2016-06-18 11:04:08.113189012 +0430
-@@ -85,7 +85,7 @@
- return bd;
- }
-
--re::pattern WriteSpeed_RE("Write Speed #"RG_NUM":"RG_SPS RG_NUM"\\."RG_NUM "x1385");
-+re::pattern WriteSpeed_RE("Write Speed #" RG_NUM ":" RG_SPS RG_NUM "\\." RG_NUM "x1385");
-
- RefPtr<Gtk::ListStore> sp_store;
-
-@@ -253,7 +253,7 @@
- }
- else
- {
-- static re::pattern media_type_re("Mounted Media:"RG_SPS"[0-9A-F]+h, ([^ \n]+)");
-+ static re::pattern media_type_re("Mounted Media:" RG_SPS "[0-9A-F]+h, ([^ \n]+)");
- re::match_results what;
-
- bool is_found = re::search(out_info, what, media_type_re);
-@@ -277,7 +277,7 @@
- // isBlank
- if( res != dvdOTHER )
- {
-- static re::pattern media_status_re("Disc status:"RG_SPS"([a-z]+)\n");
-+ static re::pattern media_status_re("Disc status:" RG_SPS "([a-z]+)\n");
- bool is_found = re::search(out_info, what, media_status_re);
- ASSERT_RTL( is_found );
-
-diff -ruN old/src/mgui/author/execute.cpp new/src/mgui/author/execute.cpp
---- old/src/mgui/author/execute.cpp 2016-04-10 15:15:39.000000000 +0430
-+++ new/src/mgui/author/execute.cpp 2016-06-18 11:07:03.359845082 +0430
-@@ -64,9 +64,9 @@
- tag->property_foreground() = "darkgreen";
- }
-
--re::pattern DVDAuthorRE(RG_CMD_BEG"dvdauthor"RG_EW ".*-x"RG_EW RG_SPS RG_BW"DVDAuthor\\.xml"RG_EW);
--re::pattern MkIsoFsRE(RG_CMD_BEG MK_ISO_CMD RG_EW ".*-dvd-video"RG_EW ".*>.*"RG_BW"dvd.iso"RG_EW);
--re::pattern GrowIsoFsRE(RG_CMD_BEG"growisofs"RG_EW ".*-dvd-compat"RG_EW ".*-dvd-video"RG_EW);
-+re::pattern DVDAuthorRE(RG_CMD_BEG"dvdauthor" RG_EW ".*-x" RG_EW RG_SPS RG_BW "DVDAuthor\\.xml" RG_EW);
-+re::pattern MkIsoFsRE(RG_CMD_BEG MK_ISO_CMD RG_EW ".*-dvd-video" RG_EW ".*>.*" RG_BW "dvd.iso" RG_EW);
-+re::pattern GrowIsoFsRE(RG_CMD_BEG"growisofs" RG_EW ".*-dvd-compat" RG_EW ".*-dvd-video" RG_EW);
-
- //static void PrintMatchResults(const re::match_results& what)
- //{
-@@ -94,7 +94,7 @@
- virtual void Filter(const std::string& line);
- };
-
--re::pattern MkIsoFsPercent_RE( RG_FLT"?% done");
-+re::pattern MkIsoFsPercent_RE( RG_FLT "?% done");
-
- void MkIsoFsPP::Filter(const std::string& line)
- {
-@@ -126,8 +126,8 @@
- bool fixStage;
- };
-
--re::pattern DVDAuthorVOB_RE( "^STAT: VOBU "RG_NUM" at "RG_NUM"MB");
--re::pattern DVDAuthorFix_RE( "^STAT: fixing VOBU at "RG_NUM"MB \\("RG_NUM"/"RG_NUM", "RG_NUM"%\\)");
-+re::pattern DVDAuthorVOB_RE( "^STAT: VOBU " RG_NUM " at " RG_NUM "MB");
-+re::pattern DVDAuthorFix_RE( "^STAT: fixing VOBU at " RG_NUM "MB \\(" RG_NUM "/" RG_NUM ", " RG_NUM "%\\)");
-
- void DVDAuthorPP::Filter(const std::string& line)
- {
-@@ -157,7 +157,7 @@
- if( p )
- of.SetProgress(p);
-
-- static re::pattern ch_error_re("ERR:.*Cannot jump to chapter "RG_NUM" of title "RG_NUM", only "RG_NUM" exist");
-+ static re::pattern ch_error_re("ERR:.*Cannot jump to chapter " RG_NUM " of title " RG_NUM ", only " RG_NUM " exist");
- if( re::search(line, what, ch_error_re) )
- {
- std::string& err_str = of.firstError;
-diff -ruN old/src/mgui/author/render.cpp new/src/mgui/author/render.cpp
---- old/src/mgui/author/render.cpp 2016-04-10 15:15:39.000000000 +0430
-+++ new/src/mgui/author/render.cpp 2016-06-18 11:08:43.919839004 +0430
-@@ -866,7 +866,7 @@
- //
- // :KLUDGE: (только) в ffmpeg, avformat 53.13.0, поменÑли . на : => надо
- // Ñамим открывать файл и узнавать индекÑ!
-- static re::pattern audio_idx("Stream #"RG_NUM"[\\.|:]"RG_NUM".*Audio:");
-+ static re::pattern audio_idx("Stream #" RG_NUM "[\\.|:]" RG_NUM ".*Audio:");
-
- re::match_results what;
- // флаг означает, что перевод Ñтроки не может быть точкой
-@@ -1221,17 +1221,17 @@
- {
- CheckNoCodecs(CheckForCodecList(conts));
-
-- static re::pattern dvd_format("^ .E dvd"RG_EW);
-+ static re::pattern dvd_format("^ .E dvd" RG_EW);
- CheckStrippedFFmpeg(dvd_format, conts, "dvd format");
-
- // :TRICKY: Ñ Ð²ÐµÑ€Ñии libavcodec 54 при выводе начальный пробел не ÑтавÑÑ‚ => поÑтому ?
- // ("ÑпаÑибо" Anton Khirnov за очередное "улучшение")
- #define _CPP_ "^ ?"
-- static re::pattern mpeg2video_codec(_CPP_".EV... mpeg2video"RG_EW);
-+ static re::pattern mpeg2video_codec(_CPP_ ".EV... mpeg2video" RG_EW);
- CheckStrippedFFmpeg(mpeg2video_codec, conts, "mpeg2 video encoder");
-
- // по факту ffmpeg вÑегда иÑпользует ac3, однако mp2 тоже возможен
-- static re::pattern ac3_codec(_CPP_".EA... ac3"RG_EW);
-+ static re::pattern ac3_codec(_CPP_ ".EA... ac3" RG_EW);
- CheckStrippedFFmpeg(ac3_codec, conts, "ac3 audio encoder");
- #undef _CPP_
- }
-@@ -1241,7 +1241,7 @@
- // * ищем верÑию libavfilter
- // пример: " libavfilter 0. 4. 0 / "
- #define RG_PADNUM RG_SPS RG_NUM
-- std::string reg_str = boost::format(RG_BW"%1%"RG_PADNUM"\\."RG_PADNUM"\\."RG_PADNUM" / ")
-+ std::string reg_str = boost::format(RG_BW "%1%" RG_PADNUM "\\." RG_PADNUM "\\." RG_PADNUM " / ")
- % avlib_name % bf::stop;
- re::pattern avfilter_version(reg_str.c_str());
- return FindVersion(conts, avfilter_version, AVCnvBin(), avlib_name);
-diff -ruN old/src/mgui/author/script.cpp new/src/mgui/author/script.cpp
---- old/src/mgui/author/script.cpp 2016-04-10 15:15:39.000000000 +0430
-+++ new/src/mgui/author/script.cpp 2016-06-18 11:09:54.899834712 +0430
-@@ -755,9 +755,9 @@
- // ffmpeg выводит ÑтатиÑтику первого Ñоздаваемого файла каждые полÑекунды,
- // Ñм. print_report() (при verbose=1, по умолчанию)
- // Формат размера: "size=%8.0fkB"
--re::pattern FFmpegSizePat( "size= *"RG_NUM"kB");
-+re::pattern FFmpegSizePat( "size= *" RG_NUM "kB");
- // Формат длительноÑти: "time=%0.2f"
--re::pattern FFmpegDurPat( "time="RG_FLT);
-+re::pattern FFmpegDurPat( "time=" RG_FLT);
-
- static void OnTranscodePrintParse(const char* dat, int sz, const PercentFunctor& fnr)
- {
-@@ -787,7 +787,7 @@
-
- // Формат длительноÑти Ð´Ð»Ñ ffmpeg c коммита dd471070: "time=%02d:%02d:%02d.%02d"
- // Образец: frame= 208 fps= 58 q=2.0 size= 476kB time=00:00:08.44 bitrate= 461.9kbits/s dup=1 drop=0
--re::pattern FFmpegNewDurPat( "time="RG_NUM":"RG_NUM":"RG_FLT);
-+re::pattern FFmpegNewDurPat( "time=" RG_NUM ":" RG_NUM ":" RG_FLT);
-
- static void OnTranscodeHMSParse(const char* dat, int sz, const PercentFunctor& fnr)
- {
-@@ -1136,7 +1136,7 @@
- // 2) парÑер dvdauthor не любит незнакомые ему атрибуты => spumux < 0.7 не работает
- std::string help_str;
- PipeOutput("spumux -h", help_str);
-- static re::pattern spumux_version("DVDAuthor::spumux, version "RG_NUM"\\."RG_NUM"\\."RG_NUM"\\.\n");
-+ static re::pattern spumux_version("DVDAuthor::spumux, version " RG_NUM "\\." RG_NUM "\\." RG_NUM "\\.\n");
- if( IsVersionGE(FindVersion(help_str, spumux_version, "spumux"), TripleVersion(0, 7, 0)) )
- AddFormatAttr(sp);
-
-diff -ruN old/src/mgui/project/browser.cpp new/src/mgui/project/browser.cpp
---- old/src/mgui/project/browser.cpp 2016-04-10 15:15:39.000000000 +0430
-+++ new/src/mgui/project/browser.cpp 2016-06-18 11:10:21.113166461 +0430
-@@ -328,7 +328,7 @@
- return hb;
- }
-
--std::string MediaItemDnDTVType() { return "DnDTreeView<"DND_MI_NAME">"; }
-+std::string MediaItemDnDTVType() { return "DnDTreeView<" DND_MI_NAME ">"; }
-
- void SetupBrowser(ObjectBrowser& brw, int dnd_column, bool is_media_brw)
- {
diff --git a/multimedia/bombono-dvd/patches/fix_ffmpeg_codecid.patch b/multimedia/bombono-dvd/patches/fix_ffmpeg_codecid.patch
deleted file mode 100644
index 6474693db4..0000000000
--- a/multimedia/bombono-dvd/patches/fix_ffmpeg_codecid.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-diff -u -r -N old/src/mgui/ffviewer.cpp new/src/mgui/ffviewer.cpp
---- old/src/mgui/ffviewer.cpp 2016-04-10 15:15:39.000000000 +0430
-+++ new/src/mgui/ffviewer.cpp 2016-06-18 10:40:26.789941610 +0430
-@@ -74,7 +74,7 @@
-
- typedef struct AVCodecTag {
- #if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,39,00)
-- enum CodecID id;
-+ enum AVCodecID id;
- #else
- int id;
- #endif
-@@ -82,14 +82,14 @@
- } AVCodecTag;
-
- #if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,34,00)
--static uint FFCodecID2Tag(CodecID codec_id)
-+static uint FFCodecID2Tag(AVCodecID codec_id)
- {
- unsigned int ff_codec_get_tag(const AVCodecTag *tags, int id);
- extern const AVCodecTag ff_codec_bmp_tags[];
- return ff_codec_get_tag(ff_codec_bmp_tags, codec_id);
- }
- #else
--static uint FFCodecID2Tag(CodecID codec_id)
-+static uint FFCodecID2Tag(AVCodecID codec_id)
- {
- unsigned int codec_get_tag(const AVCodecTag *tags, int id);
- extern const AVCodecTag codec_bmp_tags[];
-@@ -400,7 +400,7 @@
- return (tag>>bit_begin) & 0xFF;
- }
-
--static std::string CodecID2Str(CodecID codec_id)
-+static std::string CodecID2Str(AVCodecID codec_id)
- {
- #ifdef _MSC_VER
- std::string tag_str = boost::format("%1%") % codec_id % bf::stop;
-
diff --git a/multimedia/bombono-dvd/patches/fix_ptr2bool_cast.patch b/multimedia/bombono-dvd/patches/fix_ptr2bool_cast.patch
deleted file mode 100644
index 4999db1ca4..0000000000
--- a/multimedia/bombono-dvd/patches/fix_ptr2bool_cast.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -ruN old/src/mgui/dvdimport.cpp new/src/mgui/dvdimport.cpp
---- old/src/mgui/dvdimport.cpp 2016-04-10 15:15:39.000000000 +0430
-+++ new/src/mgui/dvdimport.cpp 2016-06-18 10:52:35.713230871 +0430
-@@ -275,7 +275,7 @@
- id.errLbl.hide();
-
- id.reader = rd;
-- SetCurPageComplete(id.ast, id.reader);
-+ SetCurPageComplete(id.ast, bool(id.reader));
-
- return rd;
- }
-
diff --git a/multimedia/bombono-dvd/patches/scons.diff b/multimedia/bombono-dvd/patches/scons.diff
new file mode 100644
index 0000000000..d45d1d4d1f
--- /dev/null
+++ b/multimedia/bombono-dvd/patches/scons.diff
@@ -0,0 +1,221 @@
+diff -Naur bombono-dvd-1.2.4/SConstruct bombono-dvd-1.2.4.patched/SConstruct
+--- bombono-dvd-1.2.4/SConstruct 2016-04-10 06:45:39.000000000 -0400
++++ bombono-dvd-1.2.4.patched/SConstruct 2022-02-15 13:53:32.444205004 -0500
+@@ -274,13 +274,13 @@
+ # Config
+
+ if os.path.exists( BV.CfgFile ):
+- print "Using config file: " + BV.CfgFile
++ print("Using config file: " + BV.CfgFile)
+
+ user_options = Variables(BV.CfgFile, BV.Args)
+ ParseVariables(user_options)
+
+ else:
+- print "Creating new config file: " + BV.CfgFile
++ print("Creating new config file: " + BV.CfgFile)
+
+ user_options = Variables(None, BV.Args)
+ ParseVariables(user_options)
+@@ -352,20 +352,19 @@
+
+ def GenerateBaseConfigH(target, source, env):
+ cfg_file = open(target[0].path, 'w')
+- print >> cfg_file, "/* Generated by means of Autoconfig */"
++ print("/* Generated by means of Autoconfig */", file=cfg_file)
+
+ config_dict = user_options_dict['CONFIGURATION']
+- key_list = config_dict.keys()
+- key_list.sort()
++ key_list = sorted(config_dict)
+
+ for key in key_list:
+ var = config_dict[key]
+
+ text = var.get('text', None)
+ if text:
+- print >> cfg_file
++ print("", file=cfg_file)
+ BV.AddComment(cfg_file, var)
+- print >> cfg_file, text
++ print(text, file=cfg_file)
+ continue
+
+ BV.AddDefine(cfg_file, key, **var)
+diff -Naur bombono-dvd-1.2.4/libs/mpeg2dec/SConscript bombono-dvd-1.2.4.patched/libs/mpeg2dec/SConscript
+--- bombono-dvd-1.2.4/libs/mpeg2dec/SConscript 2016-04-10 06:45:39.000000000 -0400
++++ bombono-dvd-1.2.4.patched/libs/mpeg2dec/SConscript 2022-02-15 13:47:04.028766834 -0500
+@@ -69,9 +69,9 @@
+
+ def GenerateMpeg2DecCfg(target, source, env):
+ cfg_file = open(target[0].path, 'w')
+- print >> cfg_file, "/* Auto-generated header */"
+- print >> cfg_file
+- print >> cfg_file, '#include <cfg/config.h>'
++ print("/* Auto-generated header */", file=cfg_file)
++ print("", file=cfg_file)
++ print('#include <cfg/config.h>', file=cfg_file)
+
+ BuildVars.AddDefine(cfg_file, 'ACCEL_DETECT', is_on = 1, comment = "autodetect accelerations")
+ BuildVars.AddDefine(cfg_file, 'LIBVO_DX', is_on = 0, comment = "libvo DirectX support")
+diff -Naur bombono-dvd-1.2.4/po/SConscript bombono-dvd-1.2.4.patched/po/SConscript
+--- bombono-dvd-1.2.4/po/SConscript 2016-04-10 06:45:39.000000000 -0400
++++ bombono-dvd-1.2.4.patched/po/SConscript 2022-02-15 13:47:04.028766834 -0500
+@@ -35,7 +35,7 @@
+ str(source[0]),
+ str(source[1]),
+ ]
+- print 'Updating ' + trgt
++ print('Updating ' + trgt)
+ return os.spawnvp(os.P_WAIT, 'msgmerge', args)
+
+ po_bld = Builder (action = po_builder)
+diff -Naur bombono-dvd-1.2.4/src/mgui/tests/SConscript bombono-dvd-1.2.4.patched/src/mgui/tests/SConscript
+--- bombono-dvd-1.2.4/src/mgui/tests/SConscript 2016-04-10 06:45:39.000000000 -0400
++++ bombono-dvd-1.2.4.patched/src/mgui/tests/SConscript 2022-02-15 13:47:04.028766834 -0500
+@@ -36,8 +36,8 @@
+ bin_mgui_tests_env.Program(target=test_prg_name, source = source_files+lib_mgui_objs)
+
+ import os
+-if os.environ.has_key('DISPLAY'):
++if 'DISPLAY' in os.environ:
+ UnitTest(test_prg_name, bin_mgui_tests_env)
+ else:
+- print "Warning: X Display is not found. GUI tests are disabled."
++ print("Warning: X Display is not found. GUI tests are disabled.")
+
+diff -Naur bombono-dvd-1.2.4/tools/scripts/BuildVars.py bombono-dvd-1.2.4.patched/tools/scripts/BuildVars.py
+--- bombono-dvd-1.2.4/tools/scripts/BuildVars.py 2016-04-10 06:45:39.000000000 -0400
++++ bombono-dvd-1.2.4.patched/tools/scripts/BuildVars.py 2022-02-15 13:47:54.476603032 -0500
+@@ -30,11 +30,11 @@
+
+ def PrintBright(is_end):
+ if not is_end:
+- print
+- print "****************************************************"
++ print()
++ print("****************************************************")
+ else:
+- print "****************************************************"
+- print
++ print("****************************************************")
++ print()
+
+ def IsDebugCfg():
+ return BuildCfg == 'debug'
+@@ -68,10 +68,10 @@
+ def CheckSettings(main_env):
+ global Cc, Cxx, BuildDir, Targets, RunTests, BuildTests
+ if RunTests :
+- print 'Tests: on'
++ print('Tests: on')
+ else:
+ if BuildTests:
+- print 'Tests: on (only building)'
++ print('Tests: on (only building)')
+
+ def_env = GetDefEnv()
+ # for SCons =<0.96 we need to warn that just 'scons' is not enough:
+@@ -92,9 +92,9 @@
+ ( (len(BuildDir) >= 1 and BuildDir[0] == '/') or (len(BuildDir) >= 2 and BuildDir[0:2] == '..') ) and \
+ (Targets == [] or Targets == ['.']) :
+ PrintBright(0)
+- print 'Warning! "scons" or "scons ." detected while BUILD_DIR is outside "."!'
+- print 'To build successfully with SCons <= v0.96.1 you may need to run something like '
+- print '\t"scons <...> ' + BuildDir + '".'
++ print('Warning! "scons" or "scons ." detected while BUILD_DIR is outside "."!')
++ print('To build successfully with SCons <= v0.96.1 you may need to run something like ')
++ print('\t"scons <...> ' + BuildDir + '".' )
+ PrintBright(1)
+
+ # we use TestSConscript() function instead of SConscript()
+@@ -149,7 +149,7 @@
+ SetBriefOutput(main_env)
+
+ # to separate our output from SCons'
+- print
++ print()
+
+ # Non/Verbose output
+ def SetBriefOutput(env):
+@@ -228,7 +228,7 @@
+
+ def ErrorAndExit(msg):
+ PrintBright(0)
+- print msg
++ print(msg)
+ PrintBright(1)
+
+ GetDefEnv().Exit(1)
+@@ -383,20 +383,20 @@
+ comment = MakeHeaderComment(var['ccomment'], var.get('val') == '1')
+
+ if comment:
+- print >> cfg_file, "/* " + comment + " */"
++ print("/* " + comment + " */", file=cfg_file)
+
+ def AddDefine(cfg_file, key, **var):
+- print >> cfg_file
++ print("", file=cfg_file)
+ AddComment(cfg_file, var)
+
+ if var['is_on']:
+ str = var.get('val', None)
+ if str == None:
+- print >> cfg_file, "#define %s" % key
++ print("#define %s" % key, file=cfg_file)
+ else:
+- print >> cfg_file, "#define %s %s" % (key, var['val'])
++ print("#define %s %s" % (key, var['val']), file=cfg_file)
+ else:
+- print >> cfg_file, "/* #undef %s */" % key
++ print("/* #undef %s */" % key, file=cfg_file)
+
+ GenFunctionMap = {}
+
+@@ -495,7 +495,7 @@
+ res = True
+ elif not IsReenter(IsToBuildQuick):
+ # warn once only
+- print 'BUILD_QUICK=true is not supported for current compiler(%s)!' % Cc
++ print('BUILD_QUICK=true is not supported for current compiler(%s)!' % Cc)
+
+ return res
+
+@@ -504,7 +504,7 @@
+
+ def CreateEnvVersion2(**kw):
+ tools = ['default', 'AuxTools']
+- if kw.has_key('tools'):
++ if 'tools' in kw:
+ tools += kw['tools']
+ kw['tools'] = tools
+
+diff -Naur bombono-dvd-1.2.4/tools/scripts/copy_boost.py bombono-dvd-1.2.4.patched/tools/scripts/copy_boost.py
+--- bombono-dvd-1.2.4/tools/scripts/copy_boost.py 2016-04-10 06:45:39.000000000 -0400
++++ bombono-dvd-1.2.4.patched/tools/scripts/copy_boost.py 2022-02-15 13:47:04.029766851 -0500
+@@ -26,7 +26,7 @@
+ for fname in os.listdir(boost_dst):
+ if not fname in lst:
+ fpath = os.path.join(boost_dst, fname)
+- print 'rm', fpath
++ #print 'rm', fpath
+ o_p.del_any_fpath(fpath)
+
+ cmd = '''%(bcp)s --boost=%(boost_src)s boost/smart_ptr.hpp boost/test boost/function.hpp boost/lambda boost/bind \
+diff -Naur bombono-dvd-1.2.4/tools/scripts/gch.py bombono-dvd-1.2.4.patched/tools/scripts/gch.py
+--- bombono-dvd-1.2.4/tools/scripts/gch.py 2016-04-10 06:45:39.000000000 -0400
++++ bombono-dvd-1.2.4.patched/tools/scripts/gch.py 2022-02-15 13:47:04.029766851 -0500
+@@ -78,10 +78,10 @@
+
+
+ def SetPCHDependencies(target, source, env, gch_key):
+- if env.has_key(gch_key) and env[gch_key]:
++ if gch_key in env and env[gch_key]:
+ gch_node = env[gch_key]
+ # Murav'jov - alternative variant
+- if env.has_key('DepGch') and env['DepGch']:
++ if 'DepGch' in env and env['DepGch']:
+ env.Depends(target, gch_node)
+ else:
+ scanner = GetCScannerFunc()
diff --git a/multimedia/cantata/cantata.SlackBuild b/multimedia/cantata/cantata.SlackBuild
index dc67fd6e88..e1bb6b57b8 100644
--- a/multimedia/cantata/cantata.SlackBuild
+++ b/multimedia/cantata/cantata.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for cantata
-# Copyright 2014 - 2017 Ruben Schuller
+# Copyright 2014 - 2022 Ruben Schuller
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=cantata
-VERSION=${VERSION:-2.0.1}
+VERSION=${VERSION:-2.5.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -99,4 +109,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/cantata/cantata.info b/multimedia/cantata/cantata.info
index ef59fb5c29..b5b9285735 100644
--- a/multimedia/cantata/cantata.info
+++ b/multimedia/cantata/cantata.info
@@ -1,10 +1,10 @@
PRGNAM="cantata"
-VERSION="2.0.1"
+VERSION="2.5.0"
HOMEPAGE="https://github.com/CDrummond/cantata"
-DOWNLOAD="https://github.com/CDrummond/cantata/archive/v2.0.1/cantata-2.0.1.tar.gz"
-MD5SUM="db916af5dad5063d31e1ab43fac61ffa"
+DOWNLOAD="https://github.com/CDrummond/cantata/archive/v2.5.0/cantata-2.5.0.tar.gz"
+MD5SUM="aca989aa520ce21adef5b44321b4dedd"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg"
+REQUIRES=""
MAINTAINER="Ruben Schuller"
EMAIL="sb@rbn.im"
diff --git a/multimedia/castget/README b/multimedia/castget/README
new file mode 100644
index 0000000000..e17bb1c8d4
--- /dev/null
+++ b/multimedia/castget/README
@@ -0,0 +1,9 @@
+castget is a simple, command-line based RSS enclosure downloader. It is
+primarily intended for automatic, unattended downloading of podcasts.
+
+It features
+ - simple configuration,
+ - automatic tagging of downloaded MP3 files using ID3v2,
+ - automatic M3U playlists, and
+ - support for all RSS versions (to the extent this is possible) and
+ Media RSS.
diff --git a/multimedia/castget/castget.SlackBuild b/multimedia/castget/castget.SlackBuild
new file mode 100644
index 0000000000..f13e3c8132
--- /dev/null
+++ b/multimedia/castget/castget.SlackBuild
@@ -0,0 +1,112 @@
+#!/bin/bash
+
+# Slackware build script for castget
+
+# Copyright 2020 Jeff Parent <jeff+SBo@sh0.xyz>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=castget
+VERSION=${VERSION:-2.0.1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --build=$ARCH-slackware-linux
+
+make
+make install DESTDIR=$PKG
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS CHANGES.md castgetrc.example COPYING COPYING.LIB INSTALL \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/castget/castget.info b/multimedia/castget/castget.info
new file mode 100644
index 0000000000..064dbe7e25
--- /dev/null
+++ b/multimedia/castget/castget.info
@@ -0,0 +1,10 @@
+PRGNAM="castget"
+VERSION="2.0.1"
+HOMEPAGE="https://castget.johndal.com/"
+DOWNLOAD="http://savannah.nongnu.org/download/castget/castget-2.0.1.tar.bz2"
+MD5SUM="c8007f3db3df07e3e9f999868ea741d0"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Jeff Parent"
+EMAIL="jeff+SBo@sh0.xyz"
diff --git a/multimedia/castget/slack-desc b/multimedia/castget/slack-desc
new file mode 100644
index 0000000000..68c67701bf
--- /dev/null
+++ b/multimedia/castget/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+castget: castget (A command line tool to download podcasts)
+castget:
+castget: castget is a simple, command-line based RSS enclosure downloader. It
+castget: is primarily intended for automatic, unattended downloading of
+castget: podcasts.
+castget:
+castget: It features
+castget: - simple configuration
+castget: - automatic tagging of downloaded MP3 files using ID3v2
+castget: - automatic M3U playlists
+castget: - and support for all RSS versions and Media RSS
diff --git a/multimedia/castnow/README b/multimedia/castnow/README
index f38b2d7506..557646a3f9 100644
--- a/multimedia/castnow/README
+++ b/multimedia/castnow/README
@@ -1,3 +1,7 @@
castnow is a command-line utility that can be used to play back media
files on your Chromecast device. It supports playback of local video
files, videos on the web and torrents.
+
+Warning: This SlackBuild requires network access when it runs, meaning
+it downloads files from the Internet with root access. You should
+decide for yourself whether or not you think this is a good idea.
diff --git a/multimedia/castnow/castnow.SlackBuild b/multimedia/castnow/castnow.SlackBuild
index eb3fba3d58..fa7f1d312c 100644
--- a/multimedia/castnow/castnow.SlackBuild
+++ b/multimedia/castnow/castnow.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for castnow
@@ -23,11 +23,14 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=castnow
VERSION=${VERSION:-20170309}
COMMIT="248921bda1a737b41bb96374f80b26e800b3d276"
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -37,7 +40,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -70,4 +80,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/ccextractor/README b/multimedia/ccextractor/README
index 6dccda83a4..8f1e782dc5 100644
--- a/multimedia/ccextractor/README
+++ b/multimedia/ccextractor/README
@@ -3,10 +3,4 @@ independent subtitle files from the closed captions data. CCExtractor
is portable, small, and very fast. Notable features include the
ability to extract subtitles in real-time, translate subtitles,
extract closed captions from DVDs, and convert closed captions
-to subtitles.
-
-By default only build the CLI version of ccextractor. If you would
-like to also build the GUI version, then install glfw3 available
-here at SBo and run the script like so
-
-GUI=yes ./ccextractor.SlackBuild
+to subtitles.
diff --git a/multimedia/ccextractor/ccextractor.SlackBuild b/multimedia/ccextractor/ccextractor.SlackBuild
index 78018a2b3b..8e072caee8 100644
--- a/multimedia/ccextractor/ccextractor.SlackBuild
+++ b/multimedia/ccextractor/ccextractor.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for ccextractor
-# Copyright 2019 Matt Dinslage, Springfield, MO
+# Copyright 2023 Matt Dinslage, Springfield MO
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=ccextractor
-VERSION=${VERSION:-0.88}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-0.94}
+BUILD=${BUILD:-4}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,14 +38,15 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-# Pass GUI=yes if you want to build gui support
-GUI=${GUI:-"no"}
-
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
@@ -57,21 +61,14 @@ else
LIBDIRSUFFIX=""
fi
-if [ "${GUI:-yes}" = "yes" ]; then
- gui="--with-gui"
-else
- gui=""
-fi
-
-
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar -xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION/linux
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -79,32 +76,48 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./autogen.sh
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --enable-static=no \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- $gui \
- --enable-ocr \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
+# Fix libdir
+if [ "$ARCH" = "x86_64" ]; then
+sed -i \
+ -e 's|${prefix}/lib|${prefix}/lib64|g' \
+ -e 's|lib/pkgconfig|lib64/pkgconfig|g' \
+ -e 's|lib)|lib64)|g' \
+ src/lib_ccx/CMakeLists.txt
+fi
+
+# Fix building with new leptonica
+patch -p1 < $CWD/leptonica-1.83.1.patch
+
+mkdir -p build
+cd build
+ cmake ../src \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DWITHOUT_RUST=ON \
+ -DWITH_OCR=ON \
+ -DWITH_HARDSUBX=ON \
+ -DWITH_FFMPEG=ON \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a ../LICENSE.txt ../README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ LICENSE.txt README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/ccextractor/ccextractor.info b/multimedia/ccextractor/ccextractor.info
index 2e5ee2b47c..07374db12e 100644
--- a/multimedia/ccextractor/ccextractor.info
+++ b/multimedia/ccextractor/ccextractor.info
@@ -1,10 +1,10 @@
PRGNAM="ccextractor"
-VERSION="0.88"
+VERSION="0.94"
HOMEPAGE="https://www.ccextractor.org/"
-DOWNLOAD="https://github.com/CCExtractor/ccextractor/archive/v0.88/ccextractor-0.88.tar.gz"
-MD5SUM="914f8704251ce24dcbb756590cf39955"
+DOWNLOAD="https://github.com/CCExtractor/ccextractor/archive/v0.94/ccextractor-0.94.tar.gz"
+MD5SUM="218f8f4628294fa218f2aad162bf68c7"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="tesseract"
MAINTAINER="M.Dinslage"
-EMAIL="daedra1980@gmail.com"
+EMAIL="matthewdinslage@gmail.com"
diff --git a/multimedia/ccextractor/leptonica-1.83.1.patch b/multimedia/ccextractor/leptonica-1.83.1.patch
new file mode 100644
index 0000000000..af419af8a7
--- /dev/null
+++ b/multimedia/ccextractor/leptonica-1.83.1.patch
@@ -0,0 +1,36 @@
+diff -up ccextractor-0.94/src/lib_ccx/ocr.c.orig ccextractor-0.94/src/lib_ccx/ocr.c
+--- ccextractor-0.94/src/lib_ccx/ocr.c.orig 2023-03-16 18:58:34.902356675 -0500
++++ ccextractor-0.94/src/lib_ccx/ocr.c 2023-03-16 19:00:33.481092541 -0500
+@@ -1,10 +1,10 @@
+ #include <math.h>
+-#include "png.h"
++#include <png.h>
+ #include "lib_ccx.h"
+ #ifdef ENABLE_OCR
+ #include <tesseract/capi.h>
+-#include "ccx_common_constants.h"
+ #include <leptonica/allheaders.h>
++#include "ccx_common_constants.h"
+ #include <dirent.h>
+ #include "ccx_encoders_helpers.h"
+ #include "ocr.h"
+@@ -331,6 +331,8 @@ char *ocr_bitmap(void *arg, png_color *p
+ }
+
+ BOX *crop_points = ignore_alpha_at_edge(copy->alpha, copy->data, w, h, color_pix, &color_pix_out);
++ l_int32 x, y, _w, _h;
++ boxGetGeometry(crop_points, &x, &y, &_w, &_h);
+ // Converting image to grayscale for OCR to avoid issues with transparency
+ cpix_gs = pixConvertRGBToGray(cpix, 0.0, 0.0, 0.0);
+
+@@ -426,8 +428,8 @@ char *ocr_bitmap(void *arg, png_color *p
+ {
+ for (int j = x1; j <= x2; j++)
+ {
+- if (copy->data[(crop_points->y + i) * w + (crop_points->x + j)] != firstpixel)
+- histogram[copy->data[(crop_points->y + i) * w + (crop_points->x + j)]]++;
++ if (copy->data[(y + i) * w + (x + j)] != firstpixel)
++ histogram[copy->data[(y + i) * w + (x + j)]]++;
+ }
+ }
+ /* sorted in increasing order of intensity */
diff --git a/multimedia/ccxstream/README b/multimedia/ccxstream/README
index 053b4ee50a..8731d85230 100644
--- a/multimedia/ccxstream/README
+++ b/multimedia/ccxstream/README
@@ -1,2 +1,2 @@
-ccXStream streams media to XBMC via the XBMSP. This is a package implementing
-a xbmsp streaming protocol server and a (test) client.
+ccXStream streams media to XBMC via the XBMSP. This is a package
+implementing a xbmsp streaming protocol server and a (test) client.
diff --git a/multimedia/ccxstream/ccxstream.SlackBuild b/multimedia/ccxstream/ccxstream.SlackBuild
index 812e665b16..c70edd1453 100644
--- a/multimedia/ccxstream/ccxstream.SlackBuild
+++ b/multimedia/ccxstream/ccxstream.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Slackware build script for ccxstream
#
@@ -22,12 +22,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=ccxstream
VERSION=${VERSION:-1.0.15}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
-CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -40,6 +42,11 @@ if [ -z "$ARCH" ]; then
esac
fi
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
@@ -84,4 +91,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/celluloid/README b/multimedia/celluloid/README
new file mode 100644
index 0000000000..c4a7586831
--- /dev/null
+++ b/multimedia/celluloid/README
@@ -0,0 +1,2 @@
+Celluloid is a simple GTK+ frontend for mpv. It aims to be easy to
+use while maintaining high level of configurability.
diff --git a/multimedia/celluloid/celluloid.SlackBuild b/multimedia/celluloid/celluloid.SlackBuild
new file mode 100644
index 0000000000..ebc1876907
--- /dev/null
+++ b/multimedia/celluloid/celluloid.SlackBuild
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+# Slackware build script for celluloid
+
+# Copyright 2023 Johannes Schoepfer, Germany
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=celluloid
+VERSION=${VERSION:-0.22}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir build
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ -Dstrip=true
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/celluloid/celluloid.info b/multimedia/celluloid/celluloid.info
new file mode 100644
index 0000000000..ac32d3de51
--- /dev/null
+++ b/multimedia/celluloid/celluloid.info
@@ -0,0 +1,10 @@
+PRGNAM="celluloid"
+VERSION="0.22"
+HOMEPAGE="https://celluloid-player.github.io/"
+DOWNLOAD="https://github.com/celluloid-player/celluloid/releases/download/v0.22/celluloid-0.22.tar.xz"
+MD5SUM="a464ced96f9703df9b40ec3808601ca7"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="mpv"
+MAINTAINER="Johannes Schoepfer"
+EMAIL="slackbuilds@schoepfer.info"
diff --git a/multimedia/gtkpod/doinst.sh b/multimedia/celluloid/doinst.sh
index 401d987795..401d987795 100644
--- a/multimedia/gtkpod/doinst.sh
+++ b/multimedia/celluloid/doinst.sh
diff --git a/multimedia/dvdauthor/slack-desc b/multimedia/celluloid/slack-desc
index 7305c61f0b..131952b890 100644
--- a/multimedia/dvdauthor/slack-desc
+++ b/multimedia/celluloid/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-dvdauthor: dvdauthor (A simple set of tools to help you author a DVD)
-dvdauthor:
-dvdauthor: dvdauthor is a program that will generate a DVD movie from a valid
-dvdauthor: mpeg2 stream.
-dvdauthor: The resulting movie should play in a standard DVD player.
-dvdauthor:
-dvdauthor: Homepage: http://dvdauthor.sf.net
-dvdauthor:
-dvdauthor:
-dvdauthor:
-dvdauthor:
+celluloid: celluloid (Simple GTK+ frontend for mpv)
+celluloid:
+celluloid: Celluloid is a simple GTK+ frontend for mpv. It aims to be easy to
+celluloid: use while maintaining high level of configurability.
+celluloid:
+celluloid: https://celluloid-player.github.io/
+celluloid:
+celluloid:
+celluloid:
+celluloid:
+celluloid:
diff --git a/multimedia/cfourcc/cfourcc.SlackBuild b/multimedia/cfourcc/cfourcc.SlackBuild
index 957e8c06ad..fdc7556adb 100644
--- a/multimedia/cfourcc/cfourcc.SlackBuild
+++ b/multimedia/cfourcc/cfourcc.SlackBuild
@@ -1,27 +1,37 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <cfourcc>
# Written by Michales Michaloudes korgie@gmail.com
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=cfourcc
VERSION=${VERSION:-0.1.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -68,4 +78,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/cinelerra/README b/multimedia/cinelerra/README
index 3ddd60f57e..19d4ac53ba 100644
--- a/multimedia/cinelerra/README
+++ b/multimedia/cinelerra/README
@@ -1,5 +1,7 @@
cinelerra (GNU/Linux Video/Audio Studio)
-Cinelerra CV is the most advanced non-linear video editor and compositor
+5.x variant of Cinelerra by WP Morrow (aka goodguy).
+
+Cinelerra-gg is the most advanced non-linear video editor and compositor
for Linux. It does primarily 3 main things: capturing, compositing,
and editing audio and video with sample level accuracy.
diff --git a/multimedia/cinelerra/cinelerra.SlackBuild b/multimedia/cinelerra/cinelerra.SlackBuild
index dfc6c9308c..1d88525bc0 100644
--- a/multimedia/cinelerra/cinelerra.SlackBuild
+++ b/multimedia/cinelerra/cinelerra.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for cinelerra
@@ -22,11 +22,16 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230126 bkw: Modified by SlackBuilds.org:
+# - remove false imlib2 dependency from .info file (no script changes)
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=cinelerra
-SRCNAM=CinelerraCV
-VERSION=${VERSION:-2.3}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-20210331_eabda9c}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +41,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -66,9 +78,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $SRCNAM-$VERSION
-tar xvf $CWD/$SRCNAM-$VERSION.tar.xz
-cd $SRCNAM-$VERSION
+rm -rf $PRGNAM-gg-$VERSION
+tar xvf $CWD/$PRGNAM-gg-$VERSION.tar.xz
+cd $PRGNAM-gg-$VERSION/cinelerra-5.1
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -77,32 +89,29 @@ find -L . \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
./autogen.sh
-LDFLAGS="-ldl" \
-CFLAGS="$SLKCFLAGS -D__STDC_CONSTANT_MACROS" \
-CXXFLAGS="$SLKCFLAGS -D__STDC_CONSTANT_MACROS" \
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--libdir=/usr/lib${LIBDIRSUFFIX} \
- --with-plugindir=/usr/lib${LIBDIRSUFFIX}/cinelerra \
- --disable-static \
+ --with-plugin-dir=/usr/lib${LIBDIRSUFFIX}/cin \
--mandir=/usr/man \
- --with-pic \
- --with-x \
- --enable-opengl \
--build=$ARCH-slackware-linux \
$mmx
make
-make install DESTDIR=$PKG
+make -j1 install DESTDIR=$PKG
+
+rm -f $PKG/usr/share/applications/cin.desktop
+install -D -m 0644 $CWD/$PRGNAM.desktop $PKG/usr/share/applications/$PRGNAM.desktop
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS COPYING ChangeLog INSTALL LICENSE NEWS README* TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING README* *.txt $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -110,4 +119,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/cinelerra/cinelerra.desktop b/multimedia/cinelerra/cinelerra.desktop
new file mode 100644
index 0000000000..b71239453c
--- /dev/null
+++ b/multimedia/cinelerra/cinelerra.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=cinelerra
+Comment=MultiMedia Editor
+Comment[fr]=Éditeur multimédia
+Categories=AudioVideo;AudioVideoEditing;
+Encoding=UTF-8
+Exec=cin
+Icon=/usr/share/pixmaps/cin.xpm
+Terminal=false
+Type=Application
diff --git a/multimedia/cinelerra/cinelerra.info b/multimedia/cinelerra/cinelerra.info
index e866c597cb..296f02857f 100644
--- a/multimedia/cinelerra/cinelerra.info
+++ b/multimedia/cinelerra/cinelerra.info
@@ -1,10 +1,10 @@
PRGNAM="cinelerra"
-VERSION="2.3"
-HOMEPAGE="https://cinelerra-cv.org/"
-DOWNLOAD="https://gentoo.osuosl.org/distfiles/CinelerraCV-2.3.tar.xz"
-MD5SUM="a1e7bfaf9827f74900d58d25955bdf3f"
+VERSION="20210331_eabda9c"
+HOMEPAGE="https://cinelerra-gg.org"
+DOWNLOAD="http://ponce.cc/slackware/sources/repo/cinelerra-gg-20210331_eabda9c.tar.xz"
+MD5SUM="fd7a1f289192a8f1f77d0a494f8f204b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="faac faad2 imlib2 libavc1394 libdv libiec61883 mjpegtools lame x264"
+REQUIRES="faac faad2 libavc1394 libdv libiec61883 mjpegtools x264"
MAINTAINER="Danny Schmarsel"
EMAIL="danny@schmarsel.de"
diff --git a/multimedia/cinelerra/slack-desc b/multimedia/cinelerra/slack-desc
index bbeb099ad8..7417198d20 100644
--- a/multimedia/cinelerra/slack-desc
+++ b/multimedia/cinelerra/slack-desc
@@ -8,12 +8,12 @@
|-----handy-ruler------------------------------------------------------|
cinelerra: cinelerra (GNU/Linux Video/Audio Studio)
cinelerra:
-cinelerra: Cinelerra CV is the most advanced non-linear video editor
+cinelerra: 5.x variant of Cinelerra by WP Morrow (aka goodguy).
+cinelerra:
+cinelerra: Cinelerrai-gg is the most advanced non-linear video editor
cinelerra: and compositor for Linux. It does primarily three main
cinelerra: things: capturing, compositing, and editing audio and
cinelerra: video with sample level accuracy.
cinelerra:
-cinelerra: Homepage: http://cinelerra-cv.org/
-cinelerra:
-cinelerra:
+cinelerra: Homepage: http://cinelerra-gg.org
cinelerra:
diff --git a/multimedia/clamz/clamz.SlackBuild b/multimedia/clamz/clamz.SlackBuild
index c65d55e5d0..f6560c9811 100644
--- a/multimedia/clamz/clamz.SlackBuild
+++ b/multimedia/clamz/clamz.SlackBuild
@@ -1,29 +1,39 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for clamz
# Written by Joseph Schofield rootoutcast@hushmail.com
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=clamz
VERSION=${VERSION:-0.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -76,4 +86,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/coriander/README b/multimedia/coriander/README
index 60ab304338..d7e1b8d8c5 100644
--- a/multimedia/coriander/README
+++ b/multimedia/coriander/README
@@ -1,10 +1,10 @@
-Coriander is a full-featured graphical interface for controlling digital cameras
-through the IEEE-1394 bus (i.e. FireWire or iLink). It can also record videos,
-send images to an FTP site and convert videos to V4L streams. A live display is
-also provided. The program will work with any camera that is compatible with
-the IIDC specifications (v1.04 or later): this includes most 1394 webcams and
-many industrial and scientific cameras.
+Coriander is a full-featured graphical interface for controlling digital
+cameras through the IEEE-1394 bus (i.e. FireWire or iLink). It can also
+record videos, send images to an FTP site and convert videos to V4L
+streams. A live display is also provided. The program will work with any
+camera that is compatible with the IIDC specifications (v1.04 or later):
+this includes most 1394 webcams and many industrial and scientific
+cameras.
-NOTE: FTP support is added automatically if ftplib is detected.
-
-Optional dependencies: ftplib
+NOTE - ftplib can be omitted if FTP support is not needed: Coriander
+will build just fine.
diff --git a/multimedia/coriander/coriander.SlackBuild b/multimedia/coriander/coriander.SlackBuild
index eaba975fed..3756283bee 100644
--- a/multimedia/coriander/coriander.SlackBuild
+++ b/multimedia/coriander/coriander.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for coriander
-# Copyright 2015-2017 Philip Lacroix <slackph at posteo dot de>
+# Copyright 2015-2022 Philip Lacroix <slackph at posteo dot de>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=coriander
-VERSION=${VERSION:-2.0.2}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-2.0.3}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -70,7 +80,11 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-CFLAGS="$SLKCFLAGS" \
+# We'll have to use -fcommon to work around some multiple definition errors
+# that would prevent compilation using GCC versions >= 10, where -fno-common
+# is now default. [Reference: https://gcc.gnu.org/gcc-10/porting_to.html]
+
+CFLAGS="$SLKCFLAGS -fcommon" \
./configure \
--prefix=/usr \
--enable-static=no \
@@ -106,4 +120,4 @@ cat $CWD/doinst.sh > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/coriander/coriander.desktop b/multimedia/coriander/coriander.desktop
index 1cd8df9426..b18544b554 100644
--- a/multimedia/coriander/coriander.desktop
+++ b/multimedia/coriander/coriander.desktop
@@ -7,5 +7,5 @@ Comment=Control IEEE-1394 digital cameras compatible with the IIDC specification
Exec=coriander
Icon=/usr/share/icons/hicolor/128x128/apps/coriander.png
Terminal=false
-Categories=AudioVideo;Video;GTK;
+Categories=Video;
StartupNotify=true
diff --git a/multimedia/coriander/coriander.info b/multimedia/coriander/coriander.info
index 78cddfaf88..fb3da6cb7c 100644
--- a/multimedia/coriander/coriander.info
+++ b/multimedia/coriander/coriander.info
@@ -1,10 +1,10 @@
PRGNAM="coriander"
-VERSION="2.0.2"
+VERSION="2.0.3"
HOMEPAGE="https://damien.douxchamps.net/ieee1394/coriander/"
-DOWNLOAD="https://sourceforge.net/projects/coriander/files/coriander-2/2.0.2/coriander-2.0.2.tar.gz"
-MD5SUM="431d98fb013217681f97ade168201fb8"
+DOWNLOAD="https://sourceforge.net/projects/coriander/files/coriander-2/2.0.3/coriander-2.0.3.tar.gz"
+MD5SUM="6bf50046ba9ce3c72cc42a897c51ec24"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="libdc1394 libgnomeui"
+REQUIRES="libdc1394 ftplib libgnomeui"
MAINTAINER="Philip Lacroix"
EMAIL="slackph at posteo dot de"
diff --git a/multimedia/coriander/slack-desc b/multimedia/coriander/slack-desc
index dc2a5e7e8a..9b09607deb 100644
--- a/multimedia/coriander/slack-desc
+++ b/multimedia/coriander/slack-desc
@@ -15,5 +15,5 @@ coriander: videos to V4L streams. A live display is also provided. The program
coriander: will work with IIDC-compatible devices (v1.04 or later) including
coriander: most 1394 webcams and many industrial and scientific cameras.
coriander:
-coriander: Homepage: http://damien.douxchamps.net/ieee1394/coriander/
+coriander: Homepage: https://damien.douxchamps.net/ieee1394/coriander/
coriander:
diff --git a/multimedia/cowbell/cowbell.SlackBuild b/multimedia/cowbell/cowbell.SlackBuild
index a193c7c4cb..e5827bb4fa 100644
--- a/multimedia/cowbell/cowbell.SlackBuild
+++ b/multimedia/cowbell/cowbell.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for cowbell
@@ -12,26 +12,36 @@
# I am not responsible for any consequences that follow from the use
# of this script.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=cowbell
VERSION=${VERSION:-0.2.7.1}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -83,4 +93,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/ctl/README b/multimedia/ctl/README
index ed1def5185..ad67ec3ff4 100644
--- a/multimedia/ctl/README
+++ b/multimedia/ctl/README
@@ -6,10 +6,10 @@ different representations or color spaces. The Color Transformation
Language, or CTL, is a small programming language that was designed to
serve as a building block for digital color management systems.
-CTL allows users to describe color transforms in a concise and unambiguous
-way by expressing them as programs. In order to apply a given
-transform to an image, the color management system instructs a CTL
-interpreter to load and run the CTL program that describes the
+CTL allows users to describe color transforms in a concise and
+unambiguous way by expressing them as programs. In order to apply a
+given transform to an image, the color management system instructs
+a CTL interpreter to load and run the CTL program that describes the
transform. The original and the transformed image constitute the CTL
program's input and output.
diff --git a/multimedia/ctl/ctl-1.5.2-Use-GNUInstallDirs-and-fix-PkgConfig-files-1.patch b/multimedia/ctl/ctl-1.5.2-Use-GNUInstallDirs-and-fix-PkgConfig-files-1.patch
new file mode 100644
index 0000000000..e4fadf1aa0
--- /dev/null
+++ b/multimedia/ctl/ctl-1.5.2-Use-GNUInstallDirs-and-fix-PkgConfig-files-1.patch
@@ -0,0 +1,399 @@
+From db1cccd9cee830f8822521f2c401ea74ad161360 Mon Sep 17 00:00:00 2001
+From: Jonathan Scruggs <j.scruggs@gmail.com>
+Date: Mon, 25 Sep 2017 17:41:26 +0100
+Subject: [PATCH] CTL: Use GNUInstallDirs and fix PkgConfig files
+
+* GNUInstallDirs are variables set by each distro and OS, so we
+ don't need to define them manually. They can also be set manually
+ during the configure phase. The code to define custom directories can
+ be removed and replaced with the equivalent GNUInstallDirs variable.
+* Pkg-Config is used to find IlmBase and OpenEXR, but isn't fully
+ utilized everywhere. This makes Pkg-Config a hard dependency so that
+ the libraries and directories can be found easily. This will use the
+ correct libraries no matter how they are named, so this is compatible
+ with both pre-2.0 and post 2.0 naming schemes.
+* The Pkg-Config files had several errors that are now fixed.
+
+Upstream PR: https://github.com/ampas/CTL/pull/67
+---
+ CMakeLists.txt | 36 ++++++++---------------------
+ OpenEXR_CTL/CMakeLists.txt | 2 +-
+ OpenEXR_CTL/CtlModules/CMakeLists.txt | 2 +-
+ OpenEXR_CTL/exr_ctl_exr/CMakeLists.txt | 4 ++--
+ OpenEXR_CTL/exrdpx/CMakeLists.txt | 4 ++--
+ config/CTL.pc.in | 8 +++----
+ config/OpenEXR_CTL.pc.in | 15 ++++++-------
+ configure.cmake | 41 ++++++++++++++++------------------
+ ctlrender/CMakeLists.txt | 20 ++++++++---------
+ doc/CMakeLists.txt | 2 +-
+ lib/IlmCtl/CMakeLists.txt | 4 ++--
+ lib/IlmCtlMath/CMakeLists.txt | 4 ++--
+ lib/IlmCtlSimd/CMakeLists.txt | 6 ++---
+ lib/IlmImfCtl/CMakeLists.txt | 6 ++---
+ lib/dpx/CMakeLists.txt | 1 +
+ 15 files changed, 66 insertions(+), 89 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 01f622c..35e9a48 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,22 +1,14 @@
+ cmake_minimum_required(VERSION 2.8)
+ project( CTL )
+
++INCLUDE ( GNUInstallDirs )
++
+ set( CTL_MAJOR_VERSION 1 )
+ set( CTL_MINOR_VERSION 5 )
+-set( CTL_PATCH_VERSION 0 )
++set( CTL_PATCH_VERSION 2 )
+ set( CTL_VERSION ${CTL_MAJOR_VERSION}.${CTL_MINOR_VERSION}.${CTL_PATCH_VERSION} )
+
+-## Make install directories overrideable
+-set( INSTALL_LIB_DIR lib CACHE PATH "Install directory for libraries" )
+-set( INSTALL_BIN_DIR bin CACHE PATH "Install directory for executable binaries" )
+-set( INSTALL_INCLUDE_DIR include CACHE PATH "Install directory for public header files" )
+-set( INSTALL_DOC_DIR doc CACHE PATH "Install directory for documentation" )
+-if( WIN32 AND NOT CYGWIN )
+- set(DEF_INSTALL_CMAKE_DIR CMake)
+-else()
+- set(DEF_INSTALL_CMAKE_DIR lib/CMake/CTL)
+-endif()
+-set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Install directory for project CMake files" )
++set(INSTALL_CMAKE_DIR ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/CTL CACHE PATH "Install directory for project CMake files" )
+
+ # use, i.e. don't skip the full RPATH for the build tree
+ SET(CMAKE_SKIP_BUILD_RPATH FALSE)
+@@ -28,20 +20,11 @@ SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+ # which point to directories outside the build tree to the install RPATH
+ SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+ # the RPATH to be used when installing, but only if it's not a system directory
+-LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
++LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_FULL_LIBDIR}" isSystemDir)
+ IF("${isSystemDir}" STREQUAL "-1")
+- SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
++ SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
+ ENDIF("${isSystemDir}" STREQUAL "-1")
+
+-
+-## convert install paths to absolute
+-foreach( p LIB BIN INCLUDE CMAKE DOC)
+- set( var INSTALL_${p}_DIR )
+- if( NOT IS_ABSOLUTE "${${var}}" )
+- set( ${var} "${CMAKE_INSTALL_PREFIX}/${${var}}" )
+- endif()
+-endforeach()
+-
+ option(ENABLE_SHARED "Enable Shared Libraries" ON)
+
+ if ( ENABLE_SHARED )
+@@ -70,20 +53,19 @@ export( TARGETS IlmCtl IlmCtlMath IlmCtlSimd FILE "${PROJECT_BINARY_DIR}/CTLLibr
+ export(PACKAGE CTL)
+
+ # Create a CTLBuildTreeSettings.cmake file for the use from the build tree
+-file(RELATIVE_PATH CONF_REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${INSTALL_INCLUDE_DIR}")
++file(RELATIVE_PATH CONF_REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
+ configure_file(config/CTLBuildTreeSettings.cmake.in "${PROJECT_BINARY_DIR}/CTLBuildTreeSettings.cmake" @ONLY)
+ configure_file(config/CTLConfig.cmake.in "${PROJECT_BINARY_DIR}/CTLConfig.cmake" @ONLY)
+ configure_file(config/CTLConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/CTLConfigVersion.cmake" @ONLY)
+
+ if ( PKG_CONFIG_FOUND )
+ configure_file(config/CTL.pc.in "${PROJECT_BINARY_DIR}/CTL.pc" @ONLY)
+-install( FILES "${PROJECT_BINARY_DIR}/CTL.pc" DESTINATION lib/pkgconfig COMPONENT dev )
++install( FILES "${PROJECT_BINARY_DIR}/CTL.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT dev )
+ endif()
+
+ install( FILES
+ "${PROJECT_BINARY_DIR}/CTLConfig.cmake"
+ "${PROJECT_BINARY_DIR}/CTLConfigVersion.cmake"
++ "${PROJECT_BINARY_DIR}/CTLLibraryDepends.cmake"
+ DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
+-install(FILES "${PROJECT_BINARY_DIR}/CTLLibraryDepends.cmake" DESTINATION
+- "${INSTALL_CMAKE_DIR}" COMPONENT dev)
+
+diff --git a/OpenEXR_CTL/CMakeLists.txt b/OpenEXR_CTL/CMakeLists.txt
+index c1ca53e..3f19dd4 100644
+--- a/OpenEXR_CTL/CMakeLists.txt
++++ b/OpenEXR_CTL/CMakeLists.txt
+@@ -13,7 +13,7 @@ add_custom_target( OpenEXR_CTL DEPENDS CtlModules exrdpx exr_ctl_exr )
+
+ if ( PKG_CONFIG_FOUND )
+ configure_file(../config/OpenEXR_CTL.pc.in "${PROJECT_BINARY_DIR}/OpenEXR_CTL.pc" @ONLY)
+-install( FILES "${PROJECT_BINARY_DIR}/OpenEXR_CTL.pc" DESTINATION lib/pkgconfig COMPONENT dev )
++install( FILES "${PROJECT_BINARY_DIR}/OpenEXR_CTL.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT dev )
+ endif()
+
+ # TODO CMake config
+diff --git a/OpenEXR_CTL/CtlModules/CMakeLists.txt b/OpenEXR_CTL/CtlModules/CMakeLists.txt
+index c63c22e..9c9e5b8 100644
+--- a/OpenEXR_CTL/CtlModules/CMakeLists.txt
++++ b/OpenEXR_CTL/CtlModules/CMakeLists.txt
+@@ -2,6 +2,6 @@ install(
+ FILES
+ utilities.ctl
+ DESTINATION
+- ${INSTALL_LIB_DIR}/CTL
++ ${CMAKE_INSTALL_LIBDIR}/CTL
+ )
+
+diff --git a/OpenEXR_CTL/exr_ctl_exr/CMakeLists.txt b/OpenEXR_CTL/exr_ctl_exr/CMakeLists.txt
+index e396ec5..1f0eea0 100644
+--- a/OpenEXR_CTL/exr_ctl_exr/CMakeLists.txt
++++ b/OpenEXR_CTL/exr_ctl_exr/CMakeLists.txt
+@@ -20,6 +20,6 @@ target_link_libraries( exr_ctl_exr IlmCtlSimd IlmCtlMath IlmCtl IlmImfCtl )
+ target_link_libraries( exr_ctl_exr ${IlmBase_LIBRARIES} ${IlmBase_LDFLAGS_OTHER} )
+ target_link_libraries( exr_ctl_exr ${OpenEXR_LIBRARIES} ${OpenEXR_LDFLAGS_OTHER} )
+
+-install( TARGETS exr_ctl_exr DESTINATION ${INSTALL_BIN_DIR} )
++install( TARGETS exr_ctl_exr DESTINATION ${CMAKE_INSTALL_BINDIR} )
+
+-install( FILES change_saturation.ctl DESTINATION ${INSTALL_LIB_DIR}/CTL )
++install( FILES change_saturation.ctl DESTINATION ${CMAKE_INSTALL_LIBDIR}/CTL )
+diff --git a/OpenEXR_CTL/exrdpx/CMakeLists.txt b/OpenEXR_CTL/exrdpx/CMakeLists.txt
+index 50bd116..d9eadd8 100644
+--- a/OpenEXR_CTL/exrdpx/CMakeLists.txt
++++ b/OpenEXR_CTL/exrdpx/CMakeLists.txt
+@@ -20,8 +20,8 @@ target_link_libraries( exrdpx IlmCtlSimd IlmCtlMath IlmCtl IlmImfCtl )
+ target_link_libraries( exrdpx ${IlmBase_LIBRARIES} ${IlmBase_LDFLAGS_OTHER} )
+ target_link_libraries( exrdpx ${OpenEXR_LIBRARIES} ${OpenEXR_LDFLAGS_OTHER} )
+
+-install( TARGETS exrdpx DESTINATION ${INSTALL_BIN_DIR} )
++install( TARGETS exrdpx DESTINATION ${CMAKE_INSTALL_BINDIR} )
+
+-install( FILES transform_DPX_EXR.ctl transform_EXR_DPX.ctl DESTINATION ${INSTALL_LIB_DIR}/CTL )
++install( FILES transform_DPX_EXR.ctl transform_EXR_DPX.ctl DESTINATION ${CMAKE_INSTALL_LIBDIR}/CTL )
+
+
+diff --git a/config/CTL.pc.in b/config/CTL.pc.in
+index 6d6e732..9b212a4 100644
+--- a/config/CTL.pc.in
++++ b/config/CTL.pc.in
+@@ -1,8 +1,6 @@
+-prefix=@CMAKE_INSTALL_PREFIX@
+-exec_prefix=@INSTALL_BIN_DIR@
+-libdir=@INSTALL_LIB_DIR@
+-includedir=@INSTALL_INCLUDE_DIR@
+-CTL_includedir=@INSTALL_INCLUDE_DIR@/CTL
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
++CTL_includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/CTL
+
+ Name: CTL
+ Description: CTL interpreter library
+diff --git a/config/OpenEXR_CTL.pc.in b/config/OpenEXR_CTL.pc.in
+index 4cef5c6..39a1a3f 100644
+--- a/config/OpenEXR_CTL.pc.in
++++ b/config/OpenEXR_CTL.pc.in
+@@ -1,11 +1,10 @@
+-prefix=@prefix@
+-exec_prefix=@exec_prefix@
+-libdir=@libdir@
+-includedir=@includedir@
+-OpenEXR_includedir=@includedir@/OpenEXR
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
++OpenEXR_includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/OpenEXR
+
+ Name: OpenEXR_CTL
+ Description: Simplified OpenEXR interface to CTL
+-Version: @OPENEXR_CTL_VERSION@
+-Libs: -L${libdir} -lIlmImfCtl @OPENEXR_LDFLAGS@ @CTL_LDFLAGS@
+-Cflags: @CTL_CXXFLAGS_PC@ @OPENEXR_CXXFLAGS@ -I${OpenEXR_includedir}
++Version: @CTL_VERSION@
++Libs: -L${libdir} -lIlmImfCtl
++Cflags: -I${OpenEXR_includedir}
++Requires: CTL,OpenEXR
+diff --git a/configure.cmake b/configure.cmake
+index 1817071..eb7e14e 100644
+--- a/configure.cmake
++++ b/configure.cmake
+@@ -1,10 +1,7 @@
+-# Until we get some of these modules into the upstream packages, put them here
+-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
+-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_INSTALL_PREFIX}/share/CMake")
++# Make Pkg-Config required.
++find_package( PkgConfig )
+
+-find_package( PkgConfig QUIET )
+-
+-find_package( IlmBase QUIET )
++PKG_CHECK_MODULES ( IlmBase REQUIRED IlmBase )
+ if(IlmBase_FOUND)
+ message( STATUS "found IlmBase, version ${IlmBase_VERSION}" )
+ ###
+@@ -13,11 +10,11 @@ if(IlmBase_FOUND)
+ ###
+ include_directories( ${IlmBase_INCLUDE_DIRS} )
+ link_directories( ${IlmBase_LIBRARY_DIRS} )
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${IlmBase_CFLAGS}" )
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${IlmBase_CFLAGS}" )
+- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${IlmBase_LDFLAGS}" )
+- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${IlmBase_LDFLAGS}" )
+- set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${IlmBase_LDFLAGS}" )
++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${IlmBase_CFLAGS_OTHER}" )
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${IlmBase_CFLAGS_OTHER}" )
++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${IlmBase_LDFLAGS_OTHER}" )
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${IlmBase_LDFLAGS_OTHER}" )
++ set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${IlmBase_LDFLAGS_OTHER}" )
+ else()
+ message( SEND_ERROR "IlmBase not found, please set the include and library paths manually" )
+ endif()
+@@ -39,20 +36,20 @@ else()
+ endif()
+ endif()
+
+-find_package( OpenEXR QUIET )
++PKG_CHECK_MODULES ( OpenEXR REQUIRED OpenEXR )
+ if (OpenEXR_FOUND)
+ message( STATUS "Found OpenEXR, version ${OpenEXR_VERSION}" )
+ else()
+ message( WARNING "Unable to find OpenEXR libraries, disabling" )
+ endif()
+
+-find_package( AcesContainer )
+-if (AcesContainer_FOUND)
+- message( STATUS "Found AcesContainer, version ${AcesContainer_VERSION}" )
+-else()
+- if ( PKG_CONFIG_FOUND )
+- pkg_check_modules( AcesContainer AcesContainer )
+- else()
+- message( WARNING "Unable to find AcesContainer libraries, disabling" )
+- endif()
+-endif()
++find_package( AcesContainer )
++ if (AcesContainer_FOUND)
++ message( STATUS "Found AcesContainer, version ${AcesContainer_VERSION}" )
++ else()
++ if ( PKG_CONFIG_FOUND )
++ pkg_check_modules( AcesContainer AcesContainer )
++ else()
++ message( WARNING "Unable to find AcesContainer libraries, disabling" )
++ endif()
++ endif()
+diff --git a/ctlrender/CMakeLists.txt b/ctlrender/CMakeLists.txt
+index 9fced14..d97093d 100644
+--- a/ctlrender/CMakeLists.txt
++++ b/ctlrender/CMakeLists.txt
+@@ -11,12 +11,12 @@ include_directories( ${OpenEXR_INCLUDE_DIRS} )
+ link_directories( ${OpenEXR_LIBRARY_DIRS} )
+ endif()
+
+-if ( AcesContainer_FOUND )
+-add_definitions( -DHAVE_ACESFILE=1 )
+-include_directories( ${AcesContainer_INCLUDE_DIRS} )
+-link_directories( ${AcesContainer_LIBRARY_DIRS} )
+-endif()
+-
++if ( AcesContainer_FOUND )
++add_definitions( -DHAVE_ACESFILE=1 )
++include_directories( ${AcesContainer_INCLUDE_DIRS} )
++link_directories( ${AcesContainer_LIBRARY_DIRS} )
++endif()
++
+ include_directories( "${CMAKE_CURRENT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/lib/IlmCtl" "${PROJECT_SOURCE_DIR}/lib/IlmCtlMath" "${PROJECT_SOURCE_DIR}/lib/IlmCtlSimd" "${PROJECT_SOURCE_DIR}/lib/dpx" )
+
+ add_executable( ctlrender
+@@ -41,9 +41,9 @@ if (OpenEXR_FOUND)
+ target_link_libraries( ctlrender ${OpenEXR_LIBRARIES} )
+ target_link_libraries( ctlrender ${OpenEXR_LDFLAGS_OTHER} )
+ endif()
+-if (AcesContainer_FOUND)
+-target_link_libraries( ctlrender ${AcesContainer_LIBRARIES} )
+-target_link_libraries( ctlrender ${AcesContainer_LDFLAGS_OTHER} )
++if (AcesContainer_FOUND)
++target_link_libraries( ctlrender ${AcesContainer_LIBRARIES} )
++target_link_libraries( ctlrender ${AcesContainer_LDFLAGS_OTHER} )
+ endif()
+
+-install( TARGETS ctlrender DESTINATION bin )
++install( TARGETS ctlrender DESTINATION ${CMAKE_INSTALL_BINDIR} )
+diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
+index 0b123d0..9776205 100644
+--- a/doc/CMakeLists.txt
++++ b/doc/CMakeLists.txt
+@@ -1 +1 @@
+-install( FILES CtlManual.pdf CtlManual.doc DESTINATION doc/CTL )
++install( FILES CtlManual.pdf CtlManual.doc DESTINATION ${CMAKE_INSTALL_DOCDIR} )
+diff --git a/lib/IlmCtl/CMakeLists.txt b/lib/IlmCtl/CMakeLists.txt
+index 3672a43..ef301bd 100644
+--- a/lib/IlmCtl/CMakeLists.txt
++++ b/lib/IlmCtl/CMakeLists.txt
+@@ -22,7 +22,7 @@ add_library( IlmCtl ${DO_SHARED}
+ )
+
+ target_link_libraries( IlmCtl ${IlmBase_LDFLAGS_OTHER} )
+-target_link_libraries( IlmCtl Iex IlmThread Half )
++target_link_libraries( IlmCtl ${IlmBase_LIBRARIES} )
+
+ set_target_properties( IlmCtl PROPERTIES
+ VERSION ${CTL_VERSION}
+@@ -50,4 +50,4 @@ install( FILES
+ CtlVersion.h
+ DESTINATION include/CTL )
+
+-install( TARGETS IlmCtl DESTINATION lib )
++install( TARGETS IlmCtl DESTINATION ${CMAKE_INSTALL_LIBDIR} )
+diff --git a/lib/IlmCtlMath/CMakeLists.txt b/lib/IlmCtlMath/CMakeLists.txt
+index 96738cf..6997c74 100644
+--- a/lib/IlmCtlMath/CMakeLists.txt
++++ b/lib/IlmCtlMath/CMakeLists.txt
+@@ -18,8 +18,8 @@ install( FILES
+ CtlLookupTable.h
+ CtlRbfInterpolator.h
+ CtlSparseMatrix.h
+- DESTINATION include/CTL )
++ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/CTL )
+
+-install( TARGETS IlmCtlMath DESTINATION lib )
++install( TARGETS IlmCtlMath DESTINATION ${CMAKE_INSTALL_LIBDIR} )
+
+ # TODO Add Imath and Iex libadd dependency and version info
+diff --git a/lib/IlmCtlSimd/CMakeLists.txt b/lib/IlmCtlSimd/CMakeLists.txt
+index 2ba792a..5eaf87d 100644
+--- a/lib/IlmCtlSimd/CMakeLists.txt
++++ b/lib/IlmCtlSimd/CMakeLists.txt
+@@ -1,7 +1,7 @@
+ include_directories( "${CMAKE_CURRENT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/lib/IlmCtl" "${PROJECT_SOURCE_DIR}/lib/IlmCtlMath" )
+
+ add_executable( halfExpLogTable halfExpLogTable.cpp )
+-target_link_libraries( halfExpLogTable Half )
++target_link_libraries( halfExpLogTable ${IlmBase_LIBRARIES} )
+
+ add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/halfExpLogTable.h"
+ COMMAND halfExpLogTable "${CMAKE_CURRENT_BINARY_DIR}/halfExpLogTable.h" "${CMAKE_CURRENT_BINARY_DIR}/halfExpLog.h"
+@@ -40,6 +40,6 @@ set_target_properties( IlmCtlSimd PROPERTIES
+ SOVERSION ${CTL_VERSION}
+ )
+
+-install( FILES CtlSimdInterpreter.h DESTINATION include/CTL )
++install( FILES CtlSimdInterpreter.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/CTL )
+
+-install( TARGETS IlmCtlSimd DESTINATION lib )
++install( TARGETS IlmCtlSimd DESTINATION ${CMAKE_INSTALL_LIBDIR} )
+diff --git a/lib/IlmImfCtl/CMakeLists.txt b/lib/IlmImfCtl/CMakeLists.txt
+index 47563df..784e27f 100644
+--- a/lib/IlmImfCtl/CMakeLists.txt
++++ b/lib/IlmImfCtl/CMakeLists.txt
+@@ -7,10 +7,10 @@ add_library( IlmImfCtl ${DO_SHARED}
+ ImfCtlCopyFunctionArg.cpp
+ )
+
+-target_link_libraries( IlmImfCtl IlmCtl IlmImf Iex IlmThread Half )
++target_link_libraries( IlmImfCtl IlmCtl ${OpenEXR_LIBRARIES} ${IlmBase_LIBRARIES} )
+
+-install( FILES ImfCtlApplyTransforms.h DESTINATION include/OpenEXR )
++install( FILES ImfCtlApplyTransforms.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/OpenEXR )
+
+ export( TARGETS IlmImfCtl IlmCtl FILE "${PROJECT_BINARY_DIR}/CTLLibraryDepends.cmake" )
+
+-install( TARGETS IlmImfCtl DESTINATION lib )
++install( TARGETS IlmImfCtl DESTINATION ${CMAKE_INSTALL_LIBDIR} )
+diff --git a/lib/dpx/CMakeLists.txt b/lib/dpx/CMakeLists.txt
+index c8be26e..918890e 100644
+--- a/lib/dpx/CMakeLists.txt
++++ b/lib/dpx/CMakeLists.txt
+@@ -11,3 +11,4 @@ add_library( ctldpx
+ dpx_rw.cc
+ )
+
++target_link_libraries( ctldpx ${IlmBase_LIBRARIES} )
diff --git a/multimedia/ctl/ctl.SlackBuild b/multimedia/ctl/ctl.SlackBuild
index 3109538c04..b29fa6ede5 100644
--- a/multimedia/ctl/ctl.SlackBuild
+++ b/multimedia/ctl/ctl.SlackBuild
@@ -1,15 +1,21 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for ctl
# Copyright 2016 Klaatu, Wellington NZ
# All rights reserved.
-#
+
+# 20220222 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - fix build on 15.0.
+# - move .doc and .pdf documentation to our doc dir.
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ctl
VERSION=${VERSION:-1.5.2}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -19,7 +25,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -49,9 +59,16 @@ cd CTL-$PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+ || true
+
+# 20220223 bkw: patches comes from AUR and/or gentoo.
+patch -p1 < $CWD/ctl-1.5.2-Use-GNUInstallDirs-and-fix-PkgConfig-files-1.patch
+patch -p1 < $CWD/ilmbase-2.3.0-compatibility.patch
+
+# 20220223 bkw: C++, the ever-moving target...
+sed -i -e 's,std::istream::streampos,std::streampos,g' lib/dpx/dpx.hh
PKG_CONFIG_PATH="$PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig:$PKG_CONFIG_PATH" \
CFLAGS="$SLKCFLAGS" \
@@ -61,36 +78,23 @@ cd build
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_EXE_LINKER_FLAGS="-lAcesContainer" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DINSTALL_CMAKE_DIR=/usr/lib${LIBDIRSUFFIX} \
-DINSTALL_LIB_DIR=/usr/lib${LIBDIRSUFFIX} \
-DCMAKE_BUILD_TYPE=Release ..
make
- make install DESTDIR=$PKG
-
- #brute force to conform to LIBDIRSUFFIX post facto
- #installer as written hardcode some files to usr/lib
- if [ -n "$LIBDIRSUFFIX" ]; then
- mv $PKG/usr/lib/* $PKG/usr/lib${LIBDIRSUFFIX}
- rmdir $PKG/usr/lib || false
- fi
-
+ make install/strip DESTDIR=$PKG
cd ..
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG -name perllocal.pod \
- -o -name ".packlist" \
- -o -name "*.bs" \
- | xargs rm -f
-
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a AUTHORS LICENSE CHANGELOG README.md $PKG/usr/doc/$PRGNAM-$VERSION
+mv $PKG/usr/share/doc/CTL/* $PKG/usr/doc/$PRGNAM-$VERSION
+rm -rf $PKG/usr/share
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/ctl/ilmbase-2.3.0-compatibility.patch b/multimedia/ctl/ilmbase-2.3.0-compatibility.patch
new file mode 100644
index 0000000000..48555c17a6
--- /dev/null
+++ b/multimedia/ctl/ilmbase-2.3.0-compatibility.patch
@@ -0,0 +1,11 @@
+--- a/lib/IlmCtlSimd/CtlSimdInst.cpp.orig 2014-06-03 01:11:24 UTC
++++ b/lib/IlmCtlSimd/CtlSimdInst.cpp
+@@ -189,7 +189,7 @@ SimdInst::executePath (SimdBoolMask &mas
+ REPLACE_EXC
+ (e, "\n" <<
+ xcontext.fileName() << ":" <<
+- inst->lineNumber() << ": " << e);
++ inst->lineNumber() << ": " << e.what());
+
+ throw e;
+ }
diff --git a/multimedia/cuetools/cuetools.SlackBuild b/multimedia/cuetools/cuetools.SlackBuild
index 4c8c2c1e07..e464fe62d1 100644
--- a/multimedia/cuetools/cuetools.SlackBuild
+++ b/multimedia/cuetools/cuetools.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for cuetools
@@ -16,26 +16,36 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=cuetools
VERSION=${VERSION:-1.4.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -95,4 +105,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/cuetools/cuetools.info b/multimedia/cuetools/cuetools.info
index 737fc91b7e..a20735c6c1 100644
--- a/multimedia/cuetools/cuetools.info
+++ b/multimedia/cuetools/cuetools.info
@@ -1,7 +1,7 @@
PRGNAM="cuetools"
VERSION="1.4.1"
HOMEPAGE="https://github.com/svend/cuetools"
-DOWNLOAD="https://github.com/svend/cuetools/archive/1.4.1.tar.gz"
+DOWNLOAD="https://github.com/svend/cuetools/archive/1.4.1/cuetools-1.4.1.tar.gz"
MD5SUM="b1f365fc7ab02eff4b58b6a54ecee080"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/multimedia/davs2/README b/multimedia/davs2/README
new file mode 100644
index 0000000000..f91a5653fa
--- /dev/null
+++ b/multimedia/davs2/README
@@ -0,0 +1,4 @@
+davs2 is an open-source decoder of
+AVS2-P2/IEEE1857.4 video coding standard.
+
+davs2 is an optional dependency of FFmpeg.
diff --git a/multimedia/davs2/davs2.SlackBuild b/multimedia/davs2/davs2.SlackBuild
new file mode 100644
index 0000000000..edf3fed070
--- /dev/null
+++ b/multimedia/davs2/davs2.SlackBuild
@@ -0,0 +1,123 @@
+#!/bin/bash
+
+# Slackware build script for davs2
+
+# Copyright 2022 Vijay Marcel
+
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=davs2
+VERSION=${VERSION:-1.7}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i586 ;;
+ arm*) export ARCH=arm ;;
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+if [ "$ARCH" = "i586" ] || [ "$ARCH" = "i686" ] || [ "$ARCH" = "arm" ] ; then
+ ASSEMBLY_OPT="--disable-asm"
+else
+ ASSEMBLY_OPT=""
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+cd build/linux/
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --enable-shared \
+ --system-libdavs2 \
+ --enable-lto \
+ --enable-strip \
+ --bit-depth='8' \
+ $ASSEMBLY_OPT \
+ --chroma-format='all'
+
+make
+make install DESTDIR=$PKG
+
+cd ../..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/davs2/davs2.info b/multimedia/davs2/davs2.info
new file mode 100644
index 0000000000..efb0d6d964
--- /dev/null
+++ b/multimedia/davs2/davs2.info
@@ -0,0 +1,10 @@
+PRGNAM="davs2"
+VERSION="1.7"
+HOMEPAGE="https://github.com/pkuvcl/davs2"
+DOWNLOAD="https://github.com/pkuvcl/davs2/archive/1.7/davs2-1.7.tar.gz"
+MD5SUM="d1558a5413b6691ad9c867cbd5c765aa"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/davs2/slack-desc b/multimedia/davs2/slack-desc
new file mode 100644
index 0000000000..a3e946b9b3
--- /dev/null
+++ b/multimedia/davs2/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+davs2: davs2 (AVS2 Decoder)
+davs2:
+davs2: davs2 is an open source decoder of AVS2 Video decoding
+davs2: standard
+davs2:
+davs2: Homepage: https//github.com/pkuvcl/davs2
+davs2:
+davs2:
+davs2:
+davs2:
+davs2:
diff --git a/multimedia/devedeng/devedeng.SlackBuild b/multimedia/devedeng/devedeng.SlackBuild
index 03c413867f..4b46d143c8 100644
--- a/multimedia/devedeng/devedeng.SlackBuild
+++ b/multimedia/devedeng/devedeng.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for devedeng
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=devedeng
VERSION=${VERSION:-4.16.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -73,4 +83,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/devedeng/devedeng.info b/multimedia/devedeng/devedeng.info
index 7f10d92b32..fed51fc781 100644
--- a/multimedia/devedeng/devedeng.info
+++ b/multimedia/devedeng/devedeng.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://gitlab.com/rastersoft/devedeng/-/archive/4.16.0/devedeng-4.16.
MD5SUM="16c38e7d03848f38e1441b298358932f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="dvdauthor ffmpeg vcdimager pygobject3-python3"
+REQUIRES="vcdimager"
MAINTAINER="Hunter Sezen"
EMAIL="orbea@riseup.net"
diff --git a/multimedia/dirac/README b/multimedia/dirac/README
index e8f98707d4..989d416d04 100644
--- a/multimedia/dirac/README
+++ b/multimedia/dirac/README
@@ -1,3 +1,3 @@
-Dirac is a open and royalty free high quality codec developed by BBC Research.
-The name Dirac is now mostly use to refer to the algorithm and specs while
-dirac-research is the name of the implementation.
+Dirac is a open and royalty free high quality codec developed by BBC
+Research. The name Dirac is now mostly use to refer to the algorithm
+and specs while dirac-research is the name of the implementation.
diff --git a/multimedia/dirac/dirac.SlackBuild b/multimedia/dirac/dirac.SlackBuild
index 94ab874563..0af0391e78 100644
--- a/multimedia/dirac/dirac.SlackBuild
+++ b/multimedia/dirac/dirac.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware Package Build Script for Dirac
# Home Page http://www.diracvideo.org/
@@ -24,10 +24,13 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=dirac
VERSION=${VERSION:-1.0.2}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-4}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -37,7 +40,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -103,8 +113,10 @@ cp -a AUTHORS ChangeLog COPYING INSTALL \
NEWS README TODO $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/droidcam/README b/multimedia/droidcam/README
new file mode 100644
index 0000000000..354a218a76
--- /dev/null
+++ b/multimedia/droidcam/README
@@ -0,0 +1,21 @@
+DroidCam
+
+DroidCam turns your phone/tablet into a webcam for your PC. Use
+ it with chat programs like Zoom, MS Teams, and Skype.
+
+Main Features:
+– Chat using “DroidCam Webcam†on your computer, including Sound
+and Picture.
+– Connect over WiFi or USB cable.
+– Unlimited free usage with standard definition.
+– Keep using your phone while DroidCam is in background (Android).
+– Simple, safe, efficient, and trusted by millions of people
+worldwide.
+
+The GNU/Linux client is a combination an executable app that
+connects to the phone, and Video4Linux and ALSA loopback drivers.
+
+It’s assumed you are somewhat familiar with the system and how to
+use the Terminal. Please keep in mind other posts on the site are
+Windows oriented.
+
diff --git a/multimedia/droidcam/README.SLACKWARE b/multimedia/droidcam/README.SLACKWARE
new file mode 100644
index 0000000000..a91a930ff9
--- /dev/null
+++ b/multimedia/droidcam/README.SLACKWARE
@@ -0,0 +1,24 @@
+
+Droidcam Slackware
+
+Probably the camera and microphone modules of the cell
+phone will not be loaded at startup, being necessary to
+add the following lines in the file "rc.modules.local".
+
+/sbin/modprobe v4l2loopback-dc
+/sbin/modprobe snd-aloop
+
+
+It is important to install the dkms package because it
+manages the v412loopback-dc video module. to compile the
+module automatically when the kernel is updated.
+Added this lines in rc.modules.local.
+
+# Enable DKMS module rebuilding
+
+if [ -x /usr/lib/dkms/dkms_autoinstaller ]; then
+ echo "Running DKMS autoinstaller"
+ /usr/lib/dkms/dkms_autoinstaller start
+fi
+
+
diff --git a/multimedia/droidcam/dkms.conf b/multimedia/droidcam/dkms.conf
new file mode 100644
index 0000000000..6a926bc32c
--- /dev/null
+++ b/multimedia/droidcam/dkms.conf
@@ -0,0 +1,5 @@
+PACKAGE_NAME="v4l2loopback-dc"
+PACKAGE_VERSION="1.8.2"
+BUILT_MODULE_NAME[0]="v4l2loopback-dc"
+DEST_MODULE_LOCATION[0]="/kernel/drivers/media/video/v4l2loopback-dc"
+AUTOINSTALL="yes" \ No newline at end of file
diff --git a/multimedia/droidcam/doinst.sh b/multimedia/droidcam/doinst.sh
new file mode 100644
index 0000000000..4c9ca03538
--- /dev/null
+++ b/multimedia/droidcam/doinst.sh
@@ -0,0 +1,30 @@
+VERSION="1.8.2"
+MODULE="v4l2loopback-dc"
+
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -x /usr/bin/update-mime-database ]; then
+ /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
+fi
+
+_installModule(){
+
+ cp -r /tmp/SBo/$MODULE-$VERSION /usr/src/
+ dkms add -m $MODULE -v $VERSION
+ dkms build -m $MODULE -v $VERSION
+ dkms install -m $MODULE -v $VERSION
+ /sbin/modprobe $MODULE
+ /sbin/modprobe snd-aloop
+}
+
+if [ "lsmod | grep v4l2loopback_dc" ]; then
+
+ _installModule
+
+else
+
+ echo "Module v4l2loopback_dc installed"
+
+fi
diff --git a/multimedia/droidcam/douninst.sh b/multimedia/droidcam/douninst.sh
new file mode 100644
index 0000000000..4406ab4609
--- /dev/null
+++ b/multimedia/droidcam/douninst.sh
@@ -0,0 +1,7 @@
+
+ VERSION="1.8.2"
+ MODULE="v4l2loopback-dc"
+
+dkms remove -m $MODULE/$VERSION --all >/dev/null 2>&1
+rm -rf /usr/src/$MODULE-$VERSION >/dev/null 2>&1
+rmmod -f v4l2loopback-dc >/dev/null 2>&1
diff --git a/multimedia/droidcam/droidcam.SlackBuild b/multimedia/droidcam/droidcam.SlackBuild
new file mode 100644
index 0000000000..d2d8ffdfc5
--- /dev/null
+++ b/multimedia/droidcam/droidcam.SlackBuild
@@ -0,0 +1,118 @@
+#!/bin/bash
+
+# Slackware build script for droidcam
+
+#
+# Copyright 2021 Andreo F. Rissardo <andreotec@gmail.com>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=droidcam
+VERSION=${VERSION:-1.8.2}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+
+unzip $CWD/"$PRGNAM"_"$VERSION".zip -d $TMP/$PRGNAM-$VERSION
+cd $TMP/$PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+
+
+MODULE="v4l2loopback-dc"
+
+#Prepare folder to install
+mkdir -p $PKG/usr/src/$MODULE-$VERSION
+cp -r $TMP/$PRGNAM-$VERSION/v4l2loopback $TMP/$MODULE-$VERSION
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/share/icons
+mkdir -p $PKG/usr/share/applications
+mkdir -p $PKG/usr/bin
+
+cat $CWD/dkms.conf > $TMP/$MODULE-$VERSION/dkms.conf
+cp -a $TMP/$PRGNAM-$VERSION/$PRGNAM $PKG/usr/bin/$PRGNAM
+strip -s $PKG/usr/bin/$PRGNAM
+cp -a $TMP/$PRGNAM-$VERSION/icon2.png $PKG/usr/share/icons/droidcam.png
+cp -a $TMP/$PRGNAM-$VERSION/droidcam.desktop $PKG/usr/share/applications/Droidcam.desktop
+
+sed -i "5,6s/local\///" $PKG/usr/share/applications/Droidcam.desktop
+sed -i "7s/.*/Icon=\/usr\/share\/icons\/droidcam.png/" $PKG/usr/share/applications/Droidcam.desktop
+
+#Documentation
+cp -a $CWD/README* $PKG/usr/doc/$PRGNAM-$VERSION/
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+cat $CWD/douninst.sh > $PKG/install/douninst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/droidcam/droidcam.info b/multimedia/droidcam/droidcam.info
new file mode 100644
index 0000000000..3849af8446
--- /dev/null
+++ b/multimedia/droidcam/droidcam.info
@@ -0,0 +1,10 @@
+PRGNAM="droidcam"
+VERSION="1.8.2"
+HOMEPAGE="https://www.dev47apps.com/"
+DOWNLOAD="https://files.dev47apps.net/linux/droidcam_1.8.2.zip"
+MD5SUM="af019ca66198c501e2ffa813d1c81471"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="android-tools dkms"
+MAINTAINER="Andreo Rissardo"
+EMAIL="andreotec@gmail.com"
diff --git a/multimedia/dvbsnoop/slack-desc b/multimedia/droidcam/slack-desc
index de55c70ac7..52ffa083b1 100644
--- a/multimedia/dvbsnoop/slack-desc
+++ b/multimedia/droidcam/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-dvbsnoop: dvbsnoop (a dvb stream analyzer tool)
-dvbsnoop:
-dvbsnoop: dvbsnoop is a DVB/MPEG stream analyzer program, which enables you to
-dvbsnoop: watch (live) stream information in human readable form. Its purpose
-dvbsnoop: is to debug, dump or view digital stream information (e.g. digital
-dvbsnoop: television broadcasts) send via satellite, cable or terrestrial.
-dvbsnoop:
-dvbsnoop:
-dvbsnoop:
-dvbsnoop:
-dvbsnoop:
+droidcam: droidcam (Use your phone as a webcam!)
+droidcam:
+droidcam: DroidCam turns your phone/tablet into a webcam for your PC. Use it
+droidcam: with chat programs like Zoom, MS Teams, and Skype. The app works with
+droidcam: a PC Client component that installs the webcam drivers, and connects
+droidcam: the computer to your mobile.
+droidcam:
+droidcam:
+droidcam:
+droidcam: https://www.dev47apps.com/
+droidcam:
diff --git a/multimedia/dsmidiwifi/README b/multimedia/dsmidiwifi/README
index 4fcb4e5a8c..83f9efa07f 100644
--- a/multimedia/dsmidiwifi/README
+++ b/multimedia/dsmidiwifi/README
@@ -1,8 +1,8 @@
-An application that runs on the computer and forwards the MIDI messages received
-via Wifi to MIDI applications.
+An application that runs on the computer and forwards the MIDI
+messages received via Wifi to MIDI applications.
-Mini howto: Start jack and dsmidiwifi. Then start a (dsmi) wifimidi program on
-another network device (like midimonitor on iPad)
+Mini howto: Start jack and dsmidiwifi. Then start a (dsmi) wifimidi
+program on another network device (like midimonitor on iPad)
Optional runtime dependencies (for easy routing of dsmidiwifi) are
jack and qjackctl
diff --git a/multimedia/dsmidiwifi/dsmidiwifi.SlackBuild b/multimedia/dsmidiwifi/dsmidiwifi.SlackBuild
index 854c580a37..fae8646fc6 100644
--- a/multimedia/dsmidiwifi/dsmidiwifi.SlackBuild
+++ b/multimedia/dsmidiwifi/dsmidiwifi.SlackBuild
@@ -1,28 +1,35 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <dsmidiwifi>
#
# Michales - clavisound - Michaloudes korgie@gmail.com <2012>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=dsmidiwifi
VERSION=${VERSION:-1.01}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -47,13 +54,13 @@ cd $PRGNAM-$VERSION/source
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
-qmake
+qmake-qt4
make
# manual cp the files and canonicalize
@@ -77,4 +84,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/dsmidiwifi/dsmidiwifi.info b/multimedia/dsmidiwifi/dsmidiwifi.info
index 4a1ceceea3..f043849032 100644
--- a/multimedia/dsmidiwifi/dsmidiwifi.info
+++ b/multimedia/dsmidiwifi/dsmidiwifi.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://storage.googleapis.com/google-code-archive-downloads/v2/code.g
MD5SUM="e45703b1a37602d6326916d2ce1b404c"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="qt4"
MAINTAINER="Michales Michaloudes"
EMAIL="korgie@gmail.com"
diff --git a/multimedia/dssi/README b/multimedia/dssi/README
index 9daa911de7..8db4cda608 100644
--- a/multimedia/dssi/README
+++ b/multimedia/dssi/README
@@ -1,6 +1,11 @@
-DSSI (pronounced "dizzy") is an API for audio processing plugins, particularly
-useful for software synthesis plugins with user interfaces.
+DSSI (pronounced "dizzy") is an API for audio processing plugins,
+particularly useful for software synthesis plugins with user
+interfaces.
-DSSI is an open and well-documented specification developed for use in Linux
-audio applications, although portable to other platforms. It may be thought of
-as LADSPA-for-instruments, or something comparable to VSTi.
+DSSI is an open and well-documented specification developed for use
+in Linux audio applications, although portable to other platforms. It
+may be thought of as LADSPA-for-instruments, or something comparable
+to VSTi.
+
+qt4 is an optional dependency. If found, the package will include a
+qt-based 'trivial_sampler_qt' plugin.
diff --git a/multimedia/dssi/dssi.SlackBuild b/multimedia/dssi/dssi.SlackBuild
index 8067fe660b..ee3849c3ed 100644
--- a/multimedia/dssi/dssi.SlackBuild
+++ b/multimedia/dssi/dssi.SlackBuild
@@ -1,29 +1,36 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <dssi>
# Written by Michales Michaloudes korgie@gmail.com
# Updated by Heinz Wiesinger pprkut@liwjatan.at - Added profile.d scripts
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=dssi
VERSION=${VERSION:-1.1.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -47,9 +54,9 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -90,4 +97,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/dvblast/README b/multimedia/dvblast/README
index 11aa28453f..476d34d17b 100644
--- a/multimedia/dvblast/README
+++ b/multimedia/dvblast/README
@@ -1 +1,2 @@
-DVBlast is a simple and powerful MPEG-2/TS demux and streaming application.
+DVBlast is a simple and powerful MPEG-2/TS demux and streaming
+application.
diff --git a/multimedia/dvblast/dvblast.SlackBuild b/multimedia/dvblast/dvblast.SlackBuild
index b7d937fd24..4d81fd394c 100644
--- a/multimedia/dvblast/dvblast.SlackBuild
+++ b/multimedia/dvblast/dvblast.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for dvblast
@@ -23,10 +23,13 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=dvblast
VERSION=${VERSION:-3.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -92,4 +102,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/dvbsnoop/README b/multimedia/dvbsnoop/README
deleted file mode 100644
index de3fbd12e5..0000000000
--- a/multimedia/dvbsnoop/README
+++ /dev/null
@@ -1,15 +0,0 @@
-dvbsnoop is a DVB / MPEG stream analyzer program, which enables you to
-watch (live) stream information in human readable form.
-
-Its purpose is to debug, dump or view digital stream information
-(e.g. digital television broadcasts) send via satellite, cable or
-terrestrial. Streams can be SI, PES or TS. Basically you can describe
-dvbsnoop as a "swiss army knife" analyzing program for DVB, MHP, DSM-CC
-or MPEG - similar to TCP network sniffer programs like the old and famous
-snoop on Sun Solaris or tcpdump on Linux (which is in fact a kind of
-a clone of SunOS 'snoop'). You may also analyze offline mpeg streams,
-e.g. stored on DVD or mpeg2 movie files.
-
-dvbsnoop is a command line based program. It's text output can be used
-to for postprocessing via scripts or graphical analysis software like
-MRTG or gnu-plot.
diff --git a/multimedia/dvbsnoop/dvbsnoop.SlackBuild b/multimedia/dvbsnoop/dvbsnoop.SlackBuild
deleted file mode 100644
index d7608ae323..0000000000
--- a/multimedia/dvbsnoop/dvbsnoop.SlackBuild
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for dvbsnoop
-
-# Written by Pablo Santamaria (pablosantamaria@gmail.com)
-
-PRGNAM=dvbsnoop
-VERSION=${VERSION:-1.4.50}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- AUTHORS COPYING ChangeLog INSTALL README \
- $PKG/usr/doc/$PRGNAM-$VERSION
-chmod 644 $PKG/usr/doc/$PRGNAM-$VERSION/*
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/dvbsnoop/dvbsnoop.info b/multimedia/dvbsnoop/dvbsnoop.info
deleted file mode 100644
index da845b828f..0000000000
--- a/multimedia/dvbsnoop/dvbsnoop.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="dvbsnoop"
-VERSION="1.4.50"
-HOMEPAGE="http://dvbsnoop.sourceforge.net/"
-DOWNLOAD="http://downloads.sourceforge.net/dvbsnoop/dvbsnoop-1.4.50.tar.gz"
-MD5SUM="68a5618c95b4372eea9ac5ec5005f299"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Pablo Santamaria"
-EMAIL="pablosantamaria@gmail.com"
diff --git a/multimedia/dvd-slideshow/dvd-slideshow.SlackBuild b/multimedia/dvd-slideshow/dvd-slideshow.SlackBuild
index 2c079d5b75..41214889eb 100644
--- a/multimedia/dvd-slideshow/dvd-slideshow.SlackBuild
+++ b/multimedia/dvd-slideshow/dvd-slideshow.SlackBuild
@@ -1,18 +1,28 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for dvd-slideshow
# Maintained by Klaatu @member.fsf.org
# Written by Giovanne Castro <giovannefc@terra.com.br>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=dvd-slideshow
-VERSION=${VERSION:-0.8.4_2}
+VERSION=${VERSION:-0.8.6_1}
SRCVER=$(echo $VERSION | tr _ -)
ARCH=noarch
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
-CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -57,4 +67,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/dvd-slideshow/dvd-slideshow.info b/multimedia/dvd-slideshow/dvd-slideshow.info
index fdbffb1990..3eebd16237 100644
--- a/multimedia/dvd-slideshow/dvd-slideshow.info
+++ b/multimedia/dvd-slideshow/dvd-slideshow.info
@@ -1,10 +1,10 @@
PRGNAM="dvd-slideshow"
-VERSION="0.8.4_2"
+VERSION="0.8.6_1"
HOMEPAGE="http://dvd-slideshow.sourceforge.net/"
-DOWNLOAD="http://sourceforge.net/projects/dvd-slideshow/files/dvd-slideshow/0.8.4-2/dvd-slideshow-0.8.4-2.tar.gz"
-MD5SUM="ec9527a7afc11f6a05f499b590aa849a"
+DOWNLOAD="http://sourceforge.net/projects/dvd-slideshow/files/dvd-slideshow/0.8.6-1/dvd-slideshow-0.8.6-1.tar.gz"
+MD5SUM="6fce4f2ae9dd30fb2b19c39336ea4046"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="dvdauthor ffmpeg oggvideotools"
+REQUIRES="oggvideotools"
MAINTAINER="Klaatu"
EMAIL="klaatu@member.fsf.org"
diff --git a/multimedia/dvdauthor/README b/multimedia/dvdauthor/README
deleted file mode 100644
index e2e4e08b5d..0000000000
--- a/multimedia/dvdauthor/README
+++ /dev/null
@@ -1,2 +0,0 @@
-dvdauthor is a program that will generate a DVD movie from a valid mpeg2
-stream. The movie should play when you put it in a standard DVD player.
diff --git a/multimedia/dvdauthor/dvdauthor.info b/multimedia/dvdauthor/dvdauthor.info
deleted file mode 100644
index 637ac2e379..0000000000
--- a/multimedia/dvdauthor/dvdauthor.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="dvdauthor"
-VERSION="0.7.2"
-HOMEPAGE="http://dvdauthor.sf.net"
-DOWNLOAD="http://downloads.sourceforge.net/dvdauthor/dvdauthor-0.7.2.tar.gz"
-MD5SUM="1173dcb8d40e74fc90c0f3a25dbd642d"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Edward W. Koenig"
-EMAIL="kingbeowulf@gmail.com"
diff --git a/multimedia/dvdbackup/README b/multimedia/dvdbackup/README
index 48ef05de8d..7b398dfdbd 100644
--- a/multimedia/dvdbackup/README
+++ b/multimedia/dvdbackup/README
@@ -1,4 +1,12 @@
dvdbackup is a tool to backup video DVDs from the command line.
It has the advantages of being small, fast, and easy to use.
-libdvdcss is optional but most likely desired.
+By default, dvdbackup reformats the DVD title by replacing the
+underscores with spaces and converting to "Proper Case".
+To turn this "feature" off and retain the original VOLUME_ID
+formatting, pass CLOBBER="no" to the script.
+
+NOTE: Copyright laws vary from nation to nation, so bear in mind
+that this program is only intended for personal backups.
+
+libdvdcss is is an optional runtime dependency.
diff --git a/multimedia/dvdbackup/dvdbackup.SlackBuild b/multimedia/dvdbackup/dvdbackup.SlackBuild
index ab324bce25..49033887db 100644
--- a/multimedia/dvdbackup/dvdbackup.SlackBuild
+++ b/multimedia/dvdbackup/dvdbackup.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for dvdbackup
# Copyright 2013 John Vogel Corning, New York US
+# Copyright 2020 Lenard Spencer, Orlando, Florida USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,26 +23,36 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=dvdbackup
VERSION=${VERSION:-0.4.2}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i686 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -69,16 +80,23 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# Patches from lauchpad bazaar repo.
+# Patch to not treat automake warnings as errors
patch -p0 < $CWD/patches/do_not_treat_automake_warnings_as_errors.patch
-patch -p0 < $CWD/patches/remove_PATH_MAX_limitation.patch
+
+# Patch for latest dvdread:
+patch -p0 < $CWD/patches/dvdbackup-dvdread-6.1.patch
+
+# Patch to not change VOLUME_ID to Volume Id
+if [ ${CLOBBER:-"yes"} == "no" ]; then
+ patch -p1 < $CWD/patches/dvdbackup_no-convert-title.patch
+fi
+
+autoreconf -fiv
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
@@ -102,4 +120,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/dvdbackup/dvdbackup.info b/multimedia/dvdbackup/dvdbackup.info
index 90f9497b10..1964b50274 100644
--- a/multimedia/dvdbackup/dvdbackup.info
+++ b/multimedia/dvdbackup/dvdbackup.info
@@ -6,5 +6,5 @@ MD5SUM="fd9189149ec88520e0ceba8d17520fbb"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="John Vogel"
-EMAIL="jvogel4@stny.rr.com"
+MAINTAINER="Lenard Spencer"
+EMAIL="lenardrspencer@gmail.com"
diff --git a/multimedia/dvdbackup/patches/dvdbackup-dvdread-6.1.patch b/multimedia/dvdbackup/patches/dvdbackup-dvdread-6.1.patch
new file mode 100644
index 0000000000..88f88cbecd
--- /dev/null
+++ b/multimedia/dvdbackup/patches/dvdbackup-dvdread-6.1.patch
@@ -0,0 +1,86 @@
+--- src/dvdbackup.c.orig 2012-06-24 01:10:29 UTC
++++ src/dvdbackup.c
+@@ -1132,7 +1132,7 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+ int size;
+
+ /* DVD handler */
+- ifo_handle_t* ifo_file = NULL;
++ dvd_file_t* ifo_file = NULL;
+
+ if (title_set_info->number_of_title_sets + 1 < title_set) {
+ return(1);
+@@ -1181,7 +1181,7 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+ if ((streamout_ifo = open(targetname_ifo, O_WRONLY | O_CREAT | O_TRUNC, 0666)) == -1) {
+ fprintf(stderr, _("Error creating %s\n"), targetname_ifo);
+ perror(PACKAGE);
+- ifoClose(ifo_file);
++ DVDCloseFile(ifo_file);
+ free(buffer);
+ close(streamout_ifo);
+ close(streamout_bup);
+@@ -1191,7 +1191,7 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+ if ((streamout_bup = open(targetname_bup, O_WRONLY | O_CREAT | O_TRUNC, 0666)) == -1) {
+ fprintf(stderr, _("Error creating %s\n"), targetname_bup);
+ perror(PACKAGE);
+- ifoClose(ifo_file);
++ DVDCloseFile(ifo_file);
+ free(buffer);
+ close(streamout_ifo);
+ close(streamout_bup);
+@@ -1200,31 +1200,31 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+
+ /* Copy VIDEO_TS.IFO, since it's a small file try to copy it in one shot */
+
+- if ((ifo_file = ifoOpen(dvd, title_set))== 0) {
++ if ((ifo_file = DVDOpenFile(dvd, title_set, DVD_READ_INFO_FILE))== 0) {
+ fprintf(stderr, _("Failed opening IFO for title set %d\n"), title_set);
+- ifoClose(ifo_file);
++ DVDCloseFile(ifo_file);
+ free(buffer);
+ close(streamout_ifo);
+ close(streamout_bup);
+ return 1;
+ }
+
+- size = DVDFileSize(ifo_file->file) * DVD_VIDEO_LB_LEN;
++ size = DVDFileSize(ifo_file) * DVD_VIDEO_LB_LEN;
+
+ if ((buffer = (unsigned char *)malloc(size * sizeof(unsigned char))) == NULL) {
+ perror(PACKAGE);
+- ifoClose(ifo_file);
++ DVDCloseFile(ifo_file);
+ free(buffer);
+ close(streamout_ifo);
+ close(streamout_bup);
+ return 1;
+ }
+
+- DVDFileSeek(ifo_file->file, 0);
++ DVDFileSeek(ifo_file, 0);
+
+- if (DVDReadBytes(ifo_file->file,buffer,size) != size) {
++ if (DVDReadBytes(ifo_file,buffer,size) != size) {
+ fprintf(stderr, _("Error reading IFO for title set %d\n"), title_set);
+- ifoClose(ifo_file);
++ DVDCloseFile(ifo_file);
+ free(buffer);
+ close(streamout_ifo);
+ close(streamout_bup);
+@@ -1234,7 +1234,7 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+
+ if (write(streamout_ifo,buffer,size) != size) {
+ fprintf(stderr, _("Error writing %s\n"),targetname_ifo);
+- ifoClose(ifo_file);
++ DVDCloseFile(ifo_file);
+ free(buffer);
+ close(streamout_ifo);
+ close(streamout_bup);
+@@ -1243,7 +1243,7 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+
+ if (write(streamout_bup,buffer,size) != size) {
+ fprintf(stderr, _("Error writing %s\n"),targetname_bup);
+- ifoClose(ifo_file);
++ DVDCloseFile(ifo_file);
+ free(buffer);
+ close(streamout_ifo);
+ close(streamout_bup);
diff --git a/multimedia/dvdbackup/patches/dvdbackup_no-convert-title.patch b/multimedia/dvdbackup/patches/dvdbackup_no-convert-title.patch
new file mode 100644
index 0000000000..aa515aad31
--- /dev/null
+++ b/multimedia/dvdbackup/patches/dvdbackup_no-convert-title.patch
@@ -0,0 +1,26 @@
+diff -Naur dvdbackup-0.4.2/src/dvdbackup.c dvdbackup-0.4.2.new/src/dvdbackup.c
+--- dvdbackup-0.4.2/src/dvdbackup.c 2012-06-23 21:10:29.000000000 -0400
++++ dvdbackup-0.4.2.new/src/dvdbackup.c 2020-01-19 10:13:23.689417434 -0500
+@@ -1326,22 +1326,6 @@
+ length--;
+ }
+
+- /* convert title to lower case and replace underscores with spaces */
+- for(i = 0; i < length; i++) {
+- word_length++;
+- if(word_length == 1) {
+- title[i] = toupper(title[i]);
+- } else {
+- title[i] = tolower(title[i]);
+- }
+- if(title[i] == '_') {
+- title[i] = ' ';
+- }
+- if(title[i] == ' ') {
+- word_length = 0;
+- }
+- }
+-
+ return(0);
+ }
+
diff --git a/multimedia/dvdbackup/patches/remove_PATH_MAX_limitation.patch b/multimedia/dvdbackup/patches/remove_PATH_MAX_limitation.patch
deleted file mode 100644
index 75a1295566..0000000000
--- a/multimedia/dvdbackup/patches/remove_PATH_MAX_limitation.patch
+++ /dev/null
@@ -1,463 +0,0 @@
-=== modified file 'src/dvdbackup.c'
---- src/dvdbackup.c 2012-06-24 01:13:07 +0000
-+++ src/dvdbackup.c 2013-07-04 12:06:44 +0000
-@@ -2,7 +2,7 @@
- * dvdbackup - tool to rip DVDs from the command line
- *
- * Copyright (C) 2002 Olaf Beck <olaf_sc@yahoo.com>
-- * Copyright (C) 2008-2012 Benjamin Drung <benjamin.drung@gmail.com>
-+ * Copyright (C) 2008-2013 Benjamin Drung <benjamin.drung@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
-@@ -179,7 +179,8 @@
- int vob = 1;
-
- /* Temp filename,dirname */
-- char targetname[PATH_MAX];
-+ char *targetname;
-+ size_t targetname_length;
-
- /* Write buffer */
-
-@@ -217,10 +218,18 @@
- fprintf(stderr,"DVDWriteCells: vob files are %d\n", number_of_vob_files);
- #endif
-
-+ // Reserve space for "<targetdir>/<title_name>/VIDEO_TS/VTS_XX_X.VOB" and terminating "\0"
-+ targetname_length = strlen(targetdir) + strlen(title_name) + 24;
-+ targetname = malloc(targetname_length);
-+ if (targetname == NULL) {
-+ fprintf(stderr, _("Failed to allocate %zu bytes for a filename.\n"), targetname_length);
-+ return 1;
-+ }
-+
- /* Remove all old files silently if they exists */
-
- for ( i = 0 ; i < 10 ; i++ ) {
-- sprintf(targetname,"%s/%s/VIDEO_TS/VTS_%02i_%i.VOB",targetdir, title_name, title_set, i + 1);
-+ snprintf(targetname, targetname_length, "%s/%s/VIDEO_TS/VTS_%02i_%i.VOB", targetdir, title_name, title_set, i + 1);
- #ifdef DEBUG
- fprintf(stderr,"DVDWriteCells: file is %s\n", targetname);
- #endif
-@@ -237,9 +246,10 @@
- /* Create VTS_XX_X.VOB */
- if (title_set == 0) {
- fprintf(stderr,_("Do not try to copy chapters from the VMG domain; there are none.\n"));
-+ free(targetname);
- return(1);
- } else {
-- sprintf(targetname,"%s/%s/VIDEO_TS/VTS_%02i_%i.VOB",targetdir, title_name, title_set, vob);
-+ snprintf(targetname, targetname_length, "%s/%s/VIDEO_TS/VTS_%02i_%i.VOB", targetdir, title_name, title_set, vob);
- }
-
- #ifdef DEBUG
-@@ -248,6 +258,7 @@
-
- if ((buffer = (unsigned char *)malloc(BUFFER_SIZE * DVD_VIDEO_LB_LEN * sizeof(unsigned char))) == NULL) {
- fprintf(stderr, _("Out of memory copying %s\n"), targetname);
-+ free(targetname);
- return(1);
- }
-
-@@ -259,6 +270,7 @@
- if ((streamout = open(targetname, O_WRONLY | O_CREAT | O_APPEND, 0666)) == -1) {
- fprintf(stderr, _("Error creating %s\n"), targetname);
- perror(PACKAGE);
-+ free(targetname);
- return(1);
- }
-
-@@ -271,6 +283,7 @@
- fprintf(stderr, _("Failed opening TITLE VOB\n"));
- free(buffer);
- close(streamout);
-+ free(targetname);
- return(1);
- }
-
-@@ -294,6 +307,7 @@
- free(buffer);
- DVDCloseFile(dvd_file);
- close(streamout);
-+ free(targetname);
- return(1);
- }
- if (have_read < to_read) {
-@@ -303,6 +317,7 @@
- fprintf(stderr, _("Error writing TITLE VOB\n"));
- free(buffer);
- close(streamout);
-+ free(targetname);
- return(1);
- }
- #ifdef DEBUG
-@@ -321,10 +336,11 @@
- close(streamout);
- vob = vob + 1;
- size = 0;
-- sprintf(targetname,"%s/%s/VIDEO_TS/VTS_%02i_%i.VOB",targetdir, title_name, title_set, vob);
-+ snprintf(targetname, targetname_length, "%s/%s/VIDEO_TS/VTS_%02i_%i.VOB", targetdir, title_name, title_set, vob);
- if ((streamout = open(targetname, O_WRONLY | O_CREAT | O_APPEND, 0666)) == -1) {
- fprintf(stderr, _("Error creating %s\n"), targetname);
- perror(PACKAGE);
-+ free(targetname);
- return(1);
- }
- }
-@@ -334,6 +350,7 @@
- DVDCloseFile(dvd_file);
- free(buffer);
- close(streamout);
-+ free(targetname);
-
- return(0);
- }
-@@ -925,8 +942,10 @@
- int i;
-
- /* Temp filename,dirname */
-- char filename[PATH_MAX] = "VIDEO_TS.VOB";
-- char targetname[PATH_MAX];
-+ // filename is either "VIDEO_TS.VOB" or "VTS_XX_X.VOB" and terminating "\0"
-+ char filename[13] = "VIDEO_TS.VOB";
-+ char *targetname;
-+ size_t targetname_length;
- struct stat fileinfo;
-
- /* File Handler */
-@@ -943,9 +962,10 @@
- /* Return value */
- int result;
-
-+
- /* create filename VIDEO_TS.VOB or VTS_XX_X.VOB */
- if(title_set > 0) {
-- sprintf(filename, "VTS_%02i_%i.VOB", title_set, vob);
-+ sprintf(filename, "VTS_%02i_%1i.VOB", title_set, vob);
- }
-
- if (title_set_info->number_of_title_sets + 1 < title_set) {
-@@ -980,7 +1000,14 @@
- fprintf(stderr,_("Do not try to copy a Title VOB from the VMG domain; there are none.\n"));
- return(1);
- } else {
-- sprintf(targetname,"%s/%s/VIDEO_TS/VTS_%02i_%i.VOB",targetdir, title_name, title_set, vob);
-+ // Reserve space for "<targetdir>/<title_name>/VIDEO_TS/<filename>" and terminating "\0"
-+ targetname_length = strlen(targetdir) + strlen(title_name) + strlen(filename) + 12;
-+ targetname = malloc(targetname_length);
-+ if (targetname == NULL) {
-+ fprintf(stderr, _("Failed to allocate %zu bytes for a filename.\n"), targetname_length);
-+ return 1;
-+ }
-+ snprintf(targetname, targetname_length, "%s/%s/VIDEO_TS/%s", targetdir, title_name, filename);
- }
-
-
-@@ -990,6 +1017,7 @@
- tsize = title_set_info->title_set[title_set].size_vob[i];
- if (tsize%DVD_VIDEO_LB_LEN != 0) {
- fprintf(stderr, _("The Title VOB number %d of title set %d does not have a valid DVD size\n"), i + 1, title_set);
-+ free(targetname);
- return(1);
- } else {
- offset = offset + tsize/DVD_VIDEO_LB_LEN;
-@@ -1006,11 +1034,13 @@
- if (! S_ISREG(fileinfo.st_mode)) {
- /* TRANSLATORS: The sentence starts with "The title file %s is not valid[...]" */
- fprintf(stderr,_("The %s %s is not valid, it may be a directory.\n"), _("title file"), targetname);
-+ free(targetname);
- return(1);
- } else {
- if ((streamout = open(targetname, O_WRONLY | O_TRUNC, 0666)) == -1) {
- fprintf(stderr, _("Error opening %s\n"), targetname);
- perror(PACKAGE);
-+ free(targetname);
- return(1);
- }
- }
-@@ -1018,6 +1048,7 @@
- if ((streamout = open(targetname, O_WRONLY | O_CREAT, 0666)) == -1) {
- fprintf(stderr, _("Error creating %s\n"), targetname);
- perror(PACKAGE);
-+ free(targetname);
- return(1);
- }
- }
-@@ -1025,6 +1056,7 @@
- if ((dvd_file = DVDOpenFile(dvd, title_set, DVD_READ_TITLE_VOBS))== 0) {
- fprintf(stderr, _("Failed opening TITLE VOB\n"));
- close(streamout);
-+ free(targetname);
- return(1);
- }
-
-@@ -1032,6 +1064,7 @@
-
- DVDCloseFile(dvd_file);
- close(streamout);
-+ free(targetname);
- return result;
- }
-
-@@ -1039,8 +1072,10 @@
- static int DVDCopyMenu(dvd_reader_t * dvd, title_set_info_t * title_set_info, int title_set, char * targetdir,char * title_name, read_error_strategy_t errorstrat) {
-
- /* Temp filename,dirname */
-- char filename[PATH_MAX] = "VIDEO_TS.VOB";
-- char targetname[PATH_MAX];
-+ // filename is either "VIDEO_TS.VOB" or "VTS_XX_0.VOB" and terminating "\0"
-+ char filename[13] = "VIDEO_TS.VOB";
-+ char *targetname;
-+ size_t targetname_length;
- struct stat fileinfo;
-
- /* File Handler */
-@@ -1077,8 +1112,15 @@
- return(1);
- }
-
-+ // Reserve space for "<targetdir>/<title_name>/VIDEO_TS/<filename>" and terminating "\0"
-+ targetname_length = strlen(targetdir) + strlen(title_name) + strlen(filename) + 12;
-+ targetname = malloc(targetname_length);
-+ if (targetname == NULL) {
-+ fprintf(stderr, _("Failed to allocate %zu bytes for a filename.\n"), targetname_length);
-+ return 1;
-+ }
- /* Create VIDEO_TS.VOB or VTS_XX_0.VOB */
-- sprintf(targetname,"%s/%s/VIDEO_TS/%s",targetdir, title_name, filename);
-+ snprintf(targetname, targetname_length, "%s/%s/VIDEO_TS/%s", targetdir, title_name, filename);
-
- if (stat(targetname, &fileinfo) == 0) {
- /* TRANSLATORS: The sentence starts with "The menu file %s exists[...]" */
-@@ -1087,12 +1129,14 @@
- /* TRANSLATORS: The sentence starts with "The menu file %s is not valid[...]" */
- fprintf(stderr,_("The %s %s is not valid, it may be a directory.\n"), _("menu file"), targetname);
- DVDCloseFile(dvd_file);
-+ free(targetname);
- return(1);
- } else {
- if ((streamout = open(targetname, O_WRONLY | O_TRUNC, 0666)) == -1) {
- fprintf(stderr, _("Error opening %s\n"), targetname);
- perror(PACKAGE);
- DVDCloseFile(dvd_file);
-+ free(targetname);
- return(1);
- }
- }
-@@ -1101,6 +1145,7 @@
- fprintf(stderr, _("Error creating %s\n"), targetname);
- perror(PACKAGE);
- DVDCloseFile(dvd_file);
-+ free(targetname);
- return(1);
- }
- }
-@@ -1113,6 +1158,7 @@
-
- DVDCloseFile(dvd_file);
- close(streamout);
-+ free(targetname);
- return result;
-
- }
-@@ -1120,7 +1166,9 @@
-
- static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_info_t* title_set_info, int title_set, char* targetdir, char* title_name) {
- /* Temp filename, dirname */
-- char targetname_ifo[PATH_MAX], targetname_bup[PATH_MAX];
-+ char *targetname_ifo;
-+ char *targetname_bup;
-+ size_t string_length;
- struct stat fileinfo;
-
- /* Write buffer */
-@@ -1148,14 +1196,26 @@
- }
- }
-
-+ // Reserve space for "<targetdir>/<title_name>/VIDEO_TS/VIDEO_TS.IFO" or
-+ // "<targetdir>/<title_name>/VIDEO_TS/VTS_XX_0.IFO" and terminating "\0"
-+ string_length = strlen(targetdir) + strlen(title_name) + 24;
-+ targetname_ifo = malloc(string_length);
-+ targetname_bup = malloc(string_length);
-+ if (targetname_ifo == NULL || targetname_bup == NULL) {
-+ fprintf(stderr, _("Failed to allocate %zu bytes for a filename.\n"), string_length);
-+ free(targetname_ifo);
-+ free(targetname_bup);
-+ return 1;
-+ }
-+
- /* Create VIDEO_TS.IFO or VTS_XX_0.IFO */
-
- if (title_set == 0) {
-- sprintf(targetname_ifo,"%s/%s/VIDEO_TS/VIDEO_TS.IFO",targetdir, title_name);
-- sprintf(targetname_bup,"%s/%s/VIDEO_TS/VIDEO_TS.BUP",targetdir, title_name);
-+ snprintf(targetname_ifo, string_length, "%s/%s/VIDEO_TS/VIDEO_TS.IFO", targetdir, title_name);
-+ snprintf(targetname_bup, string_length, "%s/%s/VIDEO_TS/VIDEO_TS.BUP", targetdir, title_name);
- } else {
-- sprintf(targetname_ifo,"%s/%s/VIDEO_TS/VTS_%02i_0.IFO",targetdir, title_name, title_set);
-- sprintf(targetname_bup,"%s/%s/VIDEO_TS/VTS_%02i_0.BUP",targetdir, title_name, title_set);
-+ snprintf(targetname_ifo, string_length, "%s/%s/VIDEO_TS/VTS_%02i_0.IFO", targetdir, title_name, title_set);
-+ snprintf(targetname_bup, string_length, "%s/%s/VIDEO_TS/VTS_%02i_0.BUP", targetdir, title_name, title_set);
- }
-
- if (stat(targetname_ifo, &fileinfo) == 0) {
-@@ -1164,6 +1224,8 @@
- if (! S_ISREG(fileinfo.st_mode)) {
- /* TRANSLATORS: The sentence starts with "The IFO file %s is not valid[...]" */
- fprintf(stderr,_("The %s %s is not valid, it may be a directory.\n"), _("IFO file"), targetname_ifo);
-+ free(targetname_ifo);
-+ free(targetname_bup);
- return(1);
- }
- }
-@@ -1174,6 +1236,8 @@
- if (! S_ISREG(fileinfo.st_mode)) {
- /* TRANSLATORS: The sentence starts with "The BUP file %s is not valid[...]" */
- fprintf(stderr,_("The %s %s is not valid, it may be a directory.\n"), _("BUP file"), targetname_bup);
-+ free(targetname_ifo);
-+ free(targetname_bup);
- return(1);
- }
- }
-@@ -1183,6 +1247,8 @@
- perror(PACKAGE);
- ifoClose(ifo_file);
- free(buffer);
-+ free(targetname_ifo);
-+ free(targetname_bup);
- close(streamout_ifo);
- close(streamout_bup);
- return 1;
-@@ -1193,6 +1259,8 @@
- perror(PACKAGE);
- ifoClose(ifo_file);
- free(buffer);
-+ free(targetname_ifo);
-+ free(targetname_bup);
- close(streamout_ifo);
- close(streamout_bup);
- return 1;
-@@ -1204,6 +1272,8 @@
- fprintf(stderr, _("Failed opening IFO for title set %d\n"), title_set);
- ifoClose(ifo_file);
- free(buffer);
-+ free(targetname_ifo);
-+ free(targetname_bup);
- close(streamout_ifo);
- close(streamout_bup);
- return 1;
-@@ -1215,6 +1285,8 @@
- perror(PACKAGE);
- ifoClose(ifo_file);
- free(buffer);
-+ free(targetname_ifo);
-+ free(targetname_bup);
- close(streamout_ifo);
- close(streamout_bup);
- return 1;
-@@ -1226,6 +1298,8 @@
- fprintf(stderr, _("Error reading IFO for title set %d\n"), title_set);
- ifoClose(ifo_file);
- free(buffer);
-+ free(targetname_ifo);
-+ free(targetname_bup);
- close(streamout_ifo);
- close(streamout_bup);
- return 1;
-@@ -1236,6 +1310,8 @@
- fprintf(stderr, _("Error writing %s\n"),targetname_ifo);
- ifoClose(ifo_file);
- free(buffer);
-+ free(targetname_ifo);
-+ free(targetname_bup);
- close(streamout_ifo);
- close(streamout_bup);
- return 1;
-@@ -1245,11 +1321,15 @@
- fprintf(stderr, _("Error writing %s\n"),targetname_bup);
- ifoClose(ifo_file);
- free(buffer);
-+ free(targetname_ifo);
-+ free(targetname_bup);
- close(streamout_ifo);
- close(streamout_bup);
- return 1;
- }
-
-+ free(targetname_ifo);
-+ free(targetname_bup);
- return 0;
- }
-
-
-=== modified file 'src/main.c'
---- src/main.c 2012-06-24 01:13:07 +0000
-+++ src/main.c 2013-07-04 12:06:44 +0000
-@@ -2,7 +2,7 @@
- * dvdbackup - tool to rip DVDs from the command line
- *
- * Copyright (C) 2002 Olaf Beck <olaf_sc@yahoo.com>
-- * Copyright (C) 2008-2012 Benjamin Drung <benjamin.drung@gmail.com>
-+ * Copyright (C) 2008-2013 Benjamin Drung <benjamin.drung@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
-@@ -172,7 +172,8 @@
- char* targetdir = ".";
-
- /* Temp filename,dirname */
-- char targetname[PATH_MAX];
-+ char *targetname;
-+ size_t targetname_length;
- struct stat fileinfo;
-
- /* The DVD main structure */
-@@ -403,9 +404,15 @@
- }
- }
-
--
--
-- sprintf(targetname,"%s",targetdir);
-+ // Reserve space for "<targetdir>/<title_name>/VIDEO_TS" and terminating "\0"
-+ targetname_length = strlen(targetdir) + strlen(title_name) + 11;
-+ targetname = malloc(targetname_length);
-+ if (targetname == NULL) {
-+ fprintf(stderr, _("Failed to allocate %zu bytes for a filename.\n"), targetname_length);
-+ DVDClose(_dvd);
-+ return 1;
-+ }
-+ snprintf(targetname, targetname_length, "%s", targetdir);
-
- if (stat(targetname, &fileinfo) == 0) {
- if (! S_ISDIR(fileinfo.st_mode)) {
-@@ -421,7 +428,7 @@
- }
-
-
-- sprintf(targetname,"%s/%s",targetdir, title_name);
-+ snprintf(targetname, targetname_length, "%s/%s", targetdir, title_name);
-
- if (stat(targetname, &fileinfo) == 0) {
- if (! S_ISDIR(fileinfo.st_mode)) {
-@@ -436,7 +443,7 @@
- }
- }
-
-- sprintf(targetname,"%s/%s/VIDEO_TS",targetdir, title_name);
-+ snprintf(targetname, targetname_length, "%s/%s/VIDEO_TS", targetdir, title_name);
-
- if (stat(targetname, &fileinfo) == 0) {
- if (! S_ISDIR(fileinfo.st_mode)) {
-@@ -513,7 +520,7 @@
- }
- }
-
--
-+ free(targetname);
- DVDClose(_dvd);
- exit(return_code);
- }
-
diff --git a/multimedia/dvdrip/README b/multimedia/dvdrip/README
index 637a299ff4..296e3e9a93 100644
--- a/multimedia/dvdrip/README
+++ b/multimedia/dvdrip/README
@@ -1,7 +1,8 @@
-dvd::rip is a full featured DVD copy program written in Perl. It provides an
-easy to use but feature-rich Gtk+ GUI to control almost all aspects of the
-ipping and transcoding process. It uses the widely known video processing
-swissknife transcode and many other Open Source tools.
+dvd::rip is a full featured DVD copy program written in Perl.
+It provides an easy to use but feature-rich Gtk+ GUI to control almost
+all aspects of the ipping and transcoding process. It uses the widely
+known video processing swissknife transcode and many other Open Source
+tools.
-ffmpeg, lsdvd, ogmtools, mjpegtools, xvid4conf, subtitleripper, fping and rar
-are optional dependencies.
+ffmpeg, lsdvd, ogmtools, mjpegtools, xvid4conf, subtitleripper, fping,
+and rar are optional dependencies.
diff --git a/multimedia/dvdrip/dvdrip.SlackBuild b/multimedia/dvdrip/dvdrip.SlackBuild
index bc973d0a12..6dda301a07 100644
--- a/multimedia/dvdrip/dvdrip.SlackBuild
+++ b/multimedia/dvdrip/dvdrip.SlackBuild
@@ -1,29 +1,36 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for dvdrip
# Written by Luis Henrique <lmello.009@gmail.com>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=dvdrip
VERSION=${VERSION:-0.98.11}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -47,17 +54,17 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
perl Makefile.PL \
PREFIX=/usr \
INSTALLDIRS=vendor \
INSTALLVENDORMAN1DIR=/usr/man/man1 \
INSTALLVENDORMAN3DIR=/usr/man/man3
-make
-make install DESTDIR=$PKG
+make -j1
+make -j1 install DESTDIR=$PKG
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
@@ -89,4 +96,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/dvdstyler/README b/multimedia/dvdstyler/README
index c03ac824f0..f1744b895b 100644
--- a/multimedia/dvdstyler/README
+++ b/multimedia/dvdstyler/README
@@ -1,4 +1,13 @@
DVDStyler is a cross-platform free DVD authoring application for the
creation of professional-looking DVDs. It allows not only burning of
-video files on DVD that can be played practically on any standalone DVD
-player, but also creation of individually designed DVD menus.
+video files on DVD that can be played practically on any standalone
+DVD player, but also creation of individually designed DVD menus.
+
+NOTE
+- - -
+When launched the application will look for a ~/.dvdstyler
+directory where to save its own preferences: if the directory is not
+present the application will start but will segfault when quitting,
+not saving any preferences.
+Upstream has been notified but in the meantime the workaround is to
+manually create the ~/.dvdstyler directory (sorry for the hassle)
diff --git a/multimedia/dvdstyler/dvdstyler.SlackBuild b/multimedia/dvdstyler/dvdstyler.SlackBuild
index b60c41a311..ec5f94bf5a 100644
--- a/multimedia/dvdstyler/dvdstyler.SlackBuild
+++ b/multimedia/dvdstyler/dvdstyler.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for dvdstyler
-# Copyright 2013-2018 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
+# Copyright 2013-2023 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=dvdstyler
SPRGNAM=DVDStyler
-VERSION=${VERSION:-3.0.4}
+VERSION=${VERSION:-3.3b3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -109,4 +119,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/dvdstyler/dvdstyler.info b/multimedia/dvdstyler/dvdstyler.info
index 69ed107c37..581bbad6cb 100644
--- a/multimedia/dvdstyler/dvdstyler.info
+++ b/multimedia/dvdstyler/dvdstyler.info
@@ -1,10 +1,10 @@
PRGNAM="dvdstyler"
-VERSION="3.0.4"
+VERSION="3.3b3"
HOMEPAGE="http://www.dvdstyler.org/"
-DOWNLOAD="http://downloads.sf.net/dvdstyler/DVDStyler-3.0.4.tar.bz2"
-MD5SUM="5008ea1488809fb0ca877b4e617ae5a7"
+DOWNLOAD="http://downloads.sf.net/dvdstyler/DVDStyler-3.3b3.tar.bz2"
+MD5SUM="d92cc509cb6c39d74f2ce56d6f686cff"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="dvdauthor libavc1394 libmspack libquicktime mjpegtools mpgtx wxsvg"
+REQUIRES="libavc1394 libmspack libquicktime mjpegtools mpgtx wxsvg"
MAINTAINER="Matteo Bernardini"
EMAIL="ponce@slackbuilds.org"
diff --git a/multimedia/dvgrab/dvgrab.SlackBuild b/multimedia/dvgrab/dvgrab.SlackBuild
index f88b56e7ea..08835ef8a3 100644
--- a/multimedia/dvgrab/dvgrab.SlackBuild
+++ b/multimedia/dvgrab/dvgrab.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for dvgrab
@@ -23,10 +23,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=dvgrab
VERSION=${VERSION:-3.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -71,7 +81,7 @@ find -L . \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS -Wno-narrowing" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
@@ -99,4 +109,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/emoc/emoc.SlackBuild b/multimedia/emoc/emoc.SlackBuild
index 0a5bca4478..106dba34c3 100644
--- a/multimedia/emoc/emoc.SlackBuild
+++ b/multimedia/emoc/emoc.SlackBuild
@@ -1,29 +1,36 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for EMoC
# Written by otzy_007 (oz@oprod.net)
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=emoc
VERSION=${VERSION:-0.9.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -47,11 +54,11 @@ cd $PRGNAM
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
-qmake
+qmake-qt4
make clean
make
@@ -77,4 +84,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/emoc/emoc.info b/multimedia/emoc/emoc.info
index e559cbd38f..a4fae0dc83 100644
--- a/multimedia/emoc/emoc.info
+++ b/multimedia/emoc/emoc.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://sourceforge.net/projects/slackbuildsdirectlinks/files/emoc/emo
MD5SUM="94b9aad7155e93a7ea69b72a573cf2b4"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="qt4"
MAINTAINER="otzy_007"
EMAIL="oz@oprod.net"
diff --git a/multimedia/exaile/README b/multimedia/exaile/README
index 459eb3e91b..75a40ce440 100644
--- a/multimedia/exaile/README
+++ b/multimedia/exaile/README
@@ -1,9 +1,8 @@
Exaile is a music manager and player for GTK+ written in Python. It
-incorporates automatic fetching of album art, handling of large libraries,
-lyrics fetching, artist/album information via Wikipedia, and Last.fm
-submission support.
+incorporates automatic fetching of album art, handling of large
+libraries, lyrics fetching, artist/album information via Wikipedia,
+and Last.fm submission support.
-Optional dependencies are gst0-plugins-ugly (for mp3 support), cddb-py (for
-audio CD playback), gst0-gnome-vfs (for SHOUTcast support),
-pywebkitgtk (for contextual informations about the track) and streamripper
-(to record streams).
+Optional dependencies are pylast (Last.FM integration), lxml
+(Lyrics), musicbrainzngs (Musicbrainz covers), streamripper (to
+record streams), and Sphinx plus sphinx_rtd_theme (Documentation).
diff --git a/multimedia/exaile/doinst.sh b/multimedia/exaile/doinst.sh
index 20e51af1ef..dd572e3e1a 100644
--- a/multimedia/exaile/doinst.sh
+++ b/multimedia/exaile/doinst.sh
@@ -17,3 +17,8 @@ if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/exaile/exaile.SlackBuild b/multimedia/exaile/exaile.SlackBuild
index f90849deaf..321bab4ea0 100644
--- a/multimedia/exaile/exaile.SlackBuild
+++ b/multimedia/exaile/exaile.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for exaile
# Written by Marco Cecchetti (mrc.ildp@gmail.com)
# Update by Diogo Leal (diogo@diogoleal.com)
+# Copyright 2022-23 fourtysixandtwo <fourtysixandtwo@sliderr.net>
# Copyright 2017 Ekin Akoglu, Erdemli, Mersin, Turkey | ekinakoglu@gmail.com
# Ryan P.C. McQuen | Everett, WA | ryanpcmcquen@member.fsf.org
@@ -24,10 +25,15 @@
# along with this program (most likely, a file named COPYING). If
# not, see <http://www.gnu.org/licenses/>.
+# 20221021 46and2: Updated version, new maintainer.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=exaile
-VERSION=${VERSION:-3.4.5}
+VERSION=${VERSION:-4.1.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -37,18 +43,29 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
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 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
+ SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
@@ -63,26 +80,29 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-## Fix manpage location.
-sed -i -e 's|share/man|man|g' Makefile
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+PREFIX=/usr
make
-PREFIX=/usr \
-LIBINSTALLDIR=/lib${LIBDIRSUFFIX} \
-make install DESTDIR=$PKG
+make install \
+ PREFIX=${PREFIX} \
+ LIBINSTALLDIR=${PREFIX}/lib${LIBDIRSUFFIX} \
+ MANPREFIX=${PREFIX}/ \
+ DESTDIR=$PKG
mv $PKG/etc/xdg/exaile/settings.ini $PKG/etc/xdg/exaile/settings.ini.new
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- COPYING DEPS INSTALL README \
+ COPYING DEPS README.md \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -91,4 +111,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/exaile/exaile.info b/multimedia/exaile/exaile.info
index 044881d47d..dd3f29f7db 100644
--- a/multimedia/exaile/exaile.info
+++ b/multimedia/exaile/exaile.info
@@ -1,10 +1,10 @@
PRGNAM="exaile"
-VERSION="3.4.5"
+VERSION="4.1.3"
HOMEPAGE="https://www.exaile.org/"
-DOWNLOAD="https://github.com/exaile/exaile/releases/download/3.4.5/exaile-3.4.5.tar.gz"
-MD5SUM="2c72d8dc8dc68fd6a9d129a154a5af3c"
+DOWNLOAD="https://github.com/exaile/exaile/releases/download/4.1.3/exaile-4.1.3.tar.gz"
+MD5SUM="cb43a90e9a0526fa455cab4628470260"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="gst0-python mutagen"
-MAINTAINER="Ekin Akoglu"
-EMAIL="ekinakoglu@gmail.com"
+REQUIRES="bsddb3 gst-python mutagen feedparser"
+MAINTAINER="fourtysixandtwo"
+EMAIL="fourtysixandtwo@sliderr.net"
diff --git a/multimedia/farsight2/README b/multimedia/farsight2/README
index cbc5c78772..453e213446 100644
--- a/multimedia/farsight2/README
+++ b/multimedia/farsight2/README
@@ -1,6 +1,7 @@
Farsight Audio/Video Communications Framework
The Farsight project is an effort to create a framework to deal with all
-known audio/video conferencing protocols. On one side it offers a generic
-API that makes it possible to write plugins for different streaming protocols
-and on the other side it offers an API for clients to use those plugins.
+known audio/video conferencing protocols. On one side it offers a
+generic API that makes it possible to write plugins for different
+streaming protocols and on the other side it offers an API for clients
+to use those plugins.
diff --git a/multimedia/farsight2/farsight2.SlackBuild b/multimedia/farsight2/farsight2.SlackBuild
index e7f0d06355..f6b8079dfb 100644
--- a/multimedia/farsight2/farsight2.SlackBuild
+++ b/multimedia/farsight2/farsight2.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for farsight2
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=farsight2
VERSION=${VERSION:-0.0.31}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -65,11 +72,15 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
-CFLAGS="$SLKCFLAGS" \
+patch -p1 < $CWD/make-4.3.patch
+
+autoreconf -vif
+
+CFLAGS="$SLKCFLAGS -fcommon" \
CXXFLAGS="$SLKCFLAGS" \
LDFLAGS="-L/usr/lib${LIBDIRSUFFIX}" \
./configure \
@@ -79,6 +90,7 @@ LDFLAGS="-L/usr/lib${LIBDIRSUFFIX}" \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
--build=$ARCH-slackware-linux
make
@@ -93,8 +105,10 @@ cp -a \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/farsight2/farsight2.info b/multimedia/farsight2/farsight2.info
index 7d0e355844..10493b32a7 100644
--- a/multimedia/farsight2/farsight2.info
+++ b/multimedia/farsight2/farsight2.info
@@ -5,6 +5,6 @@ DOWNLOAD="http://farsight.freedesktop.org/releases/farsight2/farsight2-0.0.31.ta
MD5SUM="3771d8268f025b28261cc1e977fab27f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="gst0-plugins-ugly gst0-python libnice"
-MAINTAINER="David Woodfall"
+REQUIRES="gst0-plugins-ugly gst0-python"
+MAINTAINER="D Woodfall"
EMAIL="dave@slackbuilds.org"
diff --git a/multimedia/farsight2/make-4.3.patch b/multimedia/farsight2/make-4.3.patch
new file mode 100644
index 0000000000..f42517fb1a
--- /dev/null
+++ b/multimedia/farsight2/make-4.3.patch
@@ -0,0 +1,122 @@
+Matteo Bernardini <ponce@slackbuilds.org>
+fix it like https://gitweb.gentoo.org/repo/gentoo.git/plain/net-libs/farstream/files/farstream-0.2.8-make43.patch
+
+diff -Naur farsight2-0.0.31.orig/common/glib-gen.mak farsight2-0.0.31/common/glib-gen.mak
+--- farsight2-0.0.31.orig/common/glib-gen.mak 2010-10-08 18:38:56.000000000 +0200
++++ farsight2-0.0.31/common/glib-gen.mak 2021-02-16 09:48:20.885387000 +0100
+@@ -1,11 +1,13 @@
+ # these are the variables your Makefile.am should set
+ # the example is based on the colorbalance interface
+
++H := \#
++
+ #glib_enum_headers=$(colorbalance_headers)
+ #glib_enum_define=GST_COLOR_BALANCE
+ #glib_enum_prefix=gst_color_balance
+
+-enum_headers=$(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers=$(foreach h,$(glib_enum_headers),\n$(H)include \"$(h)\")
+
+ # these are all the rules generating the relevant files
+ %-marshal.h: %-marshal.list
+diff -Naur farsight2-0.0.31.orig/common/gst-glib-gen.mak farsight2-0.0.31/common/gst-glib-gen.mak
+--- farsight2-0.0.31.orig/common/gst-glib-gen.mak 2010-10-08 18:38:56.000000000 +0200
++++ farsight2-0.0.31/common/gst-glib-gen.mak 2021-02-16 09:47:43.231387000 +0100
+@@ -1,12 +1,14 @@
+ # these are the variables your Makefile.am should set
+ # the example is based on the colorbalance interface
+
++H := \#
++
+ #glib_enum_headers=$(colorbalance_headers)
+ #glib_enum_define=GST_COLOR_BALANCE
+ #glib_gen_prefix=gst_color_balance
+ #glib_gen_basename=colorbalance
+
+-enum_headers=$(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers=$(foreach h,$(glib_enum_headers),\n$(H)include \"$(h)\")
+
+ # these are all the rules generating the relevant files
+ $(glib_gen_basename)-marshal.h: $(glib_gen_basename)-marshal.list
+diff -Naur farsight2-0.0.31.orig/common-modified/gst-glib-gen.mak farsight2-0.0.31/common-modified/gst-glib-gen.mak
+--- farsight2-0.0.31.orig/common-modified/gst-glib-gen.mak 2011-09-07 22:20:18.000000000 +0200
++++ farsight2-0.0.31/common-modified/gst-glib-gen.mak 2021-02-16 09:48:55.282387000 +0100
+@@ -1,12 +1,14 @@
+ # these are the variables your Makefile.am should set
+ # the example is based on the colorbalance interface
+
++H := \#
++
+ #glib_enum_headers=$(colorbalance_headers)
+ #glib_enum_define=GST_COLOR_BALANCE
+ #glib_gen_prefix=gst_color_balance
+ #glib_gen_basename=colorbalance
+
+-enum_headers=$(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers=$(foreach h,$(glib_enum_headers),\n$(H)include \"$(h)\")
+
+ # these are all the rules generating the relevant files
+ $(glib_gen_basename)-marshal.h: $(glib_gen_basename)-marshal.list
+diff -Naur farsight2-0.0.31.orig/gst/fsrtpconference/Makefile.in farsight2-0.0.31/gst/fsrtpconference/Makefile.in
+--- farsight2-0.0.31.orig/gst/fsrtpconference/Makefile.in 2011-10-10 21:59:55.000000000 +0200
++++ farsight2-0.0.31/gst/fsrtpconference/Makefile.in 2021-02-16 09:49:52.456387000 +0100
+@@ -18,6 +18,8 @@
+ # these are the variables your Makefile.am should set
+ # the example is based on the colorbalance interface
+
++H := \#
++
+ #glib_enum_headers=$(colorbalance_headers)
+ #glib_enum_define=GST_COLOR_BALANCE
+ #glib_gen_prefix=gst_color_balance
+@@ -458,7 +460,7 @@
+ glib_enum_define = FS_RTP
+ glib_gen_prefix = _fs_rtp
+ glib_gen_basename = fs-rtp
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n$(H)include \"$(h)\")
+ all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+diff -Naur farsight2-0.0.31.orig/gst-libs/gst/farsight/Makefile.in farsight2-0.0.31/gst-libs/gst/farsight/Makefile.in
+--- farsight2-0.0.31.orig/gst-libs/gst/farsight/Makefile.in 2011-10-10 21:59:55.000000000 +0200
++++ farsight2-0.0.31/gst-libs/gst/farsight/Makefile.in 2021-02-16 09:50:34.663387000 +0100
+@@ -18,6 +18,8 @@
+ # these are the variables your Makefile.am should set
+ # the example is based on the colorbalance interface
+
++H := \#
++
+ #glib_enum_headers=$(colorbalance_headers)
+ #glib_enum_define=GST_COLOR_BALANCE
+ #glib_gen_prefix=gst_color_balance
+@@ -438,7 +440,7 @@
+ glib_enum_define = FS
+ glib_gen_prefix = _fs
+ glib_gen_basename = fs
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n$(H)include \"$(h)\")
+ all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+diff -Naur farsight2-0.0.31.orig/transmitters/rawudp/Makefile.in farsight2-0.0.31/transmitters/rawudp/Makefile.in
+--- farsight2-0.0.31.orig/transmitters/rawudp/Makefile.in 2011-10-10 21:59:56.000000000 +0200
++++ farsight2-0.0.31/transmitters/rawudp/Makefile.in 2021-02-16 09:51:10.249387000 +0100
+@@ -18,6 +18,8 @@
+ # these are the variables your Makefile.am should set
+ # the example is based on the colorbalance interface
+
++H := \#
++
+ #glib_enum_headers=$(colorbalance_headers)
+ #glib_enum_define=GST_COLOR_BALANCE
+ #glib_gen_prefix=gst_color_balance
+@@ -392,7 +394,7 @@
+ glib_enum_define = FS_RAWUDP
+ glib_gen_prefix = _fs_rawudp
+ glib_gen_basename = fs-rawudp
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n$(H)include \"$(h)\")
+ all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
diff --git a/multimedia/farstream/README b/multimedia/farstream/README
deleted file mode 100644
index 8a038afcdf..0000000000
--- a/multimedia/farstream/README
+++ /dev/null
@@ -1,7 +0,0 @@
-The Farstream (formerly Farsight) project is an effort to create
-a framework to deal with all known audio/video conferencing
-protocols. On one side it offers a generic API that makes it possible
-to write plugins for different streaming protocols, on the other
-side it offers an API for clients to use those plugins.
-
-Optionally requires valgrind
diff --git a/multimedia/farstream/farstream.info b/multimedia/farstream/farstream.info
deleted file mode 100644
index ec55d941aa..0000000000
--- a/multimedia/farstream/farstream.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="farstream"
-VERSION="0.2.8"
-HOMEPAGE="http://www.freedesktop.org/wiki/Software/Farstream/"
-DOWNLOAD="https://freedesktop.org/software/farstream/releases/farstream/farstream-0.2.8.tar.gz"
-MD5SUM="a40d4c4bd0812c270069b9f97d74009b"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="libnice"
-MAINTAINER="Thorn Inurcide"
-EMAIL="thorn_inurcide@zoho.com"
diff --git a/multimedia/farstream/slack-desc b/multimedia/farstream/slack-desc
deleted file mode 100644
index 840ddaeed6..0000000000
--- a/multimedia/farstream/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-farstream: farstream (framework to deal with all known conferencing protocols)
-farstream:
-farstream: The Farstream (formerly Farsight) project is an effort to create
-farstream: a framework to deal with all known audio/video conferencing
-farstream: protocols. On one side it offers a generic API that makes it possible
-farstream: to write plugins for different streaming protocols, on the other
-farstream: side it offers an API for clients to use those plugins.
-farstream:
-farstream:
-farstream:
-farstream: Home: http://www.freedesktop.org/wiki/Software/Farstream/
diff --git a/multimedia/fdkaac/README b/multimedia/fdkaac/README
index a502e54324..9241c082b8 100644
--- a/multimedia/fdkaac/README
+++ b/multimedia/fdkaac/README
@@ -1,4 +1,2 @@
-fdkaac is command line encoder frontend for libfdk-aac,
-(also available from SBo) which currently produces the
-highest quality aac sound from any Linux application or
-library.
+fdkaac is a command-line encoder frontend for libfdk-aac,
+(also available from SBo) to convert a sound file to AAC.
diff --git a/multimedia/fdkaac/fdkaac.SlackBuild b/multimedia/fdkaac/fdkaac.SlackBuild
index f08ed2f906..8697675e54 100644
--- a/multimedia/fdkaac/fdkaac.SlackBuild
+++ b/multimedia/fdkaac/fdkaac.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for fdkaac
-# Klaatu | Wellington, NZ | klaatu@member.fsf.org
+# Klaatu | Lawrence, NZ | klaatu@member.fsf.org
# Copyright 2015 Andrew Strong, Blue Mountains Australia.
# All rights reserved.
#
@@ -23,26 +23,36 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=fdkaac
-VERSION=${VERSION:-0.6.3}
+VERSION=${VERSION:-1.0.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -61,12 +71,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-if [ -e $CWD/v$VERSION.tar.gz ]; then
- tar xvf $CWD/v$VERSION.tar.gz
-else
- tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-fi
-
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
@@ -105,4 +110,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/fdkaac/fdkaac.info b/multimedia/fdkaac/fdkaac.info
index c2cacdf740..99136c71a3 100644
--- a/multimedia/fdkaac/fdkaac.info
+++ b/multimedia/fdkaac/fdkaac.info
@@ -1,8 +1,8 @@
PRGNAM="fdkaac"
-VERSION="0.6.3"
+VERSION="1.0.2"
HOMEPAGE="https://github.com/nu774/fdkaac"
-DOWNLOAD="https://github.com/nu774/fdkaac/archive/v0.6.3/fdkaac-0.6.3.tar.gz"
-MD5SUM="20cdcfcf1e3ea4060f021b6eefa9b75b"
+DOWNLOAD="https://github.com/nu774/fdkaac/archive/refs/tags/v1.0.2/fdkaac-1.0.2.tar.gz"
+MD5SUM="e2d844fd705faef00a09e5f29a88acda"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="libfdk-aac"
diff --git a/multimedia/ffmpeg/README b/multimedia/ffmpeg/README
deleted file mode 100644
index 09b08b00df..0000000000
--- a/multimedia/ffmpeg/README
+++ /dev/null
@@ -1,70 +0,0 @@
-ffmpeg (Software to record, convert and stream audio and video)
-
-FFmpeg is a complete solution to record, convert and stream audio
-and video. It includes libavcodec, the leading audio/video codec
-library.
-
-You can enable a lot of optional (not-autodetected) features by
-passing variables to the script (VAR=yes/no ./ffmpeg.SlackBuild):
-ASS=yes|no (default: no), requires libass
-BLURAY=yes|no (default: no), requires libbluray
-BS2B=yes|no (default: no), requires libbs2b
-CELT=yes|no (default: no), requires celt
-CHROMAPRINT=yes|no (default: no), requires chromaprint
-DC1394=yes|no (default: no), requires libdc1394
-DECKLINK=yes|no (default: no), requires decklink-sdk
-EBUR128=yes|no (default: no), requires libebur128
-FDK_AAC=yes|no (default: no), requires libfdk-aac (creates non-redistributable binary)
-FLITE=yes|no (default: no), requires flite
-FREI0R=yes|no (default: no), requires frei0r
-GME=yes|no (default: no), requires libgme
-GSM=yes|no (default: no), requires gsm
-IEC61883=yes|no (default: no), requires libiec61883 and libavc1394
-ILBC=yes|no (default: no), requires libilbc
-LADSPA=yes|no (default: no), requires ladspa_sdk
-LAME=yes|no (default: no), requires lame
-MODPLUG=yes|no (default: no), requires libmodplug
-NETCDF=yes|no (default: no), requires netcdf
-OPENAL=yes|no (default: no), requires OpenAL
-OPENCORE=yes|no (default: no), requires opencore-amr
-OPENCV=yes|no (default: no), requires opencv-legacy
-OPENSSL=yes|no (default: no), creates non-redistributable binary
-OPUS=yes|no (default: no), requires opus
-RTMP=yes|no (default: no), requires rtmpdump
-RUBBERBAND=yes|no (default: no), requires rubberband
-SCHROEDINGER=yes|no (default: no), requires schroedinger
-SNAPPY=yes|no (default: no), requires snappy
-SPEEX=yes|no (default: no), requires speex
-TESSERACT=yes|no (default: no), requires tesseract
-TWOLAME=yes|no (default: no), requires twolame
-VIDSTAB=yes|no (default: no), requires vid.stab
-WEBP=yes|no (default: no), requires libwebp
-X264=yes|no (default: no), requires x264
-X265=yes|no (default: no), requires x265
-XVID=yes|no (default: no), requires xvidcore
-ZMQ=yes|no (default: no), requires zeromq
-ZVBI=yes|no (default: no), requires zvbi
-
-Additional optional (autodetected) dependencies are jack and SDL2. The
-latter is needed for building ffplay.
-
-Further, there are some more features with dependencies already available
-in core Slackware. These are enabled by default, but can be disabled similar
-to the other switches above:
-CACA=yes|no (default: yes)
-FONTCONFIG=yes|no (default: yes)
-FREETYPE=yes|no (default: yes)
-FRIBIDI=yes|no (default: yes)
-GNUTLS=yes|no (default: yes)
-JP2=yes|no (default: yes)
-LIBCDIO=yes|no (default: yes)
-LIBSSH=yes|no (default: yes)
-OPENGL=yes|no (default: yes)
-PULSEAUDIO=yes|no (default: yes)
-SAMBA=yes|no (default: yes)
-THEORA=yes|no (default: yes)
-V4L2=yes|no (default: yes)
-VORBIS=yes|no (default: yes)
-VPX=yes|no (default: yes)
-WAVPACK=yes|no (default: yes)
-X11GRAB=yes|no (default: yes)
diff --git a/multimedia/ffmpeg/ffmpeg-3.2.4-libfdk_aac-2.0.0.patch b/multimedia/ffmpeg/ffmpeg-3.2.4-libfdk_aac-2.0.0.patch
deleted file mode 100644
index 03d831d72d..0000000000
--- a/multimedia/ffmpeg/ffmpeg-3.2.4-libfdk_aac-2.0.0.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libavcodec/libfdk-aacenc.c.orig 2017-02-10 23:25:26.000000000 +1000
-+++ libavcodec/libfdk-aacenc.c 2018-12-10 07:59:22.515000000 +1000
-@@ -286,7 +286,7 @@
- }
-
- avctx->frame_size = info.frameLength;
-- avctx->initial_padding = info.encoderDelay;
-+ avctx->initial_padding = info.nDelay;
- ff_af_queue_init(avctx, &s->afq);
-
- if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) {
diff --git a/multimedia/ffmpeg/ffmpeg-3.2.4-openjpeg2.3.patch b/multimedia/ffmpeg/ffmpeg-3.2.4-openjpeg2.3.patch
deleted file mode 100644
index 65e17d4449..0000000000
--- a/multimedia/ffmpeg/ffmpeg-3.2.4-openjpeg2.3.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-diff -Naur ffmpeg-3.2.4.orig/configure ffmpeg-3.2.4/configure
---- ffmpeg-3.2.4.orig/configure 2017-02-10 14:25:25.000000000 +0100
-+++ ffmpeg-3.2.4/configure 2017-10-12 08:36:03.395867915 +0200
-@@ -1831,6 +1831,8 @@
- machine_ioctl_meteor_h
- malloc_h
- opencv2_core_core_c_h
-+ openjpeg_2_3_openjpeg_h
-+ openjpeg_2_2_openjpeg_h
- openjpeg_2_1_openjpeg_h
- openjpeg_2_0_openjpeg_h
- openjpeg_1_5_openjpeg_h
-@@ -5721,7 +5723,11 @@
- require opencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
- require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader; }
- enabled libopenh264 && require_pkg_config openh264 wels/codec_api.h WelsGetCodecVersion
--enabled libopenjpeg && { { check_lib2 openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
-+enabled libopenjpeg && { { check_lib2 openjpeg-2.3/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
-+ check_lib2 openjpeg-2.3/openjpeg.h opj_version -lopenjp2 ||
-+ { check_lib2 openjpeg-2.2/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
-+ check_lib2 openjpeg-2.2/openjpeg.h opj_version -lopenjp2 ||
-+ { check_lib2 openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
- check_lib2 openjpeg-2.1/openjpeg.h opj_version -lopenjp2 ||
- { check_lib2 openjpeg-2.0/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
- { check_lib2 openjpeg-1.5/openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
-diff -Naur ffmpeg-3.2.4.orig/libavcodec/libopenjpegdec.c ffmpeg-3.2.4/libavcodec/libopenjpegdec.c
---- ffmpeg-3.2.4.orig/libavcodec/libopenjpegdec.c 2017-02-10 14:25:26.000000000 +0100
-+++ ffmpeg-3.2.4/libavcodec/libopenjpegdec.c 2017-10-12 08:38:20.676315554 +0200
-@@ -34,7 +34,11 @@
- #include "internal.h"
- #include "thread.h"
-
--#if HAVE_OPENJPEG_2_1_OPENJPEG_H
-+#if HAVE_OPENJPEG_2_3_OPENJPEG_H
-+# include <openjpeg-2.3/openjpeg.h>
-+#elif HAVE_OPENJPEG_2_2_OPENJPEG_H
-+# include <openjpeg-2.2/openjpeg.h>
-+#elif HAVE_OPENJPEG_2_1_OPENJPEG_H
- # include <openjpeg-2.1/openjpeg.h>
- #elif HAVE_OPENJPEG_2_0_OPENJPEG_H
- # include <openjpeg-2.0/openjpeg.h>
-@@ -44,7 +48,7 @@
- # include <openjpeg.h>
- #endif
-
--#if HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
-+#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
- # define OPENJPEG_MAJOR_VERSION 2
- # define OPJ(x) OPJ_##x
- #else
-@@ -429,7 +433,7 @@
- opj_stream_set_read_function(stream, stream_read);
- opj_stream_set_skip_function(stream, stream_skip);
- opj_stream_set_seek_function(stream, stream_seek);
--#if HAVE_OPENJPEG_2_1_OPENJPEG_H
-+#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
- opj_stream_set_user_data(stream, &reader, NULL);
- #elif HAVE_OPENJPEG_2_0_OPENJPEG_H
- opj_stream_set_user_data(stream, &reader);
-diff -Naur ffmpeg-3.2.4.orig/libavcodec/libopenjpegenc.c ffmpeg-3.2.4/libavcodec/libopenjpegenc.c
---- ffmpeg-3.2.4.orig/libavcodec/libopenjpegenc.c 2017-02-10 14:25:26.000000000 +0100
-+++ ffmpeg-3.2.4/libavcodec/libopenjpegenc.c 2017-10-12 08:40:43.411456456 +0200
-@@ -32,7 +32,11 @@
- #include "avcodec.h"
- #include "internal.h"
-
--#if HAVE_OPENJPEG_2_1_OPENJPEG_H
-+#if HAVE_OPENJPEG_2_3_OPENJPEG_H
-+# include <openjpeg-2.3/openjpeg.h>
-+#elif HAVE_OPENJPEG_2_2_OPENJPEG_H
-+# include <openjpeg-2.2/openjpeg.h>
-+#elif HAVE_OPENJPEG_2_1_OPENJPEG_H
- # include <openjpeg-2.1/openjpeg.h>
- #elif HAVE_OPENJPEG_2_0_OPENJPEG_H
- # include <openjpeg-2.0/openjpeg.h>
-@@ -42,7 +46,7 @@
- # include <openjpeg.h>
- #endif
-
--#if HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
-+#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
- # define OPENJPEG_MAJOR_VERSION 2
- # define OPJ(x) OPJ_##x
- #else
-@@ -306,7 +310,7 @@
-
- opj_set_default_encoder_parameters(&ctx->enc_params);
-
--#if HAVE_OPENJPEG_2_1_OPENJPEG_H
-+#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
- switch (ctx->cinema_mode) {
- case OPJ_CINEMA2K_24:
- ctx->enc_params.rsiz = OPJ_PROFILE_CINEMA_2K;
-@@ -771,7 +775,7 @@
- opj_stream_set_write_function(stream, stream_write);
- opj_stream_set_skip_function(stream, stream_skip);
- opj_stream_set_seek_function(stream, stream_seek);
--#if HAVE_OPENJPEG_2_1_OPENJPEG_H
-+#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
- opj_stream_set_user_data(stream, &writer, NULL);
- #elif HAVE_OPENJPEG_2_0_OPENJPEG_H
- opj_stream_set_user_data(stream, &writer);
diff --git a/multimedia/ffmpeg/ffmpeg.SlackBuild b/multimedia/ffmpeg/ffmpeg.SlackBuild
deleted file mode 100644
index 8b83fcca42..0000000000
--- a/multimedia/ffmpeg/ffmpeg.SlackBuild
+++ /dev/null
@@ -1,261 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for ffmpeg
-
-# Copyright 2010-2017 Heinz Wiesinger, Amsterdam, The Netherlands
-# Copyright 2017 Patrick J. Volkerding, Sebeka, MN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
-
-# Originally written by core (eroc@linuxmail.org)
-# Modified by Robby Workman <rworkman@slackbuilds.org>
-
-PRGNAM=ffmpeg
-VERSION=${VERSION:-3.2.4}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-# You can enable a lot of optional (not-autodetected) features by
-# passing variables to the script (VAR=yes/no ./ffmpeg.SlackBuild).
-# Unfortunately ffmpeg's configure doesn't support --enable-feature=yes
-# syntax, so we have to do it the complicated way :/
-# Additional optional (autodetected) dependencies are:
-# - jack
-# - libva
-# - libvdpau
-# - libX11
-# - libxcb
-# - sdl2
-# - xz
-# - zlib
-
-mp3lame="" ; [ "${LAME:-no}" != "no" ] && mp3lame="--enable-libmp3lame"
-libx264="" ; [ "${X264:-no}" != "no" ] && libx264="--enable-libx264"
-libcelt="" ; [ "${CELT:-no}" != "no" ] && libcelt="--enable-libcelt"
-libdc1394="" ; [ "${DC1394:-no}" != "no" ] && libdc1394="--enable-libdc1394"
-libfrei0r="" ; [ "${FREI0R:-no}" != "no" ] && libfrei0r="--enable-frei0r"
-libgsm="" ; [ "${GSM:-no}" != "no" ] && libgsm="--enable-libgsm"
-librtmp="" ; [ "${RTMP:-no}" != "no" ] && librtmp="--enable-librtmp"
-dirac_fast="" ; [ "${SCHROEDINGER:-no}" != "no" ] && dirac_fast="--enable-libschroedinger"
-libspeex="" ; [ "${SPEEX:-no}" != "no" ] && libspeex="--enable-libspeex"
-libxvid="" ; [ "${XVID:-no}" != "no" ] && libxvid="--enable-libxvid"
-libbluray="" ; [ "${BLURAY:-no}" != "no" ] && libbluray="--enable-libbluray"
-libass="" ; [ "${ASS:-no}" != "no" ] && libass="--enable-libass"
-libopenal="" ; [ "${OPENAL:-no}" != "no" ] && libopenal="--enable-openal"
-libiec61883=""; [ "${IEC61883:-no}" != "no" ] && libiec61883="--enable-libiec61883"
-libilbc="" ; [ "${ILBC:-no}" != "no" ] && libilbc="--enable-libilbc"
-libmodplug="" ; [ "${MODPLUG:-no}" != "no" ] && libmodplug="--enable-libmodplug"
-libopus="" ; [ "${OPUS:-no}" != "no" ] && libopus="--enable-libopus"
-libtwolame="" ; [ "${TWOLAME:-no}" != "no" ] && libtwolame="--enable-libtwolame"
-ladspa="" ; [ "${LADSPA:-no}" != "no" ] && ladspa="--enable-ladspa"
-libflite="" ; [ "${FLITE:-no}" != "no" ] && libflite="--enable-libflite"
-libvidstab="" ; [ "${VIDSTAB:-no}" != "no" ] && libvidstab="--enable-libvidstab"
-libx265="" ; [ "${X265:-no}" != "no" ] && libx265="--enable-libx265"
-libzvbi="" ; [ "${ZVBI:-no}" != "no" ] && libzvbi="--enable-libzvbi"
-libopencv="" ; [ "${OPENCV:-no}" != "no" ] && libopencv="--enable-libopencv"
-libgme="" ; [ "${GME:-no}" != "no" ] && libgme="--enable-libgme"
-libsnappy="" ; [ "${SNAPPY:-no}" != "no" ] && libsnappy="--enable-libsnappy"
-libwebp="" ; [ "${WEBP:-no}" != "no" ] && libwebp="--enable-libwebp"
-libzmq="" ; [ "${ZMQ:-no}" != "no" ] && libzmq="--enable-libzmq"
-libbs2b="" ; [ "${BS2B:-no}" != "no" ] && libbs2b="--enable-libbs2b"
-libebur128="" ; [ "${EBUR128:-no}" != "no" ] && libebur128="--enable-libebur128"
-rubberband="" ; [ "${RUBBERBAND:-no}" != "no" ] && rubberband="--enable-librubberband"
-tesseract="" ; [ "${TESSERACT:-no}" != "no" ] && tesseract="--enable-libtesseract"
-netcdf="" ; [ "${NETCDF:-no}" != "no" ] && netcdf="--enable-netcdf"
-chromaprint="" ; [ "${CHROMAPRINT:-no}" != "no" ] && chromaprint="--enable-chromaprint"
-opencore_amr="" ; [ "${OPENCORE:-no}" != "no" ] && \
- opencore_amr="--enable-libopencore-amrnb --enable-libopencore-amrwb"
-fdk="" ; [ "${FDK_AAC:-no}" != "no" ] && \
- { fdk="--enable-libfdk-aac"; non_free="--enable-nonfree" ; }
-ssl="" ; [ "${OPENSSL:-no}" != "no" ] && \
- { ssl="--enable-openssl" ; non_free="--enable-nonfree" ; }
-decklink="" ; [ "${DECKLINK:-no}" != "no" ] && \
- { decklink="--enable-decklink" ; \
- SLKCFLAGS="$SLKCFLAGS -I/usr/include/decklink" ; }
-
-# Default enabled features:
-#opencl="" ; [ "${OPENCL:-yes}" != "no" ] && opencl="--enable-opencl"
-fontconfig="" ; [ "${FONTCONFIG:-yes}" != "no" ] && fontconfig="--enable-libfontconfig"
-freetype="" ; [ "${FREETYPE:-yes}" != "no" ] && freetype="--enable-libfreetype"
-fribidi="" ; [ "${FRIBIDI:-yes}" != "no" ] && fribidi="--enable-libfribidi"
-gnutls="" ; [ "${GNUTLS:-yes}" != "no" ] && gnutls="--enable-gnutls"
-libcaca="" ; [ "${CACA:-yes}" != "no" ] && libcaca="--enable-libcaca"
-libcdio="" ; [ "${LIBCDIO:-yes}" != "no" ] && libcdio="--enable-libcdio"
-libssh="" ; [ "${LIBSSH:-yes}" != "no" ] && libssh="--enable-libssh"
-libtheora="" ; [ "${THEORA:-yes}" != "no" ] && libtheora="--enable-libtheora"
-libv4l2="" ; [ "${V4L2:-yes}" != "no" ] && libv4l2="--enable-libv4l2"
-libvorbis="" ; [ "${VORBIS:-yes}" != "no" ] && libvorbis="--enable-libvorbis"
-libvpx="" ; [ "${VPX:-yes}" != "no" ] && libvpx="--enable-libvpx"
-opengl="" ; [ "${OPENGL:-yes}" != "no" ] && opengl="--enable-opengl"
-openjpeg="" ; [ "${JP2:-yes}" != "no" ] && openjpeg="--enable-libopenjpeg"
-pulse="" ; [ "${PULSEAUDIO:-yes}" != "no" ] && pulse="--enable-libpulse"
-samba="" ; [ "${SAMBA:-yes}" != "no" ] && samba="--enable-libsmbclient"
-wavpack="" ; [ "${WAVPACK:-yes}" != "no" ] && wavpack="--enable-libwavpack"
-x11grab="" ; [ "${X11GRAB:-yes}" != "no" ] && x11grab="--enable-x11grab"
-
-# Disable patent encumbered features:
-aac="" ; [ "${AAC:-yes}" != "yes" ] && aac="--disable-encoder=aac"
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-# Patch for openjpeg-2.3.0
-patch -p1 < $CWD/ffmpeg-3.2.4-openjpeg2.3.patch
-
-#patch for libfdk-aac 2.0.0
-patch -p0 < $CWD/ffmpeg-3.2.4-libfdk_aac-2.0.0.patch
-
-# Fix linking with flite:
-sed -i "s| -lflite\"| -lflite -lm -lasound\"|" \
- ./configure
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --shlibdir=/usr/lib${LIBDIRSUFFIX} \
- --docdir=/usr/doc/$PRGNAM-$VERSION/html \
- --mandir=/usr/man \
- --disable-debug \
- --enable-shared \
- --disable-static \
- --enable-gpl \
- --enable-version3 \
- --enable-avresample \
- --arch=$ARCH \
- $non_free \
- $aac \
- $chromaprint \
- $decklink \
- $dirac_fast \
- $fdk \
- $fontconfig \
- $freetype \
- $fribidi \
- $gnutls \
- $ladspa \
- $libass \
- $libbluray \
- $libbs2b \
- $libcaca \
- $libcdio \
- $libcelt \
- $libdc1394 \
- $libebur128 \
- $libflite \
- $libfrei0r \
- $libgme \
- $libgsm \
- $libiec61883 \
- $libilbc \
- $libmodplug \
- $libopenal \
- $libopencv \
- $libopus \
- $librtmp \
- $libsnappy \
- $libspeex \
- $libssh \
- $libtheora \
- $libtwolame \
- $libv4l2 \
- $libvidstab \
- $libvorbis \
- $libvpx \
- $libwebp \
- $libx264 \
- $libx265 \
- $libxvid \
- $libzmq \
- $libzvbi \
- $mp3lame \
- $netcdf \
- $opencore_amr \
- $opengl \
- $openjpeg \
- $pulse \
- $rubberband \
- $samba \
- $ssl \
- $tesseract \
- $wavpack \
- $x11grab
-
-make
-make install DESTDIR=$PKG
-make install-man DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | \
- grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/txt
-cp -a Changelog COPYING* CREDITS INSTALL* LICENSE* MAINTAINERS README* \
- RELEASE VERSION \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a doc/*.txt $PKG/usr/doc/$PRGNAM-$VERSION/txt/
-find . -name "RELEASE_NOTES" -exec cp -a {} $PKG/usr/doc/$PRGNAM-$VERSION/ \;
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/ffmpeg/ffmpeg.info b/multimedia/ffmpeg/ffmpeg.info
deleted file mode 100644
index f187f17aa0..0000000000
--- a/multimedia/ffmpeg/ffmpeg.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="ffmpeg"
-VERSION="3.2.4"
-HOMEPAGE="http://www.ffmpeg.org"
-DOWNLOAD="http://www.ffmpeg.org/releases/ffmpeg-3.2.4.tar.xz"
-MD5SUM="39fd71024ac76ba35f04397021af5606"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="%README%"
-MAINTAINER="Heinz Wiesinger"
-EMAIL="pprkut@liwjatan.at"
diff --git a/multimedia/ffmpeg2theora/ffmpeg2theora.SlackBuild b/multimedia/ffmpeg2theora/ffmpeg2theora.SlackBuild
index d562ef4ef0..f74f241404 100644
--- a/multimedia/ffmpeg2theora/ffmpeg2theora.SlackBuild
+++ b/multimedia/ffmpeg2theora/ffmpeg2theora.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware Package Build Script for ffmpeg2theora
# Home Page http://v2v.cc/~j/ffmpeg2theora/
@@ -27,10 +27,13 @@
# Modified by SlackBuilds.org --dsomero,rworkman
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM="ffmpeg2theora"
VERSION=${VERSION:-0.30}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -40,7 +43,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -71,6 +81,9 @@ find -L . \
# thanks to Debian https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=768674
patch -p1 < $CWD/link-libm.patch
+# thanks arch maintainers
+zcat $CWD/scons-python3.patch.gz | patch -p1
+
scons install APPEND_CCFLAGS="$SLKCFLAGS" prefix=/usr destdir=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
@@ -86,4 +99,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/ffmpeg2theora/ffmpeg2theora.info b/multimedia/ffmpeg2theora/ffmpeg2theora.info
index e5c05376a3..f136c17428 100644
--- a/multimedia/ffmpeg2theora/ffmpeg2theora.info
+++ b/multimedia/ffmpeg2theora/ffmpeg2theora.info
@@ -5,6 +5,6 @@ DOWNLOAD="http://v2v.cc/~j/ffmpeg2theora/downloads/ffmpeg2theora-0.30.tar.bz2"
MD5SUM="b1f0c21097e236c0a4558415a914458f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg libkate"
+REQUIRES="libkate"
MAINTAINER="Nishant Limbachia"
EMAIL="nishant@mnspace.net"
diff --git a/multimedia/ffmpeg2theora/scons-python3.patch.gz b/multimedia/ffmpeg2theora/scons-python3.patch.gz
new file mode 100644
index 0000000000..9302739d1d
--- /dev/null
+++ b/multimedia/ffmpeg2theora/scons-python3.patch.gz
Binary files differ
diff --git a/multimedia/ffmpeg4/README b/multimedia/ffmpeg4/README
deleted file mode 100644
index 9d9c5e4ed1..0000000000
--- a/multimedia/ffmpeg4/README
+++ /dev/null
@@ -1,85 +0,0 @@
-ffmpeg4 (Software to record, convert and stream audio and video).
-
-ffmpeg4 should be installable alongside ffmpeg 3.x without conflict.
-
-FFmpeg is a complete solution to record, convert and stream audio
-and video. It includes libavcodec, the leading audio/video codec
-library.
-
-By default it will not build the ffmpeg binaries or man-pages, in order
-not to conflict with an ffmpeg 3.x package. You can change this by
-using the following environment variable setting:
-
- BINS=yes
-
-It can optionally link to a number of extra libraries that are available
-on SBo by setting the relevant env vars, which all default to "no":
-
- CHROMAPRINT=yes # requires chromaprint
- DECKLINK=yes # requires decklink-sdk
- FREI0R=yes # requires frei0r
- LADSPA=yes # requires ladspa_sdk
- LIBAOM=yes # requires libaom
- LIBBLURAY=yes # requires libbluray
- LIBBS2B=yes # requires libbs2b
- LIBCELT=yes # requires celt
- LIBDC1394=yes # requires libdc1394
- LIBFDK_AAC=yes # requires libfdk-aac (non-redistributable)
- LIBFLITE=yes # requires flite
- LIBGME=yes # requires libgme
- LIBGSM=yes # requires gsm
- LIBIEC61883=yes # requires libiec61883 and libavc1394
- LIBILBC=yes # requires libilbc
- LIBMODPLUG=yes # requires libmodplug
- LIBMP3LAME=yes # requires lame
- LIBOPENCORE=yes # requires opencore-amr
- LIBOPENCV=yes # requires opencv
- LIBOPUS=yes # requires opus
- LIBRTMP=yes # requires rtmpdump
- LIBRUBBERBAND=yes # requires rubberband
- LIBSNAPPY=yes # requires snappy
- LIBSPEEX=yes # requires speex
- LIBTESSERACT=yes # requires tesseract
- LIBTWOLAME=yes # requires twolame
- LIBVIDSTAB=yes # requires vid.stab
- LIBWEBP=yes # requires libwebp
- LIBX264=yes # requires x264
- LIBX265=yes # requires x265
- LIBXVID=yes # requires xvidcore
- LIBZMQ=yes # requires zeromq
- LIBZVBI=yes # requires zvbi
-
-By default, ffmpeg4 is built to link with openssl. This creates a non-
-redistributable binary (just like linking with libfdk-aac does). If you
-want a redistributable binary you can change from linking with openssl
-to linking with gnutls instead by setting:
-
- OPENSSL=no
- GNUTLS=yes
-
-Both of these libraries are available in Slackware itself.
-
-There are a few other libraries available in Slackware that are also
-linked to by default, and you can disable them by changing the default
-of "yes" to "no" with the following settings:
-
- LIBCACA=no
- LIBCDIO=no
- LIBFONTCONFIG=no
- LIBFREETYPE=no
- LIBFRIBIDI=no
- LIBOPENJPEG=no
- LIBPULSE=no
- LIBSMBCLIENT=no
- LIBSSH=no
- LIBTHEORA=no
- LIBV4L2=no
- LIBVORBIS=no
- LIBVPX=no
- LIBWAVPACK=no
- OPENGL=no
-
-To link to this version of the ffmpeg libraries, you'll need to set
-the PKG_CONFIG_PATH to "/usr/lib${LIBDIRSUFFIX}/ffmpeg4/pkgconfig"
-where ${LIBDIRSUFFIX} is either 64 or an empty string, depending on
-your architecture.
diff --git a/multimedia/ffmpeg4/ffmpeg4.SlackBuild b/multimedia/ffmpeg4/ffmpeg4.SlackBuild
deleted file mode 100644
index 565dc68ae9..0000000000
--- a/multimedia/ffmpeg4/ffmpeg4.SlackBuild
+++ /dev/null
@@ -1,234 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for ffmpeg4
-
-# Copyright 2018 Andreas Guldstrand
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
-
-PRGNAM=ffmpeg4
-SRCNAM=ffmpeg
-VERSION=${VERSION:-4.1}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-enable() {
- VAR="$1"; shift
- DEF="$1"; shift
- YES="$1"; shift
- NO="$1"; shift
- eval "$VAR=\${$VAR:-$DEF}"
- eval "enable_$VAR=\"$NO\""
- eval "[ \"\$$VAR\" = \"yes\" ] && enable_$VAR=\"$YES\""
-}
-
-# set "enable_$VAR" variables
- # ENV VAR DEFAULT IF YES IF NO
-enable "BINS" "no" "" "--disable-programs --disable-manpages"
-enable "CHROMAPRINT" "no" "--enable-chromaprint" ""
-enable "DECKLINK" "no" "--enable-decklink" ""
-enable "FREI0R" "no" "--enable-frei0r" ""
-enable "GNUTLS" "no" "--enable-gnutls" ""
-enable "LADSPA" "no" "--enable-ladspa" ""
-enable "LIBAOM" "no" "--enable-libaom" ""
-enable "LIBBLURAY" "no" "--enable-libbluray" ""
-enable "LIBBS2B" "no" "--enable-libbs2b" ""
-enable "LIBCACA" "yes" "--enable-libcaca" ""
-enable "LIBCDIO" "yes" "--enable-libcdio" ""
-enable "LIBCELT" "no" "--enable-libcelt" ""
-enable "LIBDC1394" "no" "--enable-libdc1394" ""
-enable "LIBFDK_AAC" "no" "--enable-nonfree --enable-libfdk_aac" ""
-enable "LIBFLITE" "no" "--enable-libflite" ""
-enable "LIBFONTCONFIG" "yes" "--enable-libfontconfig" ""
-enable "LIBFREETYPE" "yes" "--enable-libfreetype" ""
-enable "LIBFRIBIDI" "yes" "--enable-libfribidi" ""
-enable "LIBGME" "no" "--enable-libgme" ""
-enable "LIBGSM" "no" "--enable-libgsm" ""
-enable "LIBIEC61883" "no" "--enable-libiec61883" ""
-enable "LIBILBC" "no" "--enable-libilbc" ""
-enable "LIBMODPLUG" "no" "--enable-libmodplug" ""
-enable "LIBMP3LAME" "no" "--enable-libmp3lame" ""
-enable "LIBOPENCORE" "no" "--enable-libopencore-amrnb --enable-libopencore-amrwb" ""
-enable "LIBOPENCV" "no" "--enable-libopencv" ""
-enable "LIBOPENJPEG" "yes" "--enable-libopenjpeg" ""
-enable "LIBOPUS" "no" "--enable-libopus" ""
-enable "LIBPULSE" "yes" "--enable-libpulse" ""
-enable "LIBRTMP" "no" "--enable-librtmp" ""
-enable "LIBRUBBERBAND" "no" "--enable-librubberband" ""
-enable "LIBSMBCLIENT" "yes" "--enable-libsmbclient" ""
-enable "LIBSNAPPY" "no" "--enable-libsnappy" ""
-enable "LIBSPEEX" "no" "--enable-libspeex" ""
-enable "LIBSSH" "yes" "--enable-libssh" ""
-enable "LIBTESSERACT" "no" "--enable-libtesseract" ""
-enable "LIBTHEORA" "yes" "--enable-libtheora" ""
-enable "LIBTWOLAME" "no" "--enable-libtwolame" ""
-enable "LIBV4L2" "yes" "--enable-libv4l2" ""
-enable "LIBVIDSTAB" "no" "--enable-libvidstab" ""
-enable "LIBVORBIS" "yes" "--enable-libvorbis" ""
-enable "LIBVPX" "yes" "--enable-libvpx" ""
-enable "LIBWAVPACK" "yes" "--enable-libwavpack" ""
-enable "LIBWEBP" "no" "--enable-libwebp" ""
-enable "LIBX264" "no" "--enable-libx264" ""
-enable "LIBX265" "no" "--enable-libx265" ""
-enable "LIBXVID" "no" "--enable-libxvid" ""
-enable "LIBZMQ" "no" "--enable-libzmq" ""
-enable "LIBZVBI" "no" "--enable-libzvbi" ""
-enable "OPENAL" "no" "--enable-openal" ""
-enable "OPENGL" "yes" "--enable-opengl" ""
-enable "OPENSSL" "yes" "--enable-nonfree --enable-openssl" ""
-
-[ "$DECKLINK" = "yes" ] && SLKCFLAGS="$SLKCFLAGS -I/usr/include/decklink"
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $SRCNAM-$VERSION
-tar xvf $CWD/$SRCNAM-$VERSION.tar.bz2
-cd $SRCNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX}/ffmpeg4 \
- --mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION/html \
- --incdir=/usr/include/ffmpeg4 \
- --datadir=/usr/share/ffmpeg4 \
- --enable-rpath \
- --disable-podpages \
- --disable-txtpages \
- --arch=$ARCH \
- --enable-gpl \
- --enable-version3 \
- --enable-shared \
- --disable-static \
- --disable-debug \
- --enable-libass \
- $enable_BINS \
- $enable_CHROMAPRINT \
- $enable_DECKLINK \
- $enable_FREI0R \
- $enable_GNUTLS \
- $enable_LADSPA \
- $enable_LIBAOM \
- $enable_LIBBLURAY \
- $enable_LIBBS2B \
- $enable_LIBCACA \
- $enable_LIBCDIO \
- $enable_LIBCELT \
- $enable_LIBDC1394 \
- $enable_LIBFDK_AAC \
- $enable_LIBFLITE \
- $enable_LIBFONTCONFIG \
- $enable_LIBFREETYPE \
- $enable_LIBFRIBIDI \
- $enable_LIBGME \
- $enable_LIBGSM \
- $enable_LIBIEC61883 \
- $enable_LIBILBC \
- $enable_LIBMODPLUG \
- $enable_LIBMP3LAME \
- $enable_LIBOPENCORE \
- $enable_LIBOPENCV \
- $enable_LIBOPENJPEG \
- $enable_LIBOPUS \
- $enable_LIBPULSE \
- $enable_LIBRTMP \
- $enable_LIBRUBBERBAND \
- $enable_LIBSMBCLIENT \
- $enable_LIBSNAPPY \
- $enable_LIBSPEEX \
- $enable_LIBSSH \
- $enable_LIBTESSERACT \
- $enable_LIBTHEORA \
- $enable_LIBTWOLAME \
- $enable_LIBV4L2 \
- $enable_LIBVIDSTAB \
- $enable_LIBVORBIS \
- $enable_LIBVPX \
- $enable_LIBWAVPACK \
- $enable_LIBWEBP \
- $enable_LIBX264 \
- $enable_LIBX265 \
- $enable_LIBXVID \
- $enable_LIBZMQ \
- $enable_LIBZVBI \
- $enable_OPENAL \
- $enable_OPENGL \
- $enable_OPENSSL
-
-make
-make install DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-if [ "$BINS" = "yes" ]; then
- find $PKG/usr/man -type f -exec gzip -9 {} \;
- for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-fi
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- Changelog CONTRIBUTING.md COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 COPYING.LGPLv3 \
- CREDITS INSTALL.md LICENSE.md MAINTAINERS README.md RELEASE RELEASE_NOTES VERSION \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/ffmpeg4/ffmpeg4.info b/multimedia/ffmpeg4/ffmpeg4.info
deleted file mode 100644
index 50c38934da..0000000000
--- a/multimedia/ffmpeg4/ffmpeg4.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="ffmpeg4"
-VERSION="4.1"
-HOMEPAGE="https://ffmpeg.org/"
-DOWNLOAD="https://ffmpeg.org/releases/ffmpeg-4.1.tar.bz2"
-MD5SUM="8107e8f22a33b27a5e34b38e628eecc6"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="libass"
-MAINTAINER="Andreas Guldstrand"
-EMAIL="andreas.guldstrand@gmail.com"
diff --git a/multimedia/ffmpegfs/README b/multimedia/ffmpegfs/README
new file mode 100644
index 0000000000..b79da1f3e7
--- /dev/null
+++ b/multimedia/ffmpegfs/README
@@ -0,0 +1,22 @@
+FFmpegfs is a read-only FUSE file system which transcodes
+various audio and video formats to mp4, WebM and many more
+on the fly when opened and read using the ffmpeg library
+thus supporting a multitude of input formats and a variety
+of common output formats.
+
+By default only root has access to this filesystem
+for other users, uncomment user_allow_other in
+/etc/fuse.conf
+
+fop is an optional dependency needed for genetating
+pdf documents. To generate pdf docs run
+make help-pdf and copy the pdf to the doc dir by
+customizing the slackbuild
+
+Example:
+
+ffmpegs --desttype=mp4 input_dir output_dir -o allow_other,rw
+
+Other optional dependencies include twolame x264 openh264
+
+It is licensed under GPLv3
diff --git a/multimedia/ffmpegfs/changelog b/multimedia/ffmpegfs/changelog
new file mode 100644
index 0000000000..29eddedd1d
--- /dev/null
+++ b/multimedia/ffmpegfs/changelog
@@ -0,0 +1,15 @@
+Changelog for FFmpegfs SlackBuild Script
+--------------------------------------------------------------------
+
+04/09/2022:
+
+Added to slackbuilds.org
+
+12/05/2023:
+
+optional dependencies to ffmpegfs are twolame,x264 and openh264
+updated to version 2.13
+
+08/02/2024:
+
+updated to version 2.15
diff --git a/multimedia/ffmpegfs/ffmpegfs.SlackBuild b/multimedia/ffmpegfs/ffmpegfs.SlackBuild
new file mode 100644
index 0000000000..774a8cad7c
--- /dev/null
+++ b/multimedia/ffmpegfs/ffmpegfs.SlackBuild
@@ -0,0 +1,113 @@
+#!/bin/bash
+
+# Slackware build script for ffmpegfs
+
+# Copyright 2022-2024 Vijay Marcel
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=ffmpegfs
+VERSION=${VERSION:-2.15}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-march=i586 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-march=i686 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-march=x86-64 -mtune=generic -pipe -O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --htmldir=/usr/doc/$PRGNAM-$VERSION/html/ \
+ --build=$ARCH-slackware-linux
+
+make
+make help-html
+make install DESTDIR=$PKG
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+mkdir -pv $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -pv $PKG/usr/doc/$PRGNAM-$VERSION/html
+cp -a COPYING COPYING.CC0 COPYING.DOC FEATURES.md PROBLEMS.md ChangeLog HISTORY.md README.md NEWS TODO $PKG/usr/doc/$PRGNAM-$VERSION
+cp -r ffmpegfs.1.htmlhelp/* $PKG/usr/doc/$PRGNAM-$VERSION/html
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/ffmpegfs/ffmpegfs.info b/multimedia/ffmpegfs/ffmpegfs.info
new file mode 100644
index 0000000000..cbfdc59f6d
--- /dev/null
+++ b/multimedia/ffmpegfs/ffmpegfs.info
@@ -0,0 +1,10 @@
+PRGNAM="ffmpegfs"
+VERSION="2.15"
+HOMEPAGE="https://nschlia.github.io/ffmpegfs/html/index.html"
+DOWNLOAD="https://github.com/nschlia/ffmpegfs/releases/download/v2.15/ffmpegfs-2.15.tar.gz"
+MD5SUM="e92de951d96a2e8031f59180cacef8bc"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="w3m graphviz libchardet chromaprint"
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/ffmpegfs/slack-desc b/multimedia/ffmpegfs/slack-desc
new file mode 100644
index 0000000000..b2c8cc7a19
--- /dev/null
+++ b/multimedia/ffmpegfs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+ffmpegfs: ffmpegfs (Fuse based transcoding File System)
+ffmpegfs:
+ffmpegfs: FFmpegfs is a read-only FUSE file system which transcodes
+ffmpegfs: various audio and video formats to mp4, WebM and many more
+ffmpegfs: on the fly when opened and read using the ffmpeg library
+ffmpegfs: thus supporting a multitude of input formats and a variety
+ffmpegfs: of common output formats.
+ffmpegfs:
+ffmpegfs: Homepage:https://nschlia.github.io/ffmpegfs/
+ffmpegfs:
+ffmpegfs:
diff --git a/multimedia/filebot-legacy/README b/multimedia/filebot-legacy/README
new file mode 100644
index 0000000000..9141451d29
--- /dev/null
+++ b/multimedia/filebot-legacy/README
@@ -0,0 +1,18 @@
+filebot-4.7 (The ultimate TV and Movie Renamer)
+
+FileBot is the ultimate tool for organizing and renaming your movies,
+tv shows, anime, and music, as well as downloading subtitles and
+artwork. It's smart and just works.
+
+Many examples of renaming conventions, including automating renaming,
+can be found on their website and forum.
+
+If desired, other JDKs can be substituted.
+
+This is the last free version of filebot. 4.8+ require a paid license
+to be able to use. This version is unmaintained and is at least
+partially broken. I know TheTVDB.com support is no longer working due
+to API changes. It is provided as-is, for those not wanting to move
+to the paid version.
+
+You are unable to install this with the updated version of filebot.
diff --git a/multimedia/OpenPHT/doinst.sh b/multimedia/filebot-legacy/doinst.sh
index 65c7e2eeb9..65c7e2eeb9 100644
--- a/multimedia/OpenPHT/doinst.sh
+++ b/multimedia/filebot-legacy/doinst.sh
diff --git a/multimedia/opera-developer-ffmpeg-codecs/opera-developer-ffmpeg-codecs.SlackBuild b/multimedia/filebot-legacy/filebot-legacy.SlackBuild
index abdb05b9ae..7fdc77dd64 100644
--- a/multimedia/opera-developer-ffmpeg-codecs/opera-developer-ffmpeg-codecs.SlackBuild
+++ b/multimedia/filebot-legacy/filebot-legacy.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
-#
-# Slackware build script for opera-developer-ffmpeg-codecs.
+#!/bin/bash
+
+# Slackware build script for filebot-legacy
#
-# Copyright 2016-2020 Edinaldo P. Silva, Rio de Janeiro, Brazil.
+# Copyright 2016-2023 Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -11,7 +11,7 @@
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
@@ -22,10 +22,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM="opera-developer-ffmpeg-codecs"
-VERSION=${VERSION:-0.44.1}
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=filebot-legacy
+SRCNAM=filebot
+VERSION=${VERSION:-4.7.9}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,41 +39,33 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
- BITS="i686"
- echo "This package is currently only available for 64bit."
- exit 1
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ DEBARCH="i386"
LIBDIRSUFFIX=""
- BITS="i686"
- echo "This package is currently only available for 64bit."
- exit 1
elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
+ DEBARCH="amd64"
LIBDIRSUFFIX="64"
- BITS="x86_64"
else
echo "Package for $(uname -m) architecture is not available."
exit 1
fi
-set -e
+set -eu
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-mkdir -p $PRGNAM-${VERSION}
-unzip $CWD/${VERSION}-linux-x64.zip -d $PRGNAM-${VERSION}
-cd $PRGNAM-${VERSION}
+cd $PKG
+ar p $CWD/${SRCNAM}_${VERSION}_${DEBARCH}.deb data.tar.xz | unxz | tar xv
+
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -80,14 +76,29 @@ find -L . \
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/opera-developer/lib_extra
-mv libffmpeg.so $PKG/usr/lib${LIBDIRSUFFIX}/opera-developer/lib_extra/
-
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+# Create launcher file in /usr/bin/
+mkdir -p $PKG/usr/bin/
+cat << EOF > $PKG/usr/bin/filebot
+#!/bin/bash
+#
+# Launcher for FileBot
+
+/usr/share/filebot/filebot.sh "\$@"
+EOF
+chmod 0755 $PKG/usr/bin/filebot
+
+# Disable the update notification since we're choosing to run a legacy version
+sed -i 's|-Dunixfs=false|& -Dapplication.update=skip|' $PKG/usr/share/filebot/filebot.sh
+
+# Remove deprecated entries in filebot.desktop
+sed -i '/OnlyShowIn=Unity;/d' $PKG/usr/share/applications/filebot.desktop
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/filebot-legacy/filebot-legacy.info b/multimedia/filebot-legacy/filebot-legacy.info
new file mode 100644
index 0000000000..51b613d67c
--- /dev/null
+++ b/multimedia/filebot-legacy/filebot-legacy.info
@@ -0,0 +1,10 @@
+PRGNAM="filebot-legacy"
+VERSION="4.7.9"
+HOMEPAGE="https://www.filebot.net"
+DOWNLOAD="http://downloads.sourceforge.net/project/filebot/filebot/FileBot_4.7.9/filebot_4.7.9_i386.deb"
+MD5SUM="ab14c92e18b961068a5b850748aea379"
+DOWNLOAD_x86_64="http://downloads.sourceforge.net/project/filebot/filebot/FileBot_4.7.9/filebot_4.7.9_amd64.deb"
+MD5SUM_x86_64="8e4aa7163bd4ddd8017459fb77e4e0ee"
+REQUIRES="zulu-openjdk8 chromaprint"
+MAINTAINER="Jeremy Hansen"
+EMAIL="jebrhansen+SBo@gmail.com"
diff --git a/multimedia/filebot-legacy/slack-desc b/multimedia/filebot-legacy/slack-desc
new file mode 100644
index 0000000000..eee72f4a13
--- /dev/null
+++ b/multimedia/filebot-legacy/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+filebot-legacy: filebot-legacy (The ultimate TV and Movie Renamer)
+filebot-legacy:
+filebot-legacy: FileBot is the ultimate tool for organizing and renaming your movies,
+filebot-legacy: tv shows, anime, and music, as well as downloading subtitles and
+filebot-legacy: artwork. It's smart and just works.
+filebot-legacy:
+filebot-legacy: Many examples of renaming conventions, including automating renaming,
+filebot-legacy: can be found on their website and forum.
+filebot-legacy:
+filebot-legacy: Homepage: http://www.filebot.net/
+filebot-legacy:
diff --git a/multimedia/filebot/README b/multimedia/filebot/README
index c69c9b9950..d5abbda476 100644
--- a/multimedia/filebot/README
+++ b/multimedia/filebot/README
@@ -7,4 +7,13 @@ artwork. It's smart and just works.
Many examples of renaming conventions, including automating renaming,
can be found on their website and forum.
-If desired, openjdk can be substituted for jdk.
+If desired, zulu-openjdk11 can be substituted for any jdk v11 and
+higher.
+
+NOTE: This is no longer a free version. You need to purchase a license
+to use this program. You can purchase a 1-year or lifetime license on
+their website, https://www.filebot.net/. It is good for all platforms.
+
+The free version is available on SBo under multimedia/filebot-legacy,
+however, that version may have parts of it broken since it is no
+longer maintained. Use at your own risk.
diff --git a/multimedia/filebot/filebot.SlackBuild b/multimedia/filebot/filebot.SlackBuild
index 017c126958..1bf0250210 100644
--- a/multimedia/filebot/filebot.SlackBuild
+++ b/multimedia/filebot/filebot.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for filebot
#
-# Copyright 2016 Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
+# Copyright 2016-2024 Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,15 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=filebot
-VERSION=${VERSION:-4.7.9}
+SRCNAM=FileBot
+VERSION=${VERSION:-5.1.3}
+JNAVER=${JNAVER:-5.13.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,17 +40,27 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
- DEBARCH="i386"
LIBDIRSUFFIX=""
+ JNAARCH="x86"
elif [ "$ARCH" = "x86_64" ]; then
- DEBARCH="amd64"
LIBDIRSUFFIX="64"
+ JNAARCH="x86-64"
+elif [ "$ARCH" = "arm" ]; then
+ LIBDIRSUFFIX=""
+ JNAARCH="arm"
+elif [ "$ARCH" = "aarch64" ]; then
+ LIBDIRSUFFIX=""
+ JNAARCH="aarch64"
else
echo "Package for $(uname -m) architecture is not available."
exit 1
@@ -53,10 +68,16 @@ fi
set -eu
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
+rm -rf $PKG $TMP/jna
+mkdir -p $TMP $PKG $OUTPUT $TMP/jna
+cd $TMP/jna
+unzip $CWD/jna-$JNAVER.jar
cd $PKG
-ar p $CWD/${PRGNAM}_${VERSION}_${DEBARCH}.deb data.tar.xz | unxz | tar xv
+ar p $CWD/${SRCNAM}_${VERSION}_universal.deb data.tar.xz | unxz | tar xv
+
+mkdir -p $PKG/usr/share/filebot/lib/$(uname -m)
+cp $TMP/jna/com/sun/jna/linux-$JNAARCH/libjnidispatch.so $PKG/usr/share/filebot/lib/$(uname -m)
+cp $CWD/jna-$JNAVER.jar $PKG/usr/share/filebot/jar/jna.jar
chown -R root:root .
find -L . \
@@ -78,13 +99,21 @@ cat << EOF > $PKG/usr/bin/filebot
#
# Launcher for FileBot
-/usr/share/filebot/filebot.sh "$@"
+/usr/share/filebot/bin/filebot.sh "\$@"
EOF
chmod 0755 $PKG/usr/bin/filebot
+# Ensure it uses the proper jna library
+SEDSEARCH="-Djna.boot.library.name=jnidispatch.system"
+SEDREPLACE='-Djna.boot.library.path=\"$LIBRARY_PATH\" -Djna.library.path=\"$LIBRARY_PATH\" -Djava.library.path=\"$LIBRARY_PATH\"'
+sed -i "s|$SEDSEARCH|$SEDREPLACE|" $PKG/usr/share/filebot/bin/filebot.sh
+
+# Set the correct paths
+sed -i "s|LIBRARY_PATH=.*|LIBRARY_PATH=\$FILEBOT_HOME/lib/\$(uname -m):/usr/lib$LIBDIRSUFFIX|" $PKG/usr/share/filebot/bin/filebot.sh
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/filebot/filebot.info b/multimedia/filebot/filebot.info
index 2378337d9f..76c78c1de4 100644
--- a/multimedia/filebot/filebot.info
+++ b/multimedia/filebot/filebot.info
@@ -1,10 +1,12 @@
PRGNAM="filebot"
-VERSION="4.7.9"
+VERSION="5.1.3"
HOMEPAGE="https://www.filebot.net"
-DOWNLOAD="http://downloads.sourceforge.net/project/filebot/filebot/FileBot_4.7.9/filebot_4.7.9_i386.deb"
-MD5SUM="ab14c92e18b961068a5b850748aea379"
-DOWNLOAD_x86_64="http://downloads.sourceforge.net/project/filebot/filebot/FileBot_4.7.9/filebot_4.7.9_amd64.deb"
-MD5SUM_x86_64="8e4aa7163bd4ddd8017459fb77e4e0ee"
-REQUIRES="jdk chromaprint libmediainfo"
+DOWNLOAD="https://get.filebot.net/filebot/FileBot_5.1.3/FileBot_5.1.3_universal.deb \
+ https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar"
+MD5SUM="d61e830e5a7e2f69d25deada9b412339 \
+ bd2e5bc6b4b020c2d9a6e17a8e9bcef1"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="zulu-openjdk11 chromaprint libmediainfo"
MAINTAINER="Jeremy Hansen"
EMAIL="jebrhansen+SBo@gmail.com"
diff --git a/multimedia/flashplayer-plugin/README b/multimedia/flashplayer-plugin/README
deleted file mode 100644
index 8bde0ef25c..0000000000
--- a/multimedia/flashplayer-plugin/README
+++ /dev/null
@@ -1 +0,0 @@
-flashplayer-plugin (flash plugin for web browsers)
diff --git a/multimedia/flashplayer-plugin/flashplayer-plugin.SlackBuild b/multimedia/flashplayer-plugin/flashplayer-plugin.SlackBuild
deleted file mode 100644
index 3095a132b4..0000000000
--- a/multimedia/flashplayer-plugin/flashplayer-plugin.SlackBuild
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/sh
-
-# Copyright 2010-2020 Robby Workman, Tuscaloosa, Alabama, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
-
-PRGNAM=flashplayer-plugin
-VERSION=${VERSION:-32.0.0.344}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-VERS_MAJ=$(printf $VERSION | cut -d. -f1)
-
-case "$( uname -m )" in
- i?86) ARCH=i386 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
-esac
-
-if [ "$ARCH" = "x86_64" ]; then
- LIBDIRSUFFIX="64"
-elif [ "$ARCH" = "i386" ]; then
- LIBDIRSUFFIX=""
-else
- printf "\n\n$ARCH is unsupported...\n"
- exit 1
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-
-tar xf $CWD/flash_player_npapi_linux.${ARCH}.tar.gz -C $PKG
-
-if ! strings $PKG/libflashplayer.so | grep -wq "${VERSION}$" 2>/dev/null ; then
- printf "\n\tThis script is written for version $VERSION of the plugin,\n"
- printf "\tbut you don't seem to have that version. This is likely\n"
- printf "\tokay, and it's almost surely not your fault - Adobe tends\n"
- printf "\tto release new tarballs without changing the name.\n\n"
- sleep 10
-fi
-
-mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/mozilla/plugins
-mv $PKG/libflashplayer.so $PKG/usr/lib${LIBDIRSUFFIX}/mozilla/plugins
-
-if [ "$ARCH" = "x86_64" ]; then
- rm -rf $PKG/usr/lib
-fi
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-mv $PKG/readme.txt $PKG/license.pdf $PKG/LGPL/* $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-rm -rf $PKG/LGPL
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-chown -R root:root $PKG
-chmod -R g-w $PKG
-find $PKG -type f -name "*.so" -exec chmod 0755 {} \;
-
-/sbin/makepkg -l y -c n -p $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/flashplayer-plugin/flashplayer-plugin.info b/multimedia/flashplayer-plugin/flashplayer-plugin.info
deleted file mode 100644
index 56d1b442ff..0000000000
--- a/multimedia/flashplayer-plugin/flashplayer-plugin.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="flashplayer-plugin"
-VERSION="32.0.0.344"
-HOMEPAGE="https://get.adobe.com/flashplayer/"
-DOWNLOAD="https://fpdownload.adobe.com/get/flashplayer/pdc/32.0.0.344/flash_player_npapi_linux.i386.tar.gz"
-MD5SUM="774f9dc345164a4f7ef52096aa376c69"
-DOWNLOAD_x86_64="https://fpdownload.adobe.com/get/flashplayer/pdc/32.0.0.344/flash_player_npapi_linux.x86_64.tar.gz"
-MD5SUM_x86_64="4f552ec7a81f8710e24fc1bbec09683b"
-REQUIRES=""
-MAINTAINER="Robby Workman"
-EMAIL="rworkman@slackbuilds.org"
diff --git a/multimedia/flowblade/flowblade.SlackBuild b/multimedia/flowblade/flowblade.SlackBuild
index 599bf8951c..fa833c97f7 100644
--- a/multimedia/flowblade/flowblade.SlackBuild
+++ b/multimedia/flowblade/flowblade.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for flowblade
# Copyright 2015-2016 klaatu @member.fsf.org
@@ -8,10 +8,14 @@
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=flowblade
-VERSION=${VERSION:-1.16}
+VERSION=${VERSION:-24564a}
+SRCVERSION=${SRCVERSION:-24564ae0899af9ee92ad31bd884ba804a3137d3b}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -21,7 +25,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -40,7 +51,7 @@ else
LIBDIRSUFFIX=""
fi
-PYTHONDIR=$(python -c "import sys, os; print os.path.join('/usr/lib${LIBDIRSUFFIX}', 'python%s' % sys.version[:3], 'site-packages')")
+PYTHONDIR=$(python3 -c "import sys, os; print(os.path.join('/usr/lib${LIBDIRSUFFIX}', 'python%s' % sys.version[:3], 'site-packages'))")
set -e
@@ -48,8 +59,12 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+mkdir $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$SRCVERSION.tar.gz --strip-components=1 \
+ -C $PRGNAM-$VERSION
+mv $PRGNAM-$VERSION/README.md $PRGNAM-$VERSION/$PRGNAM-trunk
cd $PRGNAM-$VERSION/$PRGNAM-trunk
+
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -57,10 +72,11 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-patch -p2 < $CWD/495a10c83b7d209bfdb1577efaf718e031ec6f25.patch
+# this has been submitted upstream but for now patch it here
+patch -p2 < $CWD/mlt7.patch
# install
-python setup.py install --root=$PKG
+python3 setup.py install --root=$PKG
# replace PY path in main script
sed -i "s|/usr/share/pyshared|$PYTHONDIR|" $PKG/usr/bin/$PRGNAM
@@ -81,8 +97,9 @@ find $PKG/usr/man -type f -exec gzip -9 {} \;
# doc
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+echo `pwd`
cp -a \
- PKG-INFO README \
+ AUTHORS COPYING README.md \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -91,4 +108,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/flowblade/flowblade.info b/multimedia/flowblade/flowblade.info
index 12d98fc040..fc4084cc89 100644
--- a/multimedia/flowblade/flowblade.info
+++ b/multimedia/flowblade/flowblade.info
@@ -1,10 +1,10 @@
PRGNAM="flowblade"
-VERSION="1.16"
+VERSION="24564a"
HOMEPAGE="https://github.com/jliljebl/flowblade/"
-DOWNLOAD="https://github.com/jliljebl/flowblade/archive/v1.16/flowblade-1.16.tar.gz"
-MD5SUM="71490e33fd7c2d44e96de5b59b88121f"
+DOWNLOAD="https://github.com/jliljebl/flowblade/archive/24564a/flowblade-24564ae0899af9ee92ad31bd884ba804a3137d3b.tar.gz"
+MD5SUM="ededb19439e16588f2490b2f77c66848"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg frei0r gnome-python ladspa_sdk mlt numpy"
+REQUIRES="mlt-bindings python3-numpy"
MAINTAINER="Klaatu"
EMAIL="klaatu@member.fsf.org"
diff --git a/multimedia/flowblade/mlt7.patch b/multimedia/flowblade/mlt7.patch
new file mode 100644
index 0000000000..9f9a1e25b9
--- /dev/null
+++ b/multimedia/flowblade/mlt7.patch
@@ -0,0 +1,21 @@
+diff --git a/flowblade-trunk/flowblade b/flowblade-trunk/flowblade
+index 01f6d092..2cdfcedb 100755
+--- a/flowblade-trunk/flowblade
++++ b/flowblade-trunk/flowblade
+@@ -58,11 +58,11 @@ sys.path.insert(0, modules_path)
+ # Check that we have MLT, missing is fatal.
+ try:
+ import mlt
+- try:
+- mlt_version = mlt.LIBMLT_VERSION
+- print ("MLT found, version:", mlt_version)
+- except:
+- print ("MLT found but version info not available. MLT probably too old to work reliably...")
++except:
++ import mlt7 as mlt
++
++try:
++ mlt_version = mlt.LIBMLT_VERSION
+ except Exception as err:
+ print ("MLT not found, exiting...")
+ print ("ERROR:", err)
diff --git a/multimedia/flowblade/slack-desc b/multimedia/flowblade/slack-desc
index 3dce6eeae7..990662a74c 100644
--- a/multimedia/flowblade/slack-desc
+++ b/multimedia/flowblade/slack-desc
@@ -14,6 +14,6 @@ flowblade: between two existing clips - when they are inserted on the timeline.
flowblade: It is efficient, effective, and includes powerful tools to mix,
flowblade: filter, and affect video and audio.
flowblade:
-flowblade: https://code.google.com/p/flowblade/
+flowblade: https://github.com/jliljebl/flowblade
flowblade:
flowblade:
diff --git a/multimedia/flvtool2/README b/multimedia/flvtool2/README
index 53e36308d2..aed16a12b2 100644
--- a/multimedia/flvtool2/README
+++ b/multimedia/flvtool2/README
@@ -1,4 +1,4 @@
-FLVTool2 is a manipulation tool for Macromedia Flash Video files (FLV). It
-can calculate a lot of meta data, insert an onMetaData tag, cut FLV files,
-add cue points (onCuePoint), show the FLV structure and print meta data
-information in XML or YAML.
+FLVTool2 is a manipulation tool for Macromedia Flash Video files
+(FLV). It can calculate a lot of meta data, insert an onMetaData tag,
+cut FLV files, add cue points (onCuePoint), show the FLV structure and
+print meta data information in XML or YAML.
diff --git a/multimedia/flvtool2/flvtool2.SlackBuild b/multimedia/flvtool2/flvtool2.SlackBuild
index fb93a940f5..ab6b5a30a2 100644
--- a/multimedia/flvtool2/flvtool2.SlackBuild
+++ b/multimedia/flvtool2/flvtool2.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware Package Build Script for flvtool2
# Home Page http://rubyforge.org/projects/flvtool2/
@@ -25,10 +25,13 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=flvtool2
VERSION=${VERSION:-1.0.6}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -38,7 +41,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -89,4 +99,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/freetube/README b/multimedia/freetube/README
new file mode 100644
index 0000000000..a8d9602149
--- /dev/null
+++ b/multimedia/freetube/README
@@ -0,0 +1,10 @@
+FreeTube (The Private YouTube Client)
+
+FreeTube is a YouTube client for Windows, Mac, and Linux built around
+using YouTube more privately. You can enjoy your favorite content and
+creators without your habits being tracked. All of your user data is
+stored locally and never sent or published to the internet. FreeTube
+grabs data by scraping the information it needs (with either local
+methods or by optionally utilizing the Invidious API). With many
+features similar to YouTube, FreeTube has become one of the best
+methods to watch YouTube privately on desktop.
diff --git a/multimedia/freetube/doinst.sh b/multimedia/freetube/doinst.sh
new file mode 100644
index 0000000000..9169c83208
--- /dev/null
+++ b/multimedia/freetube/doinst.sh
@@ -0,0 +1,13 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -x /usr/bin/update-mime-database ]; then
+ /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/freetube/freetube.SlackBuild b/multimedia/freetube/freetube.SlackBuild
new file mode 100644
index 0000000000..500217ed4b
--- /dev/null
+++ b/multimedia/freetube/freetube.SlackBuild
@@ -0,0 +1,94 @@
+#!/bin/bash
+
+# Slackware build script for freetube
+
+# Copyright 2022 Andreo Rissardo <andreotec@gmail.com>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=freetube
+VERSION=${VERSION:-0.18.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+DEBBUILD=${DEBBUILD:-1}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+# Abort build if architecture is not 64-bit.
+if [ "$ARCH" != "x86_64" ]; then
+ echo "$ARCH is not supported."
+ exit 1
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+mkdir -p $PRGNAM-$VERSION
+cd $PRGNAM-$VERSION
+rpm2cpio < $CWD/${PRGNAM}_${VERSION}_amd64.rpm | cpio -imdv
+chown -R root:root .
+find -L . \
+\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+-o -perm 511 \) -exec chmod 755 {} \; -o \
+\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# freetube has its own symlinks from opt to bin
+cp -vr {opt,usr} $PKG/
+
+#Binary link
+(
+ mkdir -p $PKG/usr/bin
+ ln -s /opt/FreeTube/$PRGNAM $PKG/usr/bin/$PRGNAM
+)
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/freetube/freetube.info b/multimedia/freetube/freetube.info
new file mode 100644
index 0000000000..7071f71f7e
--- /dev/null
+++ b/multimedia/freetube/freetube.info
@@ -0,0 +1,10 @@
+PRGNAM="freetube"
+VERSION="0.18.0"
+HOMEPAGE="https://freetubeapp.io"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/FreeTubeApp/FreeTube/releases/download/v0.18.0-beta/freetube_0.18.0_amd64.rpm"
+MD5SUM_x86_64="946775bbe8742fb9da6a50b5d584697a"
+REQUIRES=""
+MAINTAINER="Andreo Rissardo"
+EMAIL="andreofr@proton.me"
diff --git a/multimedia/freetube/slack-desc b/multimedia/freetube/slack-desc
new file mode 100644
index 0000000000..e45dc08de8
--- /dev/null
+++ b/multimedia/freetube/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+freetube: freetube (The Private YouTube Client)
+freetube:
+freetube: FreeTube is a YouTube client for Windows, Mac, and Linux built around
+freetube: using YouTube more privately. You can enjoy your favorite content and
+freetube: creators without your habits being tracked.
+freetube:
+freetube:
+freetube:
+freetube:
+freetube: Homepage: https://freetubeapp.io/
+freetube:
diff --git a/multimedia/freshplayerplugin/README b/multimedia/freshplayerplugin/README
deleted file mode 100644
index d41c86d6f7..0000000000
--- a/multimedia/freshplayerplugin/README
+++ /dev/null
@@ -1,14 +0,0 @@
-The main goal of this project is to get PPAPI (Pepper) Flash player
-working in Firefox. This is done by impementing a wrapper, some kind
-of adapter which will look like browser to PPAPI plugin and look like
-NPAPI plugin for browser.
-
-When loaded by browser it will search for libpepflashplayer.so in a
-directory where it can be: if you have google-chrome from /extra or
-chromium-pepperflash-plugin from Alien Bob installed it can use also
-those versions. If for any reason it doesn't find your installed
-version of the plugin, specify the full path in
-~/.config/freshwrapper.conf.
-You may find a sample configuration file in the docs folder of the
-resulting package to copy in the above location: check it also to
-enable hardware acceleration (disabled by default).
diff --git a/multimedia/freshplayerplugin/freshplayerplugin.info b/multimedia/freshplayerplugin/freshplayerplugin.info
deleted file mode 100644
index c38d0746cf..0000000000
--- a/multimedia/freshplayerplugin/freshplayerplugin.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="freshplayerplugin"
-VERSION="0.3.11"
-HOMEPAGE="https://github.com/i-rinat/freshplayerplugin"
-DOWNLOAD="https://github.com/i-rinat/freshplayerplugin/archive/v0.3.11/freshplayerplugin-0.3.11.tar.gz"
-MD5SUM="c34383e281135b7d40e29444af189d34"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="ffmpeg pepperflash-plugin ragel uriparser"
-MAINTAINER="Matteo Bernardini"
-EMAIL="ponce@slackbuilds.org"
diff --git a/multimedia/freshplayerplugin/slack-desc b/multimedia/freshplayerplugin/slack-desc
deleted file mode 100644
index 605a9702fe..0000000000
--- a/multimedia/freshplayerplugin/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-freshplayerplugin: freshplayerplugin (PPAPI-host NPAPI-plugin adapter)
-freshplayerplugin:
-freshplayerplugin: The main goal of this project is to get PPAPI (Pepper) Flash player
-freshplayerplugin: working in Firefox. This is done by impementing a wrapper, some kind
-freshplayerplugin: of adapter which will look like browser to PPAPI plugin and look like
-freshplayerplugin: NPAPI plugin for browser.
-freshplayerplugin:
-freshplayerplugin: homepage: https://github.com/i-rinat/freshplayerplugin
-freshplayerplugin:
-freshplayerplugin:
-freshplayerplugin:
diff --git a/multimedia/gaupol/README b/multimedia/gaupol/README
index 11ade37ac7..c04861dbc5 100644
--- a/multimedia/gaupol/README
+++ b/multimedia/gaupol/README
@@ -1,23 +1,15 @@
-Gaupol is an editor for text-based subtitle files. It supports multiple
-subtitle file formats and provides means of correcting texts and timing
-subtitles to match video. The user interface is designed with attention
-to batch processing of multiple documents and convenience of translating.
-
-Gaupol should run on all Unix-like (GNU/Linux, *BSD, etc.) operating systems
-and on Windows. Technically, it should run on Mac as well, but that has not
-been tested nor made convenient. Gaupol's user interface is based on the
-GTK+ toolkit and has been designed to best fit the GNOME desktop environment.
+Gaupol is an editor for text-based subtitle files. It supports
+multiple subtitle file formats and provides means of correcting
+texts and timing subtitles to match video. The user interface is
+designed with attention to batch processing of multiple documents and
+convenience of translating.
+
+Gaupol should run on all Unix-like (GNU/Linux, *BSD, etc.) operating
+systems and on Windows. Technically, it should run on Mac as well, but
+that has not been tested nor made convenient. Gaupol's user interface
+is based on the GTK+ toolkit and has been designed to best fit the
+GNOME desktop environment.
Optional dependencies are:
-- pyenchant 1.1.3 or greater is required for spell-checking.
- Additionally, spell-checking requires a dictionary, any of Aspell/Pspell,
- Ispell, MySpell, Uspell, Hspell or AppleSpell.
-
-- iso-codes, if available, will be used to translate script, language and
- country names.
-
-- Universal Encoding Detector is required for character encoding
- auto-detection. (python-chardet)
-
-- MPlayer or VLC is recommended for preview.
+- MPlayer, mpv, or VLC is recommended for preview.
diff --git a/multimedia/gaupol/gaupol.SlackBuild b/multimedia/gaupol/gaupol.SlackBuild
index d19bae4cdb..2ef3567e16 100644
--- a/multimedia/gaupol/gaupol.SlackBuild
+++ b/multimedia/gaupol/gaupol.SlackBuild
@@ -1,30 +1,37 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for gaupol
+# Copyright 2022-2024 fourtysixandtwo <fourtysixandtwo@sliderr.net>
# Written by Andre Barboza <bmg.andre@gmail.com>
-
+# All rights reserved.
+#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+# 20220922 46and2: Updated version, new maintainer.
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=gaupol
-VERSION=${VERSION:-0.19.2}
+VERSION=${VERSION:-1.14.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -34,7 +41,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -49,20 +60,22 @@ tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+
+python3 setup.py install --root=$PKG
-mkdir -p $PKG/usr
-python setup.py clean install --prefix=/usr --root=$PKG
+# pycache file has /tmp/SBo patch hardcoded, remove it and let it regenerate
+rm $PKG/usr/share/gaupol/extensions/custom-framerates/__pycache__/custom-framerates.cpython-*.pyc
mv $PKG/usr/share/man $PKG/usr
-find $PKG/usr/man -type f -exec gzip -9 {} \;
+find $PKG/usr/man -type f -exec gzip -9 {} \+
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS COPYING CREDITS INSTALL NEWS README TODO $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS.md COPYING NEWS.md README.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -70,4 +83,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gaupol/gaupol.info b/multimedia/gaupol/gaupol.info
index a7e9d5efc9..6ece9a8b22 100644
--- a/multimedia/gaupol/gaupol.info
+++ b/multimedia/gaupol/gaupol.info
@@ -1,10 +1,10 @@
PRGNAM="gaupol"
-VERSION="0.19.2"
+VERSION="1.14.1"
HOMEPAGE="https://github.com/otsaloma/gaupol"
-DOWNLOAD="https://github.com/otsaloma/gaupol/archive/0.19.2/gaupol-0.19.2.tar.gz"
-MD5SUM="bdebf0abcdd3ee6f22c9608c13dc1dc8"
+DOWNLOAD="https://github.com/otsaloma/gaupol/archive/1.14.1/gaupol-1.14.1.tar.gz"
+MD5SUM="fc45c20eb110528395bdea312a5153d1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Andre Barboza"
-EMAIL="bmg.andre@gmail.com"
+REQUIRES="gspell"
+MAINTAINER="fourtysixandtwo"
+EMAIL="fourtysixandtwo@sliderr.net"
diff --git a/multimedia/gecko-mediaplayer/README b/multimedia/gecko-mediaplayer/README
deleted file mode 100644
index e7443054be..0000000000
--- a/multimedia/gecko-mediaplayer/README
+++ /dev/null
@@ -1,6 +0,0 @@
-Gecko Mediaplayer is the modern replacement for the mplayerplug-in
-application.
-
-It is a browser plugin that uses GNOME MPlayer to play media in a browser.
-It should work with most browsers (not Chrome) on Unix-ish systems
-(Linux, BSD, Solaris) and uses the NS4 API (Mozilla, Firefox, Opera, etc.).
diff --git a/multimedia/gecko-mediaplayer/gecko-mediaplayer.SlackBuild b/multimedia/gecko-mediaplayer/gecko-mediaplayer.SlackBuild
deleted file mode 100644
index f6ebb029f1..0000000000
--- a/multimedia/gecko-mediaplayer/gecko-mediaplayer.SlackBuild
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for gecko-mediaplayer
-# Written by Phillip Warner <pc_warner@yahoo.com>
-
-PRGNAM=gecko-mediaplayer
-VERSION=${VERSION:-1.0.8}
-BUILD=${BUILD:-2}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686 -std=c++11"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686 -std=c++11"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC -std=c++11"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2 -std=c++11"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 \
- -o -perm 400 \) -exec chmod 644 {} \;
-
-# Fix for -current (20150722 dbs)
-# This patch comes from Debian's 1.0.9-2 package (thanks!)
-patch -p1 < $CWD/np_loadds.patch
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --disable-schemas-install \
- --build=$ARCH-slackware-linux
-
-make libdir=/usr/lib${LIBDIRSUFFIX} force_arch="$ARCH"
-make libdir=/usr/lib${LIBDIRSUFFIX} DESTDIR=$PKG install
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/gecko-mediaplayer/gecko-mediaplayer.info b/multimedia/gecko-mediaplayer/gecko-mediaplayer.info
deleted file mode 100644
index 190ce75cb6..0000000000
--- a/multimedia/gecko-mediaplayer/gecko-mediaplayer.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="gecko-mediaplayer"
-VERSION="1.0.8"
-HOMEPAGE="http://sites.google.com/site/kdekorte2/gecko-mediaplayer"
-DOWNLOAD="https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/gecko-mediaplayer/gecko-mediaplayer-1.0.8.tar.gz"
-MD5SUM="d13303664fcbb7f3b1273be4b1aa1b1e"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="gnome-mplayer"
-MAINTAINER="Phillip Warner"
-EMAIL="pc_warner@yahoo.com"
diff --git a/multimedia/gecko-mediaplayer/np_loadds.patch b/multimedia/gecko-mediaplayer/np_loadds.patch
deleted file mode 100644
index de406963fa..0000000000
--- a/multimedia/gecko-mediaplayer/np_loadds.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Description: Define NP_LOADDS if it doesn't exist
-Author: Sebastian Ramacher <sramacher@debian.org>
-Last-Update: 2014-06-14
-
---- gecko-mediaplayer-1.0.9.orig/src/npupp.h
-+++ gecko-mediaplayer-1.0.9/src/npupp.h
-@@ -63,6 +63,9 @@
-
- #include "npruntime.h"
-
-+#ifndef NP_LOADDS
-+#define NP_LOADDS
-+#endif
-
- /******************************************************************************************
- plug-in function table macros
diff --git a/multimedia/gecko-mediaplayer/slack-desc b/multimedia/gecko-mediaplayer/slack-desc
deleted file mode 100644
index 0a7ca16280..0000000000
--- a/multimedia/gecko-mediaplayer/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-gecko-mediaplayer: gecko-mediaplayer (Browser media plugin)
-gecko-mediaplayer:
-gecko-mediaplayer: Gecko Mediaplayer is the modern replacement for mplayerplug-in.
-gecko-mediaplayer: It is a browser plugin that uses GNOME MPlayer to play media in a
-gecko-mediaplayer: browser.
-gecko-mediaplayer:
-gecko-mediaplayer: Homepage: http://sites.google.com/site/kdekorte2/gecko-mediaplayer
-gecko-mediaplayer:
-gecko-mediaplayer:
-gecko-mediaplayer:
-gecko-mediaplayer:
diff --git a/multimedia/genpuid/README b/multimedia/genpuid/README
index 31c55172b0..62ca597351 100644
--- a/multimedia/genpuid/README
+++ b/multimedia/genpuid/README
@@ -1,12 +1,13 @@
-GenPUID is a MusicIP (now known as AmpliFIND Music Services) proprietary closed
-source command line utility for performing music analysis and audio
-fingerprinting of music files. GenPUID runs under Linux, Mac OS X, and Windows.
+GenPUID is a MusicIP (now known as AmpliFIND Music Services)
+proprietary closed source command line utility for performing music
+analysis and audio fingerprinting of music files. GenPUID runs under
+Linux, Mac OS X, and Windows.
-If MusicBrainz Picard can not find a PUID for a file, it may need to be run
-through GenPUID to be analyzed first.
+If MusicBrainz Picard can not find a PUID for a file, it may need to
+be run through GenPUID to be analyzed first.
-Having problems with Unicode files?
-Instead of using genpuid dns-key * to scan Unicode files you will need to use
-genpuid dns-key -r . as a workaround.
+Having problems with Unicode filenames?
+Instead of using 'genpuid dns-key *' to scan Unicode files, use
+'genpuid dns-key -r .' as a workaround.
-This only works on x86 there are no x86_64 binaries.
+This only works on x86: there are no x86_64 binaries.
diff --git a/multimedia/genpuid/genpuid.SlackBuild b/multimedia/genpuid/genpuid.SlackBuild
index e6f29dd4cc..f097c7f61c 100644
--- a/multimedia/genpuid/genpuid.SlackBuild
+++ b/multimedia/genpuid/genpuid.SlackBuild
@@ -1,12 +1,15 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <genpuid>
#
# Michales - clavisound - Michaloudes korgie@gmail.com <2012>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=genpuid
VERSION=${VERSION:-1.4}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -16,7 +19,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -63,4 +73,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/get_iplayer/get_iplayer.SlackBuild b/multimedia/get_iplayer/get_iplayer.SlackBuild
index 508e68a30d..ce9c5b103a 100644
--- a/multimedia/get_iplayer/get_iplayer.SlackBuild
+++ b/multimedia/get_iplayer/get_iplayer.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for get_iplayer.
#
-# Copyright 2011 Gregory J. L. Tourte <artourter@gmail.com>
+# Copyright 2012-2023 Gregory J. L. Tourte <artourter@gmail.com>
# Copyright 2012 Pierre Cazenave <pwcazenave {at} gmail [dot] com>
# All rights reserved.
#
@@ -23,14 +23,24 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=get_iplayer
-VERSION=${VERSION:-3.25}
+VERSION=${VERSION:-3.34}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
ARCH=noarch
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -45,10 +55,8 @@ tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} +
mkdir -p $PKG/usr/bin
install -m 755 get_iplayer $PKG/usr/bin
@@ -72,4 +80,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/get_iplayer/get_iplayer.info b/multimedia/get_iplayer/get_iplayer.info
index 6c5b02e54c..df82d63878 100644
--- a/multimedia/get_iplayer/get_iplayer.info
+++ b/multimedia/get_iplayer/get_iplayer.info
@@ -1,10 +1,10 @@
PRGNAM="get_iplayer"
-VERSION="3.25"
+VERSION="3.34"
HOMEPAGE="http://www.infradead.org/get_iplayer/html/get_iplayer.html"
-DOWNLOAD="https://github.com/get-iplayer/get_iplayer/archive/v3.25/get_iplayer-3.25.tar.gz"
-MD5SUM="6c9a2b1b138ffc5b69ee4ecaa76d62d1"
+DOWNLOAD="https://github.com/get-iplayer/get_iplayer/archive/v3.34/get_iplayer-3.34.tar.gz"
+MD5SUM="b57588277b2f60b2f165157fbc5d45c7"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg perl-LWP-Protocol-https perl-JSON perl-xml-libxml perl-Mojolicious AtomicParsley"
+REQUIRES="perl-LWP-Protocol-https perl-JSON perl-xml-libxml perl-Mojolicious AtomicParsley"
MAINTAINER="ArTourter"
EMAIL="artourter@gmail.com"
diff --git a/multimedia/gigedit/gigedit.SlackBuild b/multimedia/gigedit/gigedit.SlackBuild
index a8ef3a0771..9dcaa44a0e 100644
--- a/multimedia/gigedit/gigedit.SlackBuild
+++ b/multimedia/gigedit/gigedit.SlackBuild
@@ -1,28 +1,38 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <gigedit>
# Written by Michales Michaloudes korgie@gmail.com
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=gigedit
VERSION=${VERSION:-0.2.0}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -81,4 +91,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gimp-gap/README b/multimedia/gimp-gap/README
index 230cfdbc88..6ae6be22a6 100644
--- a/multimedia/gimp-gap/README
+++ b/multimedia/gimp-gap/README
@@ -5,14 +5,11 @@ animations as sequences of single frames.
By default, the script will try to detect all optional requirements.
In case you don't have those requirements, you can disable it by
passing variables to the script (VAR=yes/no ./gimp-gap.SlackBuild):
-LAME=yes|no (default: yes), requires lame
FAAC=yes|no (default: yes), requires faac
FAAD=yes|no (default: yes), requires faad2
X264=yes|no (default: yes), requires x264
-AVFORMAT=yes|no (default: yes), requires ffmpeg
MPEG=yes|no (default: yes), requires libmpeg
XVID=yes|no (default: yes), requires xvidcore
-NOTE: If you build this package using internal ffmpeg package and
-using texlive instead of tetex, you need to remove the "#"
-character in line 106
+NOTE: If you build this package using internal ffmpeg package,
+you need to remove the "#" character in line 102
diff --git a/multimedia/gimp-gap/gimp-gap.SlackBuild b/multimedia/gimp-gap/gimp-gap.SlackBuild
index 29e6c672a2..e6218d5827 100644
--- a/multimedia/gimp-gap/gimp-gap.SlackBuild
+++ b/multimedia/gimp-gap/gimp-gap.SlackBuild
@@ -1,4 +1,5 @@
-#!/bin/sh
+#!/bin/bash
+
# Slackware build script for gimp-gap
# Copyright 2010-2012 Willy Sudiarto Raharjo <willysr@slackware-id.org>
@@ -19,13 +20,13 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# ChangeLog
-# August, 1: Added LIBS="-lm" to compile
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=gimp-gap
VERSION=${VERSION:-2.6.0}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +36,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -58,11 +66,9 @@ DOCS="AUTHORS COPYING ChangeLog INSTALL NEWS README \
docs/howto/txt/HOWTO-do-lossless-MPEG-cut.txt \
docs/howto/txt/HOWTO-write-animated-plug-ins.txt"
-mp3lame="" ; [ "${LAME:-yes}" != "yes" ] && mp3lame="--disable-ff-libmp3lame"
libfaac="" ; [ "${FAAC:-yes}" != "yes" ] && libfaac="--disable-ff-libfaac"
libfaad="" ; [ "${FAAD:-yes}" != "yes" ] && libfaad="--disable-ff-libfaad"
libx264="" ; [ "${X264:-yes}" != "yes" ] && libx264="--disable-ff-libx264"
-libavformat="" ; [ "${AVFORMAT:-yes}" != "yes" ] && libavformat="--disable-libavformat"
libmpeg="" ; [ "${MPEG:-yes}" != "yes" ] && libmpeg="--disable-libmpeg3"
libxvid="" ; [ "${XVID:-yes}" != "yes" ] && libxvid="--disable-libxvidcore"
@@ -91,11 +97,9 @@ CXXFLAGS="$SLKCFLAGS" \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--disable-audio-support \
- $mp3lame \
$libfaac \
$libfaad \
$libx264 \
- $libavformat \
$libmpeg \
$libxvid \
--build=$ARCH-slackware-linux \
@@ -120,4 +124,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/glyr/README b/multimedia/glyr/README
index e37dad82d0..b3f085d3b6 100644
--- a/multimedia/glyr/README
+++ b/multimedia/glyr/README
@@ -1,3 +1,4 @@
-Glyr is a search engine for music related metadata.
-It comes in a commandline interface (glyrc) as well
-as a library (libglyr).
+glyr (a search engine for music related metadata)
+
+Glyr is a search engine for music related metadata. It comes in a
+commandline interface (glyrc) as well as a library (libglyr).
diff --git a/multimedia/glyr/glyr.SlackBuild b/multimedia/glyr/glyr.SlackBuild
index aad64c7006..5fcf893946 100644
--- a/multimedia/glyr/glyr.SlackBuild
+++ b/multimedia/glyr/glyr.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for glyr
@@ -22,7 +22,7 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# Now maintained by B. Watson <yalhcru@gmail.com>
+# Now maintained by B. Watson <urchlay@slackware.uk>
# 20180904 bkw: BUILD=2, fix lyricswiki
# 20170302 bkw: use long-format github URL
@@ -38,10 +38,13 @@
# - add missing docs
# - make install/strip
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=glyr
VERSION=${VERSION:-1.0.10}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -51,7 +54,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -117,4 +124,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/glyr/glyr.info b/multimedia/glyr/glyr.info
index e676437483..79fc857963 100644
--- a/multimedia/glyr/glyr.info
+++ b/multimedia/glyr/glyr.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/gmidimonitor/README b/multimedia/gmidimonitor/README
index 58612c98e1..13fa7f3b95 100644
--- a/multimedia/gmidimonitor/README
+++ b/multimedia/gmidimonitor/README
@@ -1,3 +1,4 @@
-GMIDImonitor is GTK+ application that shows MIDI events via ALSA or JACK.
+GMIDImonitor is GTK+ application that shows MIDI events via ALSA or
+JACK.
Optional dependencies: jack, lash
diff --git a/multimedia/gmidimonitor/gmidimonitor.SlackBuild b/multimedia/gmidimonitor/gmidimonitor.SlackBuild
index acfb86b5bc..0cfcd90a56 100644
--- a/multimedia/gmidimonitor/gmidimonitor.SlackBuild
+++ b/multimedia/gmidimonitor/gmidimonitor.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <gmidimonitor>
#
# Copyright 2011 Michales - clavisound - Michaloudes korgie@gmail.com
@@ -21,10 +21,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=gmidimonitor
VERSION=${VERSION:-3.6}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -34,7 +37,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -99,4 +109,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gmtp/README b/multimedia/gmtp/README
index 004b92a906..4f6e7c6e8d 100644
--- a/multimedia/gmtp/README
+++ b/multimedia/gmtp/README
@@ -4,13 +4,14 @@ Supports MTP devices including those with multiple storage devices
(typically mobile phones). Supports Drag'n'Drop interface for
upload/download of files.
-This Doesnt pick up my Device(Droid Ultra) as normal user, so I use gksu
-to launch it and it works great. Xfsudo works as well. It may or may not
-detect your device as normal user, I have no idea and I make no promises.
+This doesn't pick up my device (Droid Ultra) as a normal user, so I
+use gksu to launch it and it works great. Xfsudo works as well. It may
+or may not detect your device as a normal user, I have no idea and I
+make no promises.
This package is built with gtk2 but the default is gtk3,
if you would like gtk3, simply delete or comment out the line
---with-gtk2
+ --with-gtk2
from within the SlackBuild script under the configure flags.
There is a FAQ inside the source tarball in the README.
diff --git a/multimedia/gmtp/gmtp.SlackBuild b/multimedia/gmtp/gmtp.SlackBuild
index b572deae0d..7dc3a05def 100644
--- a/multimedia/gmtp/gmtp.SlackBuild
+++ b/multimedia/gmtp/gmtp.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Generated by Alien's SlackBuild Toolkit: http://slackware.com/~alien/AST
# Copyright 2009, 2010, 2011, 2012, 2013, 2014 Eric Hameleers, Eindhoven, Netherlands
@@ -28,10 +28,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=gmtp
VERSION=${VERSION:-1.3.11}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -41,7 +44,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -75,6 +85,7 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+SLKCFLAGS+=" -fcommon"
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -104,4 +115,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gnash/README b/multimedia/gnash/README
index 8b184d97eb..8f15693bf8 100644
--- a/multimedia/gnash/README
+++ b/multimedia/gnash/README
@@ -1,9 +1,7 @@
Gnash is the GNU SWF movie player, which can be run standalone on the
-desktop or an embedded device, as well as as a plugin for several browsers.
+desktop or an embedded device, as well as a plugin for several browsers.
-If you don't want to compile it or if you don't have KDE installed,
-you can disable the Konqueror plugin ("Klash") like this:
- KLASH=no ./gnash.SlackBuild
+Plugins are now disabled by default due to browsers removing support.
-Optional but recommended dependencies are speex, gst0-ffmpeg,
-and gst0-plugins-ugly.
+Optional but recommended deps are gst0-ffmpeg and gst0-plugins-ugly.
+Another optional dependency is qt4.
diff --git a/multimedia/gnash/doinst.sh b/multimedia/gnash/doinst.sh
index 80505ba966..f33553f39b 100644
--- a/multimedia/gnash/doinst.sh
+++ b/multimedia/gnash/doinst.sh
@@ -11,9 +11,18 @@ config() {
# Otherwise, we leave the .new copy for the admin to consider...
}
+schema_install() {
+ SCHEMA="$1"
+ GCONF_CONFIG_SOURCE="xml::etc/gconf/gconf.xml.defaults" \
+ chroot . gconftool-2 --makefile-install-rule \
+ /etc/gconf/schemas/$SCHEMA \
+ 1>/dev/null
+}
+
config etc/gnashpluginrc.new
config etc/gnashthumbnailrc.new
config etc/gnashrc.new
+schema_install gnash.schemas
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
diff --git a/multimedia/gnash/gnash.SlackBuild b/multimedia/gnash/gnash.SlackBuild
index 99a4c07c84..f39d2ffaad 100644
--- a/multimedia/gnash/gnash.SlackBuild
+++ b/multimedia/gnash/gnash.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for gnash
-# Copyright 2012-2016 Kyle Guinn <elyk03@gmail.com>, USA
+# Copyright 2012-2022 Kyle Guinn <elyk03@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=gnash
-VERSION=${VERSION:-0.8.10}
-BUILD=${BUILD:-7}
+VERSION=${VERSION:-0.8.11dev_20190130}
+SRCVER=${SRCVER:-583ccbc1275c7701dc4843ec12142ff86bb305b4}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$(uname -m)" in
@@ -35,17 +39,18 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-DOCS="ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS README* TODO"
+DOCS="AUTHORS COPYING ChangeLog NEWS README* TODO"
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i586" ]; then
+if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
@@ -59,17 +64,25 @@ else
LIBDIRSUFFIX=""
fi
-# Set $KLASH to "no" to disable Klash, the Konqueror plugin.
-if [ "${KLASH:-yes}" = "yes" ]; then
- KLASH_OPT="\
- --with-kde4-incl=/usr/include \
- --with-kde4-configdir=/usr/share/config \
+# TODO: Test the KPARTS3 plugin with KDE3/Trinity.
+if [ "${KPARTS3:-no}" != "no" ]; then
+ KPARTS3_OPT=""
+else
+ KPARTS3_OPT="--disable-kparts3"
+fi
+
+# Set $KPARTS4 to "yes" to enable the KDE4 Konqueror plugin.
+if [ "${KPARTS4:-no}" != "no" ]; then
+ KPARTS4_OPT=" \
--with-kde4-prefix=/usr \
+ --with-kde4-incl=/usr/include \
--with-kde4-lib=/usr/lib${LIBDIRSUFFIX} \
- --with-kde-appsdatadir=/usr/share/apps/klash \
- --with-kde4-servicesdir=/usr/share/kde4/services"
+ --with-kde4-plugindir=/usr/lib${LIBDIRSUFFIX}/kde4 \
+ --with-kde4-servicesdir=/usr/share/kde4/services \
+ --with-kde4-configdir=/usr/share/config \
+ --with-kde-appsdatadir=/usr/share/apps/klash"
else
- KLASH_OPT="--disable-kparts3 --disable-kparts4"
+ KPARTS4_OPT="--disable-kparts4"
fi
set -e
@@ -77,33 +90,27 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM-$SRCVER
+tar xvf $CWD/$PRGNAM-$SRCVER.tar.gz
+cd $PRGNAM-$SRCVER
chown -R root:root .
chmod -R u+w,go-w,a+rX-st .
-# Fix compilation with GCC 4.7.
-patch -p1 < $CWD/patch/gcc47.patch
-
-# Fix a boost linking error, paths for kde plugin, and a cve patch.
-# Ripped from gentoo
-patch -p1 < $CWD/patch/gnash-0.8.10-boost-1.50.patch
-patch -p1 < $CWD/patch/gnash-0.8.10-klash.patch
-patch -p1 < $CWD/patch/gnash-0.8.10-kde4-libdir.patch
-patch -p1 < $CWD/patch/gnash-0.8.10-cve-2012-1175.patch
+# jemalloc(3) wants <jemalloc/jemalloc.h>, not <jemalloc.h>
+sed -i 's|jemalloc.h|jemalloc/jemalloc.h|' \
+ libbase/jemalloc_gnash.c \
+ configure.ac
-# Fix building with giflib-5.0
-# Also ripped from gentoo :-)
-patch -p1 < $CWD/patch/58dcdd9338d965e54c8f03ce3d2757388d82b7a3.patch
-patch -p1 < $CWD/patch/cc22f2d0597f3a9547980f4786d918f8b5635472.patch
+# Fix giflib version check for API change
+sed -i 's|GIFLIB_MINOR==1|GIFLIB_MINOR>=1|' \
+ libbase/GnashImageGif.cpp
-# Fix build with new Boost
-# Taken from ARCH
-patch -p1 < $CWD/patch/gnash-boost.patch
+# Consider using --enable-media=... to disable ffmpeg
+# if this isn't sufficient for compatibility with latest ffmpeg
+sed -i 's|FF_INPUT_BUFFER_PADDING_SIZE|AV_INPUT_BUFFER_PADDING_SIZE|' \
+ libmedia/ffmpeg/MediaHandlerFfmpeg.cpp \
+ libmedia/ffmpeg/MediaParserFfmpeg.cpp
-# The FFmpeg engine doesn't compile with FFmpeg 0.11.1. Patches welcome.
-# In the meantime, set --enable-media=gst to avoid autodetecting FFmpeg.
autoreconf -vif
./configure \
--prefix=/usr \
@@ -115,17 +122,16 @@ autoreconf -vif
--docdir=/usr/doc/$PRGNAM-$VERSION \
--build=$ARCH-slackware-linux \
--disable-dependency-tracking \
- --enable-media=gst \
--enable-python \
--enable-ssh \
--enable-ssl \
- --enable-write \
--without-gconf \
--with-plugins-install=system \
- --with-speexdsp-incl=/usr/include/speex \
- $KLASH_OPT \
+ --disable-npapi \
+ $KPARTS3_OPT \
+ $KPARTS4_OPT \
CFLAGS="$SLKCFLAGS" \
- CXXFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS -std=c++14" \
make
make install-strip install-plugins DESTDIR=$PKG
@@ -139,6 +145,9 @@ find $PKG/usr/lib${LIBDIRSUFFIX} -name '*.la' -delete
find $PKG/etc -type f -exec mv {} {}.new \;
find $PKG/usr/man -type f -exec gzip -9 {} +
+mkdir -p $PKG/etc/gconf/schemas
+mv $PKG/usr/share/applications/gnash.schemas $PKG/etc/gconf/schemas
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -148,4 +157,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gnash/gnash.info b/multimedia/gnash/gnash.info
index 012dd88c5f..88f8057581 100644
--- a/multimedia/gnash/gnash.info
+++ b/multimedia/gnash/gnash.info
@@ -1,10 +1,10 @@
PRGNAM="gnash"
-VERSION="0.8.10"
+VERSION="0.8.11dev_20190130"
HOMEPAGE="https://www.gnu.org/software/gnash/"
-DOWNLOAD="ftp://ftp.gnu.org/pub/gnu/gnash/0.8.10/gnash-0.8.10.tar.bz2"
-MD5SUM="63e9f79c41d93d48c5a2fa94856548c4"
+DOWNLOAD="https://git.savannah.gnu.org/cgit/gnash.git/snapshot/gnash-583ccbc1275c7701dc4843ec12142ff86bb305b4.tar.gz"
+MD5SUM="44dec2747ea79fd6bd68a58dc8512821"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="agg xulrunner"
+REQUIRES="agg gst0-plugins-base"
MAINTAINER="Kyle Guinn"
EMAIL="elyk03@gmail.com"
diff --git a/multimedia/gnash/patch/58dcdd9338d965e54c8f03ce3d2757388d82b7a3.patch b/multimedia/gnash/patch/58dcdd9338d965e54c8f03ce3d2757388d82b7a3.patch
deleted file mode 100644
index b3242ce0d3..0000000000
--- a/multimedia/gnash/patch/58dcdd9338d965e54c8f03ce3d2757388d82b7a3.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 58dcdd9338d965e54c8f03ce3d2757388d82b7a3 Mon Sep 17 00:00:00 2001
-From: gustavo <gbuschle@hotmail.com>
-Date: Thu, 11 Sep 2014 14:12:17 +0000
-Subject: Add support for giflib 5.1
-
----
-diff --git a/libbase/GnashImageGif.cpp b/libbase/GnashImageGif.cpp
-index 84b09ce..2ae5ddb 100644
---- a/libbase/GnashImageGif.cpp
-+++ b/libbase/GnashImageGif.cpp
-@@ -120,7 +120,11 @@ GifInput::GifInput(std::shared_ptr<IOChannel> in)
- GifInput::~GifInput()
- {
- // Clean up allocated data.
-- DGifCloseFile(_gif);
-+#if GIFLIB_MAJOR==5 && GIFLIB_MINOR==1
-+ DGifCloseFile(_gif, 0);
-+#else
-+ DGifCloseFile(_gif);
-+#endif
- }
-
- size_t
---
-cgit v0.9.0.2
diff --git a/multimedia/gnash/patch/cc22f2d0597f3a9547980f4786d918f8b5635472.patch b/multimedia/gnash/patch/cc22f2d0597f3a9547980f4786d918f8b5635472.patch
deleted file mode 100644
index 6e90737d51..0000000000
--- a/multimedia/gnash/patch/cc22f2d0597f3a9547980f4786d918f8b5635472.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From cc22f2d0597f3a9547980f4786d918f8b5635472 Mon Sep 17 00:00:00 2001
-From: OBATA Akio <obata@lins.jp>
-Date: Mon, 15 Jul 2013 07:16:39 +0000
-Subject: Add support fir GIFLIB-5.0 (bug #39482)
-
-Signed-off-by: Sandro Santilli <strk@keybit.net>
----
-diff --git a/libbase/GnashImageGif.cpp b/libbase/GnashImageGif.cpp
-index eeba4b7..26865c1 100644
---- a/libbase/GnashImageGif.cpp
-+++ b/libbase/GnashImageGif.cpp
-@@ -269,7 +269,17 @@ GifInput::processRecord(GifRecordType record)
- void
- GifInput::read()
- {
-+#if GIFLIB_MAJOR >= 5
-+ int errorCode;
-+ _gif = DGifOpen(_inStream.get(), &readData, &errorCode);
-+#else
- _gif = DGifOpen(_inStream.get(), &readData);
-+#endif
-+
-+ if ( ! _gif ) {
-+ // TODO: decode errorCode if available
-+ throw ParserException("Could not open input GIF stream");
-+ }
-
- GifRecordType record;
-
---
-cgit v0.9.0.2
diff --git a/multimedia/gnash/patch/gcc47.patch b/multimedia/gnash/patch/gcc47.patch
deleted file mode 100644
index 7886b097c9..0000000000
--- a/multimedia/gnash/patch/gcc47.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/plugin/klash4/klash_part.cpp b/plugin/klash4/klash_part.cpp
---- a/plugin/klash4/klash_part.cpp
-+++ b/plugin/klash4/klash_part.cpp
-@@ -27,6 +27,7 @@
- #include <QByteArray>
- #include <QMenu>
- #include <QTimer>
-+#include <unistd.h>
-
- #include <klibloader.h>
- #include <kdebug.h>
diff --git a/multimedia/gnash/patch/gnash-0.8.10-boost-1.50.patch b/multimedia/gnash/patch/gnash-0.8.10-boost-1.50.patch
deleted file mode 100644
index 23282d1e89..0000000000
--- a/multimedia/gnash/patch/gnash-0.8.10-boost-1.50.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ur a/macros/boost.m4 b/macros/boost.m4
---- a/macros/boost.m4 2012-09-03 17:11:43.000000000 +0200
-+++ b/macros/boost.m4 2012-10-16 01:58:28.000000000 +0200
-@@ -37,7 +37,7 @@
- boost_headers="detail/lightweight_mutex.hpp thread/thread.hpp multi_index_container.hpp multi_index/key_extractors.hpp thread/mutex.hpp program_options/options_description.hpp iostreams/stream.hpp"
- dnl this is a list of *required* libraries. If any of these are missing, this
- dnl test will return a failure, and Gnash won't build.
-- boost_libs="thread program_options iostreams"
-+ boost_libs="thread program_options iostreams system"
-
- dnl this is a list of *recommended* libraries. If any of these are missing, this
- dnl test will return a warning, and Gnash will build, but testing won't work.
-diff -ur a/plugin/npapi/Makefile.am b/plugin/npapi/Makefile.am
---- a/plugin/npapi/Makefile.am 2012-09-03 17:11:43.000000000 +0200
-+++ b/plugin/npapi/Makefile.am 2012-10-16 01:58:57.000000000 +0200
-@@ -78,7 +78,7 @@
-
- libgnashplugin_la_LIBADD = \
- $(GLIB_LIBS) \
-- -lboost_iostreams \
-+ $(BOOST_LIBS) \
- $(NULL)
-
- # Scriptable plugin support
diff --git a/multimedia/gnash/patch/gnash-0.8.10-cve-2012-1175.patch b/multimedia/gnash/patch/gnash-0.8.10-cve-2012-1175.patch
deleted file mode 100644
index 9a218d9216..0000000000
--- a/multimedia/gnash/patch/gnash-0.8.10-cve-2012-1175.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From bb4dc77eecb6ed1b967e3ecbce3dac6c5e6f1527 Mon Sep 17 00:00:00 2001
-From: Benjamin Wolsey <bwy@benjaminwolsey.de>
-Date: Sat, 10 Mar 2012 14:52:50 +0000
-Subject: Fix crash in GnashImage.cpp
-
----
-diff --git a/libbase/GnashImage.cpp b/libbase/GnashImage.cpp
-index 11c6956..03a6939 100644
---- a/libbase/GnashImage.cpp
-+++ b/libbase/GnashImage.cpp
-@@ -26,6 +26,7 @@
- #include <boost/scoped_array.hpp>
- #include <boost/shared_ptr.hpp>
- #include <algorithm>
-+#include <cassert>
-
- #ifdef USE_PNG
- # include "GnashImagePng.h"
-@@ -44,6 +45,21 @@ namespace image {
-
- namespace {
- void processAlpha(GnashImage::iterator imageData, size_t pixels);
-+ bool checkValidSize(size_t width, size_t height, size_t channels) {
-+
-+ if (width == 0 || height == 0) return false;
-+
-+ assert(channels > 0);
-+
-+ boost::uint32_t maxSize = std::numeric_limits<boost::int32_t>::max();
-+ if (width >= maxSize || height >= maxSize) return false;
-+
-+ maxSize /= channels;
-+ maxSize /= width;
-+ maxSize /= height;
-+
-+ return maxSize > 0;
-+ }
- }
-
- GnashImage::GnashImage(iterator data, size_t width, size_t height,
-@@ -55,6 +71,8 @@ GnashImage::GnashImage(iterator data, size_t width, size_t height,
- _height(height),
- _data(data)
- {
-+ // Callers should check dimensions
-+ assert(checkValidSize(_width, _height, channels()));
- }
-
- /// Create an image allocating a buffer of height*pitch bytes
-@@ -66,8 +84,9 @@ GnashImage::GnashImage(size_t width, size_t height, ImageType type,
- _width(width),
- _height(height)
- {
-- const size_t max = std::numeric_limits<boost::int32_t>::max();
-- if (size() > max) {
-+ // Constructed from external input, so restrict dimensions to avoid
-+ // overflow in size calculations
-+ if (!checkValidSize(_width, _height, channels())) {
- throw std::bad_alloc();
- }
- _data.reset(new value_type[size()]);
---
-cgit v0.9.0.2
diff --git a/multimedia/gnash/patch/gnash-0.8.10-kde4-libdir.patch b/multimedia/gnash/patch/gnash-0.8.10-kde4-libdir.patch
deleted file mode 100644
index b3279441d2..0000000000
--- a/multimedia/gnash/patch/gnash-0.8.10-kde4-libdir.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur a/macros/kde4.m4 b/macros/kde4.m4
---- a/macros/kde4.m4 2011-02-26 19:11:08.000000000 +0100
-+++ b/macros/kde4.m4 2011-11-25 18:09:25.000000000 +0100
-@@ -198,7 +198,7 @@
- if test -d ${KDE4_PREFIX}/lib64 -a -f /etc/redhat-release; then
- KDE4_PLUGINDIR="${KDE4_PREFIX}/lib64/kde4"
- else
-- KDE4_PLUGINDIR="${KDE4_PREFIX}/lib/kde4"
-+ KDE4_PLUGINDIR="${KDE4_PREFIX}/${acl_libdirstem}/kde4"
- fi
- fi
- if test x"${with_kde4_servicesdir}" != x ; then
diff --git a/multimedia/gnash/patch/gnash-0.8.10-klash.patch b/multimedia/gnash/patch/gnash-0.8.10-klash.patch
deleted file mode 100644
index e6afec04d2..0000000000
--- a/multimedia/gnash/patch/gnash-0.8.10-klash.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur a/macros/kde4.m4 b/macros/kde4.m4
---- a/macros/kde4.m4 2011-02-26 19:11:08.000000000 +0100
-+++ b/macros/kde4.m4 2011-03-21 00:04:38.845997945 +0100
-@@ -210,7 +210,7 @@
- KDE4_CONFIGDIR="${KDE4_PREFIX}/share/kde4/config"
- fi
- if test x"${KDE4_APPSDATADIR}" = x ; then
-- KDE4_APPSDATADIR="${KDE4_PREFIX}/share/kde4/apps/klash"
-+ KDE4_APPSDATADIR="${KDE4_PREFIX}/share/apps/klash"
- fi
-
- if test x"${ac_cv_path_kde4_incl}" != x ; then
diff --git a/multimedia/gnash/patch/gnash-boost.patch b/multimedia/gnash/patch/gnash-boost.patch
deleted file mode 100644
index 55208f1ae3..0000000000
--- a/multimedia/gnash/patch/gnash-boost.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- gnash-0.8.10/libbase/accumulator.h.orig 2016-02-08 02:56:17.059694787 +0700
-+++ gnash-0.8.10/libbase/accumulator.h 2016-02-08 02:57:58.375615249 +0700
-@@ -61,6 +61,11 @@
- virtual unsigned min_tokens() const { return 0; }
- virtual unsigned max_tokens() const { return 0; }
-
-+ #if BOOST_VERSION >= 105900
-+ /// There are no tokens, so this is indifferent.
-+ virtual bool adjacent_tokens_only() const { return false; }
-+ #endif
-+
- /// Accumulating from different sources is silly.
- virtual bool is_composing() const { return false; }
-
diff --git a/multimedia/gnome-mplayer/README b/multimedia/gnome-mplayer/README
index d058d941a4..227c9b604e 100644
--- a/multimedia/gnome-mplayer/README
+++ b/multimedia/gnome-mplayer/README
@@ -1,22 +1,22 @@
-A GTK2/GTK3 interface to MPlayer. The power of MPlayer combined with a
-friendly interface for your desktop; You can play all your multimedia
-(audio, video, CD, DVDs, and VCDs, streams etc.), organize, sort and
-create playlists, take screenshots while playing videos, be notified
-about media changes. Full DVD and MKV chapter support, when supported by
-Mplayer. Subtitle support with the ability to specify preferred audio
-and subtitle languages if the media supports it. Support for cover art
-retrieval from Amazon.com for audio media files with artist and/or album
-information contained in the file.
+A GTK2/GTK3 interface to MPlayer. The power of MPlayer combined with a
+friendly interface for your desktop; You can play all your multimedia
+(audio, video, CD, DVDs, and VCDs, streams etc.), organize, sort and
+create playlists, take screenshots while playing videos, be notified
+about media changes. Full DVD and MKV chapter support, when supported
+by Mplayer. Subtitle support with the ability to specify preferred
+audio and subtitle languages if the media supports it. Support for
+cover art retrieval from Amazon.com for audio media files with artist
+and/or album information contained in the file.
-The player can be used to play media on websites from your browser when
-used with Gecko Mediaplayer and is the modern replacement for the
+The player can be used to play media on websites from your browser
+when used with Gecko Mediaplayer and is the modern replacement for the
mplayerplug-in application.
Gnome MPlayer has a rich API that is exposed via DBus. Using DBus you
can control a single or multiple instances of GNOME MPlayer from a
single command.
-Gnome MPlayer is not dependent on any Gnome libraries. However, the look
-and feel of the application is based on the Gnome HIG.
+Gnome MPlayer is not dependent on any Gnome libraries. However, the
+look and feel of the application is based on the Gnome HIG.
libmusicbrainz3 is an optional dependency.
diff --git a/multimedia/gnome-mplayer/gnome-mplayer.SlackBuild b/multimedia/gnome-mplayer/gnome-mplayer.SlackBuild
index a829ee7db2..b1af974558 100644
--- a/multimedia/gnome-mplayer/gnome-mplayer.SlackBuild
+++ b/multimedia/gnome-mplayer/gnome-mplayer.SlackBuild
@@ -1,28 +1,38 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for gnome-mplayer
# Written by Phillip Warner <pc_warner@yahoo.com>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=gnome-mplayer
VERSION=${VERSION:-1.0.8}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -50,7 +60,7 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 \
-o -perm 400 \) -exec chmod 644 {} \;
-CFLAGS="$SLKCFLAGS" \
+CFLAGS="$SLKCFLAGS -fcommon" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
@@ -76,4 +86,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gnome-video-effects/README b/multimedia/gnome-video-effects/README
new file mode 100644
index 0000000000..0f4d038c7c
--- /dev/null
+++ b/multimedia/gnome-video-effects/README
@@ -0,0 +1,3 @@
+gnome-video-effects provides video effects for use in GNOME's webcam
+application called "cheese".
+
diff --git a/multimedia/gnome-video-effects/gnome-video-effects.SlackBuild b/multimedia/gnome-video-effects/gnome-video-effects.SlackBuild
new file mode 100644
index 0000000000..5168276249
--- /dev/null
+++ b/multimedia/gnome-video-effects/gnome-video-effects.SlackBuild
@@ -0,0 +1,92 @@
+#!/bin/bash
+
+# Slackware build script for gnome-video-effects
+
+# Copyright 2023, Bob Funk, Winnipeg Canada
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=gnome-video-effects
+VERSION=${VERSION:-0.5.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+ARCH=noarch
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+SLKCFLAGS="-O2"
+LIBDIRSUFFIX=""
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir build
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ -Dstrip=true
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog NEWS README \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gnome-video-effects/gnome-video-effects.info b/multimedia/gnome-video-effects/gnome-video-effects.info
new file mode 100644
index 0000000000..f34e1a2c1d
--- /dev/null
+++ b/multimedia/gnome-video-effects/gnome-video-effects.info
@@ -0,0 +1,10 @@
+PRGNAM="gnome-video-effects"
+VERSION="0.5.0"
+HOMEPAGE="https://gitlab.gnome.org/GNOME/gnome-video-effects"
+DOWNLOAD="https://download.gnome.org/sources/gnome-video-effects/0.5/gnome-video-effects-0.5.0.tar.xz"
+MD5SUM="0c81bfafa7fc5c88cb0834d0026ad001"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Bob Funk"
+EMAIL="bobfunk11@gmail.com"
diff --git a/multimedia/gnome-video-effects/slack-desc b/multimedia/gnome-video-effects/slack-desc
new file mode 100644
index 0000000000..3b82134d42
--- /dev/null
+++ b/multimedia/gnome-video-effects/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+gnome-video-effects: gnome-video-effects (Video Effects for GNOME Cheese)
+gnome-video-effects:
+gnome-video-effects: A collection of video effects for GNOME's Cheese application.
+gnome-video-effects:
+gnome-video-effects:
+gnome-video-effects:
+gnome-video-effects:
+gnome-video-effects:
+gnome-video-effects:
+gnome-video-effects: https://gitlab.gnome.org/GNOME/gnome-video-effects
+gnome-video-effects:
diff --git a/multimedia/gnupod/README b/multimedia/gnupod/README
index 2b496980a0..9a9ec1056b 100644
--- a/multimedia/gnupod/README
+++ b/multimedia/gnupod/README
@@ -1,6 +1,7 @@
GNUpod is a collection of tools which allow you to use your iPod with
-Linux and other UNIX-like operating systems. All iPod-models are supported.
+Linux and other UNIX-like operating systems. All iPod-models are
+supported.
-Optional dependencies include faac, ffmpeg, lame, TiMidity++,
-perl-Audio-FLAC-Header, perl-Date-Manip and
+Optional dependencies include:
+faac, ffmpeg, TiMidity++, perl-Audio-FLAC-Header, perl-Date-Manip, and
perl-Ogg-Vorbis-Header-PurePerl.
diff --git a/multimedia/gnupod/gnupod.SlackBuild b/multimedia/gnupod/gnupod.SlackBuild
index 86f1eeec0a..a841205e7d 100644
--- a/multimedia/gnupod/gnupod.SlackBuild
+++ b/multimedia/gnupod/gnupod.SlackBuild
@@ -1,29 +1,39 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for gnupod
# Written by Mark Grocock <mark@grocock.me.uk>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=gnupod
VERSION=${VERSION:-0.99.8}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -82,4 +92,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/google-talkplugin/README b/multimedia/google-talkplugin/README
deleted file mode 100644
index 64751c0bd4..0000000000
--- a/multimedia/google-talkplugin/README
+++ /dev/null
@@ -1,4 +0,0 @@
-Google TalkPlugin
-
-This script will repackage the debian binary. Google doesn't version
-their downloads, so the MD5SUM and VERSION numbers might not match.
diff --git a/multimedia/google-talkplugin/google-talkplugin.SlackBuild b/multimedia/google-talkplugin/google-talkplugin.SlackBuild
deleted file mode 100644
index f2d0e92168..0000000000
--- a/multimedia/google-talkplugin/google-talkplugin.SlackBuild
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for Google Voice (talkplugin)
-
-# Copyright 2010-2014 Erik Hanson, Minneapolis, MN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
-
-PRGNAM=google-talkplugin
-VERSION=${VERSION:-5.41.0.0}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i386 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-case "$ARCH" in
- i?86) DEBARCH="i386" ;;
- x86_64) DEBARCH="amd64" ;;
- *) echo "Not supported" ; exit 1 ;;
-esac
-
-set -eu
-
-# Get the real version, thanks to Fred Richards.
-REAL_VER=$(ar p google-talkplugin_current_${DEBARCH}.deb control.tar.gz | tar zxO ./control | grep Version | awk '{print $2}' | cut -d- -f1)
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $PKG
-ar p $CWD/google-talkplugin_current_${DEBARCH}.deb data.tar.gz | tar xvz
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-chmod 0755 $PKG # Put this back.
-rm -rf etc/ opt/google/talkplugin/cron # The cron job is debian/ubuntu only.
-
-# These just aren't necessary, mozilla/plugins/ covers all bases.
-for s in firefox iceape iceweasel midbrowser xulrunner xulrunner-addons ; do
- rm -rf $PKG/usr/lib/${s}
-done
-
-mv ${PKG}/usr/lib/chromium-browser ${PKG}/usr/lib/chromium
-
-if [ "$DEBARCH" = "amd64" ] ; then mv $PKG/usr/lib $PKG/usr/lib64 ; fi
-
-mkdir -p $PKG/usr/doc
-mv $PKG/usr/share/doc/$PRGNAM $PKG/usr/doc/$PRGNAM-$REAL_VER
-rmdir $PKG/usr/share/doc $PKG/usr/share
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$REAL_VER/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$REAL_VER-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/google-talkplugin/google-talkplugin.info b/multimedia/google-talkplugin/google-talkplugin.info
deleted file mode 100644
index 2937d8c212..0000000000
--- a/multimedia/google-talkplugin/google-talkplugin.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="google-talkplugin"
-VERSION="5.41.0.0"
-HOMEPAGE="http://www.google.com/chrome/"
-DOWNLOAD="http://dl.google.com/linux/direct/google-talkplugin_current_i386.deb"
-MD5SUM="915f51a1407488efbcda2af06c2ad6c1"
-DOWNLOAD_x86_64="http://dl.google.com/linux/direct/google-talkplugin_current_amd64.deb"
-MD5SUM_x86_64="7bfeea18335d2ab7aab2dc40dd67355d"
-REQUIRES=""
-MAINTAINER="Erik Hanson"
-EMAIL="erik@slackbuilds.org"
diff --git a/multimedia/google-talkplugin/slack-desc b/multimedia/google-talkplugin/slack-desc
deleted file mode 100644
index 521e6e0493..0000000000
--- a/multimedia/google-talkplugin/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-google-talkplugin: google-talkplugin (Google Voice and Video Browser Plugin)
-google-talkplugin:
-google-talkplugin: Google TalkPlugin enables Voice and Video chat right from Gmail,
-google-talkplugin: iGoogle, and orkut.
-google-talkplugin:
-google-talkplugin: This is a binary repackage.
-google-talkplugin:
-google-talkplugin:
-google-talkplugin:
-google-talkplugin:
-google-talkplugin:
diff --git a/multimedia/goom/README b/multimedia/goom/README
new file mode 100644
index 0000000000..3460c6674e
--- /dev/null
+++ b/multimedia/goom/README
@@ -0,0 +1,3 @@
+Visualization plugin for XMMS audio player.
+After installation you can enable goom
+Visualization from settings.
diff --git a/multimedia/goom/goom.SlackBuild b/multimedia/goom/goom.SlackBuild
new file mode 100644
index 0000000000..381dab8609
--- /dev/null
+++ b/multimedia/goom/goom.SlackBuild
@@ -0,0 +1,123 @@
+#!/bin/bash
+
+# Slackware build script for goom
+
+# Copyright 2023 Vijay Marcel
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+#
+# Modified by slackbuilds.org
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=goom
+VERSION=${VERSION:-2k4}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+SRCNAM=${SRCNAM:-$PRGNAM-$VERSION-0-src}
+
+if [ -z "$ARCH" ]; then
+case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+HARDENING="-fexceptions -fstack-protector-strong -fstack-clash-protection -mindirect-branch=thunk -mfunction-return=thunk"
+
+SLDFLAGS="-Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack"
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -march=i586 -mtune=i686 -pipe -O2 -fPIC $HARDENING"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -march=i686 -mtune=i686 -pipe -O2 -fPIC $HARDENING"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -march=x86-64 -mtune=generic -pipe -O2 -fPIC $HARDENING"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$SRCNAM.tar.gz
+mv -v $TMP/${PRGNAM}$VERSION-0 $TMP/$PRGNAM-$VERSION
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+LDFLAGS="$SLDFLAGS" \
+./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux \
+ --with-xmms-prefix=/usr \
+ --with-sdl-prefix=/usr \
+ --enable-shared \
+ --with-gnu-ld
+
+make
+make install DESTDIR=$PKG
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+rm -f $PKG/usr/lib$LIBDIRSUFFIX/xmms/Visualization/libxmmsgoom2.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS COPYING ChangeLog README $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/goom/goom.info b/multimedia/goom/goom.info
new file mode 100644
index 0000000000..f966e10e30
--- /dev/null
+++ b/multimedia/goom/goom.info
@@ -0,0 +1,10 @@
+PRGNAM="goom"
+VERSION="2k4"
+HOMEPAGE="https://downloads.sourceforge.net/project/goom/"
+DOWNLOAD="https://downloads.sourceforge.net/sourceforge/goom/goom2k4/0/goom-2k4-0-src.tar.gz"
+MD5SUM="8100dd07e0c6784fdf079eeaa53a5c7f"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/miro/slack-desc b/multimedia/goom/slack-desc
index 13298f7abb..4bf44836b2 100644
--- a/multimedia/miro/slack-desc
+++ b/multimedia/goom/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-miro: miro (Online media aggregator)
-miro:
-miro: Miro is a free Internet television application for the online
-miro: Democracy Network.
-miro:
-miro: Homepage: http://www.getmiro.com/
-miro:
-miro:
-miro:
-miro:
-miro:
+goom: goom (GOOM Visualization Plugin)
+goom:
+goom: Goom is Visualization plugin for XMMS audio player.
+goom:
+goom:
+goom:
+goom: Homepage:https://downloads.sourceforge.net/project/goom/
+goom:
+goom:
+goom:
+goom:
diff --git a/multimedia/gpac/README b/multimedia/gpac/README
index cadc77b6f0..1e7c8f82a2 100644
--- a/multimedia/gpac/README
+++ b/multimedia/gpac/README
@@ -1,6 +1,6 @@
-GPAC is mainly used to package multimedia content for local or streaming
-playback. GPAC includes MP4Box utility which lets packaging of
-various audio and video codecs into mp4 container.
+GPAC is mainly used to package multimedia content for local or
+streaming playback. GPAC includes MP4Box utility which lets packaging
+of various audio and video codecs into mp4 container.
-Optional dependencies include the following: wxPython, js, faad2, ffmpeg,
-xvidcore, jack, xulrunner and xmlrpc-c.
+Optional dependencies include the following: wxPython, js, faad2,
+ffmpeg, xvidcore, jack, xulrunner and xmlrpc-c.
diff --git a/multimedia/gpac/gpac.SlackBuild b/multimedia/gpac/gpac.SlackBuild
index 396ceae938..3d47f2be9d 100644
--- a/multimedia/gpac/gpac.SlackBuild
+++ b/multimedia/gpac/gpac.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware Package Build Script for gpac
# Home Page: https://gpac.wp.mines-telecom.fr/
@@ -25,10 +25,13 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM="gpac"
-VERSION=${VERSION:-0.7.1}
+VERSION=${VERSION:-1.0.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -38,7 +41,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -75,7 +85,7 @@ fi
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -f $PRGNAM-$VERSION
+rm -fR $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root.root .
@@ -106,7 +116,7 @@ make install-lib DESTDIR=$PKG
### remove $PKG/usr/share/gpac directory
### only contains gpac.mp4 file which
### doesn't seem to play with mplayer
-rm -fr $PKG/usr/share
+#rm -fr $PKG/usr/share
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
@@ -115,11 +125,11 @@ find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS BUGS COPYING Changelog INSTALLME README.md TODO doc/configuration.html \
+cp -a COPYING Changelog README.md \
$PKG/usr/doc/$PRGNAM-$VERSION
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gpac/gpac.info b/multimedia/gpac/gpac.info
index 8185ad5df7..9b1adc7085 100644
--- a/multimedia/gpac/gpac.info
+++ b/multimedia/gpac/gpac.info
@@ -1,8 +1,8 @@
PRGNAM="gpac"
-VERSION="0.7.1"
-HOMEPAGE="http://gpac.wp.mines-telecom.fr/"
-DOWNLOAD="https://github.com/gpac/gpac/archive/v0.7.1/gpac-0.7.1.tar.gz"
-MD5SUM="3b78b7b5bc022bbdeca193cc80281960"
+VERSION="1.0.1"
+HOMEPAGE="http://gpac.wp.mines-telecom.fr"
+DOWNLOAD="https://github.com/gpac/gpac/archive/v1.0.1/gpac-1.0.1.tar.gz"
+MD5SUM="52f6711e43a8d271ebec0c2ea2afab4a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/gpodder/README b/multimedia/gpodder/README
index af37efb180..b2b23234cd 100644
--- a/multimedia/gpodder/README
+++ b/multimedia/gpodder/README
@@ -1,6 +1,13 @@
-gPodder is a podcast receiver/catcher written in Python utilizing PyGTK
-for its user interface. gPodder allows the user to subscribe to RSS
-feeds for podcasts, videocasts, and other similar content and download
-media files found in those feeds. gPodder has system-tray notifications,
-remote access to the gpodder.net web services and optional support for
-Bluetooth and iPod synchronization.
+gPodder
+Media aggregator and podcast client
+gPodder is a simple, open source podcast client.
+In development since 2005 with a proven, mature codebase.
+
+gPodder is a media aggregator and podcast client written in Python.
+It has a CLI called 'gpo' and also a GTK+ user interface that allows
+the user to subscribe to RSS feeds for podcasts, videocasts, and other
+similar content and download media files found in those feeds.
+
+gPodder has system-tray notifications, remote access to the
+gpodder.net web services and optional support for Bluetooth
+and iPod synchronization.
diff --git a/multimedia/gpodder/doinst.sh b/multimedia/gpodder/doinst.sh
index 4a25de5e6f..65c7e2eeb9 100644
--- a/multimedia/gpodder/doinst.sh
+++ b/multimedia/gpodder/doinst.sh
@@ -7,4 +7,3 @@ if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
/usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
fi
fi
-
diff --git a/multimedia/gpodder/gpodder.SlackBuild b/multimedia/gpodder/gpodder.SlackBuild
index 7659bbd4b2..4d5fcd5453 100644
--- a/multimedia/gpodder/gpodder.SlackBuild
+++ b/multimedia/gpodder/gpodder.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for gPodder
+# Slackware build script for gpodder
-# Copyright 2008-2009 Chess Griffin <chess@chessgriffin.com>
+# Copyright 2024 Diniz Bortolotto <diniz.bortolotto@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -11,21 +11,24 @@
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=gpodder
-VERSION=${VERSION:-3.10.11}
+VERSION=${VERSION:-3.11.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,27 +38,15 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-DOCS="COPYING"
-
-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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
set -e
rm -rf $PKG
@@ -66,22 +57,26 @@ tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+#set man inside $PKG/usr/man instead of $PKG/usr/share/man
+export GPODDER_MANPATH_NO_SHARE=yes
make install DESTDIR=$PKG
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-mkdir -p $PKG/usr/
-mv $PKG/usr/share/man $PKG/usr
find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ CONTRIBUTING.md COPYING README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -89,4 +84,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gpodder/gpodder.info b/multimedia/gpodder/gpodder.info
index c0f010dec7..3d72c85e7b 100644
--- a/multimedia/gpodder/gpodder.info
+++ b/multimedia/gpodder/gpodder.info
@@ -1,10 +1,10 @@
PRGNAM="gpodder"
-VERSION="3.10.11"
+VERSION="3.11.4"
HOMEPAGE="http://gpodder.org/"
-DOWNLOAD="https://github.com/gpodder/gpodder/archive/3.10.11/gpodder-3.10.11.tar.gz"
-MD5SUM="1dfcfb0360492357111393d27da55f5f"
+DOWNLOAD="https://github.com/gpodder/gpodder/archive/3.11.4/gpodder-3.11.4.tar.gz"
+MD5SUM="63688566b1ab3ccc9b0c583afaeb2902"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="dbus-python3 pygobject3-python3 podcastparser mygpoclient"
-MAINTAINER="Chris Farrell"
-EMAIL="timcowchip@gorge.net"
+REQUIRES="podcastparser mygpoclient"
+MAINTAINER="Diniz Bortolotto"
+EMAIL="diniz.bortolotto@gmail.com"
diff --git a/multimedia/gpodder/slack-desc b/multimedia/gpodder/slack-desc
index 940f98f12d..d5513fd620 100644
--- a/multimedia/gpodder/slack-desc
+++ b/multimedia/gpodder/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-gpodder: gpodder (GTK2 media aggregator)
+gpodder: gpodder (Media aggregator and podcast client)
gpodder:
-gpodder: gPodder is a podcast receiver/catcher written in Python utilizing
-gpodder: PyGTK for its user interface. gPodder allows the user to subscribe
-gpodder: to RSS feeds for podcasts, videocasts, and other similar content
-gpodder: and download media files found in those feeds.
-gpodder: gPodder has system-tray notifications, support for optional iPod
-gpodder: synchronization, and MP3/Ogg id3 tag editing.
-gpodder:
-gpodder: Homepage: http://gpodder.org/
+gpodder: gPodder is a media aggregator and podcast client written in Python.
+gpodder: It has a CLI called 'gpo' and also a GTK+ user interface that allows
+gpodder: the user to subscribe to RSS feeds for podcasts, videocasts, and
+gpodder: other similar content and download media files found in those feeds.
+gpodder: gPodder has system-tray notifications, remote access to gpodder.net
+gpodder: web services and optional support for Bluetooth and iPod
+gpodder: synchronization.
+gpodder: Homepage: https://gpodder.github.io/
gpodder:
diff --git a/multimedia/gst-libav/README b/multimedia/gst-libav/README
deleted file mode 100644
index eca4522c85..0000000000
--- a/multimedia/gst-libav/README
+++ /dev/null
@@ -1,2 +0,0 @@
-This module contains a GStreamer plugin for libav, as well as an
-internal copy of the libav source code.
diff --git a/multimedia/gst-libav/gst-libav.SlackBuild b/multimedia/gst-libav/gst-libav.SlackBuild
deleted file mode 100644
index ed629a2f96..0000000000
--- a/multimedia/gst-libav/gst-libav.SlackBuild
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for gst-libav
-
-# Copyright (C) 2010 Juan Valencia <jvalenciae@gmail.com>
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
-
-PRGNAM=gst-libav
-VERSION=${VERSION:-1.6.2}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-rm -rf $TMP/$PRGNAM-$VERSION
-cd $TMP
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z*
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS ChangeLog COPYING INSTALL NEWS README TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
-find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/gst-libav/gst-libav.info b/multimedia/gst-libav/gst-libav.info
deleted file mode 100644
index ab38270126..0000000000
--- a/multimedia/gst-libav/gst-libav.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="gst-libav"
-VERSION="1.6.2"
-HOMEPAGE="https://gstreamer.freedesktop.org/"
-DOWNLOAD="https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.6.2.tar.xz"
-MD5SUM="09644a38827d233f53edeac815dd0ec0"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Robby Workman"
-EMAIL="rworkman@slackbuilds.org"
diff --git a/multimedia/gst-plugins-bad-nonfree/README b/multimedia/gst-plugins-bad-nonfree/README
new file mode 100644
index 0000000000..038ef30548
--- /dev/null
+++ b/multimedia/gst-plugins-bad-nonfree/README
@@ -0,0 +1,24 @@
+gst-plugins-bad-nonfree (encumbered set of GStreamer plugins)
+
+GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par
+compared to the rest. They might be close to being good quality,
+but they're missing something - be it a good code review, some
+documentation, a set of tests, a real live maintainer, or some actual
+wide use.
+
+Since gst-plugins-bad-free is part of Slackware, this package only
+includes the plugins that are not already in gst-plugins-bad-free.
+
+This optionally depends on TiMidity++, aom, amrnb, amrwb, celt,
+chromaprint, DirectFB, faac, faad2, flite, gsm, ladspa_sdk, libass,
+libcdaudio, libdc1394, libdca, libfdk-aac, libkate, liblrdf, libmimic,
+libmodplug, libmusicbrainz, libofa, libquicktime, libsrtp, lv2,
+musepack-tools, rtmpdump, schroedinger, srt, soundtouch, swfdec,
+xvidcore, and nvidia*driver. And probably a few more that we've
+missed.
+
+Note that if you have any version of the nvidia drivers installed
+the script would autodetect them and will try to build its nvdec
+support, requiring the presence on the system of cudatoolkit too: as
+cudatoolkit is *huge*, cuda support is disabled by default but it can
+be explicitly enabled passing the script the variable CUDA=yes
diff --git a/multimedia/gst-plugins-bad-nonfree/README_docs.txt b/multimedia/gst-plugins-bad-nonfree/README_docs.txt
new file mode 100644
index 0000000000..8ee8bceee9
--- /dev/null
+++ b/multimedia/gst-plugins-bad-nonfree/README_docs.txt
@@ -0,0 +1,3 @@
+If you're looking for the documentation, see:
+
+/usr/doc/gst-plugins-bad-free-*/
diff --git a/multimedia/gst-plugins-bad-nonfree/gst-plugins-bad-nonfree.SlackBuild b/multimedia/gst-plugins-bad-nonfree/gst-plugins-bad-nonfree.SlackBuild
new file mode 100644
index 0000000000..5fdcb0305a
--- /dev/null
+++ b/multimedia/gst-plugins-bad-nonfree/gst-plugins-bad-nonfree.SlackBuild
@@ -0,0 +1,236 @@
+#!/bin/bash
+
+# Slackware build script for gst-plugins-bad-nonfree
+
+# Copyright 2013-2021 Robby Workman, Tuscaloosa, Alabama, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+# 20220307 bkw: this is a rename and rework of the old SBo
+# gst-plugins-bad. Here we build only the portions of gst-plugins-bad
+# that are missing from Slackware's gst-plugins-bad-free. Despite
+# the -nonfree in the name, not all of these are encumbered (some
+# just aren't included in Slackware because it lacks the optional
+# dependencies).
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=gst-plugins-bad-nonfree
+VERSION=${VERSION:-1.18.5}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+SRCNAM=gst-plugins-bad
+
+# 20220307 bkw: libsrtp is disabled by default because it currently breaks
+# the build.
+[ "${SRTP:-no}" = "no" ] && SRTPOPT="-Dsrtp=disabled"
+
+# 20220307 bkw: nvcodec is disabled by default, per Robby's README.
+[ "${CUDA:-no}" = "no" ] && CUDAOPT="-Dnvcodec=disabled"
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.xz
+cd $SRCNAM-$VERSION
+chown -R root:root .
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+# 20220307 bkw: the massive list of -Dfoo=disabled below took a minute
+# to put together. Notice that shm is *not* in the list, though it
+# should be. This is because the build fails with -Dshm=disabled.
+# So we build it, then remove it from $PKG after it's installed.
+
+mkdir build
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ -Dexamples=disabled \
+ -Dopencv=disabled \
+ $SRTPOPT \
+ $CUDAOPT \
+ -Daccurip=disabled \
+ -Dadpcmdec=disabled \
+ -Dadpcmenc=disabled \
+ -Daiff=disabled \
+ -Dasfmux=disabled \
+ -Daudiobuffersplit=disabled \
+ -Daudiofxbad=disabled \
+ -Daudiomixmatrix=disabled \
+ -Daudiolatency=disabled \
+ -Daudiovisualizers=disabled \
+ -Dautoconvert=disabled \
+ -Dbayer=disabled \
+ -Dcamerabin2=disabled \
+ -Dcoloreffects=disabled \
+ -Ddebugutils=disabled \
+ -Ddvbsubenc=disabled \
+ -Dfaceoverlay=disabled \
+ -Dfestival=disabled \
+ -Dfieldanalysis=disabled \
+ -Dfreeverb=disabled \
+ -Dfrei0r=disabled \
+ -Dgaudieffects=disabled \
+ -Dgdp=disabled \
+ -Dgeometrictransform=disabled \
+ -Did3tag=disabled \
+ -Dinter=disabled \
+ -Dinterlace=disabled \
+ -Divfparse=disabled \
+ -Divtc=disabled \
+ -Djp2kdecimator=disabled \
+ -Djpegformat=disabled \
+ -Dlibrfb=disabled \
+ -Dmidi=disabled \
+ -Dmpegdemux=disabled \
+ -Dmpegpsmux=disabled \
+ -Dmpegtsdemux=disabled \
+ -Dmpegtsmux=disabled \
+ -Dmxf=disabled \
+ -Dnetsim=disabled \
+ -Drtp=disabled \
+ -Dpcapparse=disabled \
+ -Dpnm=disabled \
+ -Dproxy=disabled \
+ -Drawparse=disabled \
+ -Dremovesilence=disabled \
+ -Drist=disabled \
+ -Drtmp2=disabled \
+ -Drtp=disabled \
+ -Dsdp=disabled \
+ -Dsegmentclip=disabled \
+ -Dsmooth=disabled \
+ -Dspeed=disabled \
+ -Dsubenc=disabled \
+ -Dswitchbin=disabled \
+ -Dtimecode=disabled \
+ -Dvideoframe_audiolevel=disabled \
+ -Dvideofilters=disabled \
+ -Dvideoparsers=disabled \
+ -Dvideosignal=disabled \
+ -Dvmnc=disabled \
+ -Dy4m=disabled \
+ -Dbluez=disabled \
+ -Ddecklink=disabled \
+ -Ddvb=disabled \
+ -Dfbdev=disabled \
+ -Dipcpipeline=disabled \
+ -Dkms=disabled \
+ -Duvch264=disabled \
+ -Dv4l2codecs=disabled \
+ -Dva=disabled \
+ -Dbz2=disabled \
+ -Dclosedcaption=disabled \
+ -Dcolormanagement=disabled \
+ -Dcurl=disabled \
+ -Ddash=disabled \
+ -Ddtls=disabled \
+ -Dfluidsynth=disabled \
+ -Dhls=disabled \
+ -Dneon=disabled \
+ -Donvif=disabled \
+ -Dopenal=disabled \
+ -Dopencv=disabled \
+ -Dopenexr=disabled \
+ -Dopenjpeg=disabled \
+ -Dopus=disabled \
+ -Dresindvd=disabled \
+ -Drsvg=disabled \
+ -Dsbc=disabled \
+ -Dsctp=disabled \
+ -Dsmoothstreaming=disabled \
+ -Dsndfile=disabled \
+ -Dttml=disabled \
+ -Dtranscode=disabled \
+ -Dvulkan=disabled \
+ -Dwayland=disabled \
+ -Dwebrtc=disabled \
+ -Dwebp=disabled
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+# 20220307 bkw: remove all the things that already exist in Slackware.
+rm -rf $PKG/usr/lib*/gstreamer-*/libgstshm.so \
+ $PKG/usr/lib*/*.so* \
+ $PKG/usr/lib*/girepository* \
+ $PKG/usr/lib*/pkgconfig \
+ $PKG/usr/share \
+ $PKG/usr/include \
+ $PKG/usr/bin
+
+strip $PKG/usr/lib*/gstreamer-*/*.so
+
+# 20220308 bkw: don't even include the docs. they already exist in Pat's
+# gst-plugins-bad-free package.
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cat $CWD/README_docs.txt > $PKGDOC/README_docs.txt
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gst-plugins-bad/gst-plugins-bad.info b/multimedia/gst-plugins-bad-nonfree/gst-plugins-bad-nonfree.info
index 553c0edef7..43340d39f2 100644
--- a/multimedia/gst-plugins-bad/gst-plugins-bad.info
+++ b/multimedia/gst-plugins-bad-nonfree/gst-plugins-bad-nonfree.info
@@ -1,8 +1,8 @@
-PRGNAM="gst-plugins-bad"
-VERSION="1.6.2"
+PRGNAM="gst-plugins-bad-nonfree"
+VERSION="1.18.5"
HOMEPAGE="https://gstreamer.freedesktop.org/"
-DOWNLOAD="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.6.2.tar.xz"
-MD5SUM="7c73bec1d389f0e184ebbbbb9e9f883d"
+DOWNLOAD="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.18.5.tar.xz"
+MD5SUM="4ab1c19c3cf1ba79c20c65f6be78e7fd"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/gst-plugins-bad-nonfree/slack-desc b/multimedia/gst-plugins-bad-nonfree/slack-desc
new file mode 100644
index 0000000000..da73b3c0b2
--- /dev/null
+++ b/multimedia/gst-plugins-bad-nonfree/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+gst-plugins-bad-nonfree: gst-plugins-bad-nonfree (encumbered set of GStreamer plugins)
+gst-plugins-bad-nonfree:
+gst-plugins-bad-nonfree: GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par
+gst-plugins-bad-nonfree: compared to the rest. They might be close to being good quality,
+gst-plugins-bad-nonfree: but they're missing something - be it a good code review, some
+gst-plugins-bad-nonfree: documentation, a set of tests, a real live maintainer, or some actual
+gst-plugins-bad-nonfree: wide use.
+gst-plugins-bad-nonfree:
+gst-plugins-bad-nonfree: Since gst-plugins-bad-free is part of Slackware, this package only
+gst-plugins-bad-nonfree: includes the plugins that are not already in gst-plugins-bad-free.
+gst-plugins-bad-nonfree:
diff --git a/multimedia/gst-plugins-bad/README b/multimedia/gst-plugins-bad/README
deleted file mode 100644
index d71085b6fc..0000000000
--- a/multimedia/gst-plugins-bad/README
+++ /dev/null
@@ -1,10 +0,0 @@
-GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
-to the rest. They might be close to being good quality, but they're missing
-something - be it a good code review, some documentation, a set of tests,
-a real live maintainer, or some actual wide use.
-
-This optionally depends on OpenAL, TiMidity++, amrnb, amrwb, celt, faac,
-faad2, flite, fluidsynth, gsm, libass, libcdaudio, libdc1394, libdca,
-libkate, liblrdf, libmimic, libmodplug, libmusicbrainz, libofa,
-libquicktime, libwebp, lv2, musepack-tools, opencv, rtmpdump,
-schroedinger, soundtouch, swfdec, and xvidcore.
diff --git a/multimedia/gst-plugins-bad/slack-desc b/multimedia/gst-plugins-bad/slack-desc
deleted file mode 100644
index b8e30f8f13..0000000000
--- a/multimedia/gst-plugins-bad/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-gst-plugins-bad: gst-plugins-bad (bad set of GStreamer plugins)
-gst-plugins-bad:
-gst-plugins-bad: GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par
-gst-plugins-bad: compared to the rest. They might be close to being good quality,
-gst-plugins-bad: but they're missing something - be it a good code review, some
-gst-plugins-bad: documentation, a set of tests, a real live maintainer, or some
-gst-plugins-bad: actual wide use.
-gst-plugins-bad:
-gst-plugins-bad:
-gst-plugins-bad:
-gst-plugins-bad:
diff --git a/multimedia/gst-plugins-ugly/README b/multimedia/gst-plugins-ugly/README
index 0cb59b76d2..2d2ab19fcf 100644
--- a/multimedia/gst-plugins-ugly/README
+++ b/multimedia/gst-plugins-ugly/README
@@ -1,7 +1,8 @@
-GStreamer Ugly Plug-ins is a set of plug-ins that have good quality and
-correct functionality, but distributing them might pose problems. The
-license on either the plug-ins or the supporting libraries might not be
-how we'd like. The code might be widely known to present patent problems.
+GStreamer Ugly Plug-ins is a set of plug-ins that have good quality
+and correct functionality, but distributing them might pose problems.
+The license on either the plug-ins or the supporting libraries might
+not be how we'd like. The code might be widely known to present patent
+problems.
-This optionally depends on opencore-amr, lame, libdvdcss, libmpeg2,
-twolame, and x264.
+This optionally depends on opencore-amr, libdvdcss, libmpeg2, twolame,
+and x264.
diff --git a/multimedia/gst-plugins-ugly/gst-plugins-ugly.SlackBuild b/multimedia/gst-plugins-ugly/gst-plugins-ugly.SlackBuild
index a4e113d47c..d5d9e11406 100644
--- a/multimedia/gst-plugins-ugly/gst-plugins-ugly.SlackBuild
+++ b/multimedia/gst-plugins-ugly/gst-plugins-ugly.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for gst-plugins-ugly
-# Copyright 2013-2015 Robby Workman, Tuscaloosa, Alabama, USA
+# Copyright 2013-2021 Robby Workman, Tuscaloosa, Alabama, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,26 +22,36 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=gst-plugins-ugly
-VERSION=${VERSION:-1.6.2}
+VERSION=${VERSION:-1.18.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -69,26 +79,29 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
+mkdir build
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ -Dexamples=disabled
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | \
grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- AUTHORS COPYING* ChangeLog INSTALL NEWS RE* \
+ AUTHORS COPYING* ChangeLog NEWS RE* \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -96,4 +109,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gst-plugins-ugly/gst-plugins-ugly.info b/multimedia/gst-plugins-ugly/gst-plugins-ugly.info
index 1fc6a4908f..5a55a8aa0f 100644
--- a/multimedia/gst-plugins-ugly/gst-plugins-ugly.info
+++ b/multimedia/gst-plugins-ugly/gst-plugins-ugly.info
@@ -1,8 +1,8 @@
PRGNAM="gst-plugins-ugly"
-VERSION="1.6.2"
+VERSION="1.18.5"
HOMEPAGE="https://gstreamer.freedesktop.org/"
-DOWNLOAD="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.6.2.tar.xz"
-MD5SUM="0f0e30336e3155443cd5bfec5c215d56"
+DOWNLOAD="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.18.5.tar.xz"
+MD5SUM="049f90b7a3a72e241ad47564b5cd7a7a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/gst0-ffmpeg/gst0-ffmpeg.SlackBuild b/multimedia/gst0-ffmpeg/gst0-ffmpeg.SlackBuild
index bf58d16c6d..33c398cd84 100644
--- a/multimedia/gst0-ffmpeg/gst0-ffmpeg.SlackBuild
+++ b/multimedia/gst0-ffmpeg/gst0-ffmpeg.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for gst0-ffmpeg
@@ -22,28 +22,38 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=gst0-ffmpeg
VERSION=${VERSION:-0.10.13}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
SRCNAM=gst-ffmpeg
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -71,6 +81,8 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+patch -p1 < $CWD/orc-0.4.30.patch
+
# Fix for gcc-4.7.x
sed -i -e 's/"g"/"rm"/' gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c
@@ -98,4 +110,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gst0-ffmpeg/gst0-ffmpeg.info b/multimedia/gst0-ffmpeg/gst0-ffmpeg.info
index fd7d309624..117e2baae0 100644
--- a/multimedia/gst0-ffmpeg/gst0-ffmpeg.info
+++ b/multimedia/gst0-ffmpeg/gst0-ffmpeg.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://gstreamer.freedesktop.org/src/gst-ffmpeg/gst-ffmpeg-0.10.13.ta
MD5SUM="3e52d69a15d42f0a11abfc02f80effa1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="gst0-plugins-base"
MAINTAINER="Juan Valencia Escalante"
EMAIL="jvalenciae@gmail.com"
diff --git a/multimedia/gst0-ffmpeg/orc-0.4.30.patch b/multimedia/gst0-ffmpeg/orc-0.4.30.patch
new file mode 100644
index 0000000000..8ad9796c07
--- /dev/null
+++ b/multimedia/gst0-ffmpeg/orc-0.4.30.patch
@@ -0,0 +1,26 @@
+https://anonhg.netbsd.org/pkgsrc/rev/b7ba46cae228
+
+diff -Naur gst-ffmpeg-0.10.13.orig/ext/libpostproc/gstpostproc.c gst-ffmpeg-0.10.13/ext/libpostproc/gstpostproc.c
+--- gst-ffmpeg-0.10.13.orig/ext/libpostproc/gstpostproc.c 2011-07-12 16:35:27.000000000 +0200
++++ gst-ffmpeg-0.10.13/ext/libpostproc/gstpostproc.c 2019-11-17 20:04:03.283000000 +0100
+@@ -299,7 +299,7 @@
+ ppflags = (mmx_flags & ORC_TARGET_MMX_MMX ? PP_CPU_CAPS_MMX : 0)
+ | (mmx_flags & ORC_TARGET_MMX_MMXEXT ? PP_CPU_CAPS_MMX2 : 0)
+ | (mmx_flags & ORC_TARGET_MMX_3DNOW ? PP_CPU_CAPS_3DNOW : 0)
+- | (altivec_flags & ORC_TARGET_ALTIVEC_ALTIVEC ? PP_CPU_CAPS_ALTIVEC :
++ | (altivec_flags & ORC_TARGET_POWERPC_ALTIVEC ? PP_CPU_CAPS_ALTIVEC :
+ 0);
+ #else
+ mmx_flags = 0;
+diff -Naur gst-ffmpeg-0.10.13.orig/ext/libswscale/gstffmpegscale.c gst-ffmpeg-0.10.13/ext/libswscale/gstffmpegscale.c
+--- gst-ffmpeg-0.10.13.orig/ext/libswscale/gstffmpegscale.c 2011-11-02 14:04:05.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/libswscale/gstffmpegscale.c 2019-11-17 20:05:18.947000000 +0100
+@@ -638,7 +638,7 @@
+ swsflags = (mmx_flags & ORC_TARGET_MMX_MMX ? SWS_CPU_CAPS_MMX : 0)
+ | (mmx_flags & ORC_TARGET_MMX_MMXEXT ? SWS_CPU_CAPS_MMX2 : 0)
+ | (mmx_flags & ORC_TARGET_MMX_3DNOW ? SWS_CPU_CAPS_3DNOW : 0)
+- | (altivec_flags & ORC_TARGET_ALTIVEC_ALTIVEC ? SWS_CPU_CAPS_ALTIVEC : 0);
++ | (altivec_flags & ORC_TARGET_POWERPC_ALTIVEC ? SWS_CPU_CAPS_ALTIVEC : 0);
+ #else
+ mmx_flags = 0;
+ altivec_flags = 0;
diff --git a/multimedia/gst0-plugins-bad/README b/multimedia/gst0-plugins-bad/README
deleted file mode 100644
index 5c3bfb00d8..0000000000
--- a/multimedia/gst0-plugins-bad/README
+++ /dev/null
@@ -1,9 +0,0 @@
-GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
-to the rest. They might be close to being good quality, but they're missing
-something - be it a good code review, some documentation, a set of tests,
-a real live maintainer, or some actual wide use.
-
-This optionally depends on libass, libcdaudio, celt, libdc1394, dirac,
-libdca, faac, faad, flite, gsm, libkate, liblrdf, slv2, libmms, libmodplug,
-libmimic, libmusicbrainz, libofa, OpenAL, opencv, TiMidity++, soundtouch,
-swfdec, xvidcore, schroedinger, and rtmpdump.
diff --git a/multimedia/gst0-plugins-bad/drop-vpx-compat-defines.patch b/multimedia/gst0-plugins-bad/drop-vpx-compat-defines.patch
deleted file mode 100644
index 599ec08a18..0000000000
--- a/multimedia/gst0-plugins-bad/drop-vpx-compat-defines.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -up gst-plugins-bad-0.10.23/ext/vp8/gstvp8utils.h.drop-compat-defines gst-plugins-bad-0.10.23/ext/vp8/gstvp8utils.h
---- gst-plugins-bad-0.10.23/ext/vp8/gstvp8utils.h.drop-compat-defines 2015-04-07 09:28:01.637679239 -0400
-+++ gst-plugins-bad-0.10.23/ext/vp8/gstvp8utils.h 2015-04-07 09:28:10.397622550 -0400
-@@ -25,23 +25,6 @@
-
- G_BEGIN_DECLS
-
--/* Some compatibility defines for older libvpx versions */
--#ifndef VPX_IMG_FMT_I420
--#define VPX_IMG_FMT_I420 IMG_FMT_I420
--#endif
--
--#ifndef VPX_PLANE_Y
--#define VPX_PLANE_Y PLANE_Y
--#endif
--
--#ifndef VPX_PLANE_U
--#define VPX_PLANE_U PLANE_U
--#endif
--
--#ifndef VPX_PLANE_V
--#define VPX_PLANE_V PLANE_V
--#endif
--
- const char * gst_vpx_error_name (vpx_codec_err_t status);
-
- G_END_DECLS
diff --git a/multimedia/gst0-plugins-bad/gst0-plugins-bad.SlackBuild b/multimedia/gst0-plugins-bad/gst0-plugins-bad.SlackBuild
deleted file mode 100644
index c06474d672..0000000000
--- a/multimedia/gst0-plugins-bad/gst0-plugins-bad.SlackBuild
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for gst0-plugins-bad
-
-# Copyright 2007-2011 Michiel van Wessem, Manchester, United Kingdom
-# All rights reserved.
-#
-# 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.
-#
-# 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.
-
-PRGNAM=gst0-plugins-bad
-VERSION=${VERSION:-0.10.23}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-SRCNAM=gst-plugins-bad
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $SRCNAM-$VERSION
-tar -xvf $CWD/$SRCNAM-$VERSION.tar.?z*
-cd $SRCNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-# Fix libmodplug include directory.
-patch -p1 < $CWD/libmodplug-include.patch
-
-# Fix build against libvpx 1.4.0.
-patch -p1 < $CWD/drop-vpx-compat-defines.patch
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --docdir=/usr/doc/${PRGNAM-$VERSION} \
- --disable-static \
- --disable-musepack \
- --disable-opus \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/plugins
-cp -a AUTHORS COPYING* INSTALL NEWS README RELEASE REQUIREMENTS \
- docs/plugins/html docs/plugins/$SRCNAM-* $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/gst0-plugins-bad/gst0-plugins-bad.info b/multimedia/gst0-plugins-bad/gst0-plugins-bad.info
deleted file mode 100644
index 726cbbe79d..0000000000
--- a/multimedia/gst0-plugins-bad/gst0-plugins-bad.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="gst0-plugins-bad"
-VERSION="0.10.23"
-HOMEPAGE="https://gstreamer.freedesktop.org/modules/gst-plugins-bad.html"
-DOWNLOAD="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.10.23.tar.xz"
-MD5SUM="e4822fa2cc933768e2998311a1565979"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Michiel van Wessem"
-EMAIL="michiel@slackbuilds.org"
diff --git a/multimedia/gst0-plugins-bad/libmodplug-include.patch b/multimedia/gst0-plugins-bad/libmodplug-include.patch
deleted file mode 100644
index a38c5af9ab..0000000000
--- a/multimedia/gst0-plugins-bad/libmodplug-include.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur gst-plugins-bad-0.10.23.orig/ext/modplug/gstmodplug.cc gst-plugins-bad-0.10.23/ext/modplug/gstmodplug.cc
---- gst-plugins-bad-0.10.23.orig/ext/modplug/gstmodplug.cc 2012-01-18 12:32:55.000000000 +0000
-+++ gst-plugins-bad-0.10.23/ext/modplug/gstmodplug.cc 2015-02-03 16:31:44.428094306 +0000
-@@ -50,7 +50,7 @@
- #define WORDS_BIGENDIAN 0
- #endif
-
--#include <stdafx.h>
-+#include <libmodplug/stdafx.h>
- #include <libmodplug/sndfile.h>
-
- #include "gstmodplug.h"
diff --git a/multimedia/gst0-plugins-bad/slack-desc b/multimedia/gst0-plugins-bad/slack-desc
deleted file mode 100644
index be75d1dd65..0000000000
--- a/multimedia/gst0-plugins-bad/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-gst0-plugins-bad: gst0-plugins-bad (a set of bad GStreamer-0.10.x plugins)
-gst0-plugins-bad:
-gst0-plugins-bad: GStreamer Bad Plug-ins is a set of plug-ins that aren't up to
-gst0-plugins-bad: par compared to the rest. They might be close to being good
-gst0-plugins-bad: quality, but they're missing something - be it a good code
-gst0-plugins-bad: review, some documentation, a set of tests, a real live
-gst0-plugins-bad: maintainer, or some actual wide use.
-gst0-plugins-bad:
-gst0-plugins-bad: gst0-plugins-bad is a set of plug-ins that need more quality.
-gst0-plugins-bad:
-gst0-plugins-bad:
diff --git a/multimedia/gst0-plugins-base/README b/multimedia/gst0-plugins-base/README
new file mode 100644
index 0000000000..28f07fc897
--- /dev/null
+++ b/multimedia/gst0-plugins-base/README
@@ -0,0 +1,6 @@
+GStreamer Base Plug-ins is a well-groomed and well-maintained
+collection of GStreamer plug-ins and elements, spanning the range of
+possible types of elements one would want to write for GStreamer.
+It also contains helper libraries and base classes useful for
+writing elements. A wide range of video and audio decoders, encoders,
+and filters are included.
diff --git a/multimedia/gst0-plugins-base/gst0-plugins-base.SlackBuild b/multimedia/gst0-plugins-base/gst0-plugins-base.SlackBuild
new file mode 100644
index 0000000000..b60f89056c
--- /dev/null
+++ b/multimedia/gst0-plugins-base/gst0-plugins-base.SlackBuild
@@ -0,0 +1,126 @@
+#!/bin/bash
+
+# Slackware build script for gst0-plugins-base
+
+# Copyright 2008 Michiel van Wessem <michiel@slackbuilds.org>
+# Copyright 2008, 2009, 2010, 2018 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2021 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=gst0-plugins-base
+SRCNAM=gst-plugins-base
+VERSION=${VERSION:-0.10.36}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+DOCS="ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README* RELEASE REQUIREMENTS"
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.xz
+cd $SRCNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# Thanks AUR for the patches
+sed -i -e '/AC_PATH_XTRA/d' -e 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' configure.ac
+for i in $CWD/patches/* ; do patch -p1 < $i ; done
+if [[ $ARCH == i?86 ]]; then patch -p1 < $CWD/x86.patch ; fi
+
+NOCONFIGURE=1 ./autogen.sh
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --disable-debug \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make
+sed -e 's/^SUBDIRS_EXT =.*/SUBDIRS_EXT =/' -i Makefile
+make install DESTDIR=$PKG
+
+rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gst0-plugins-base/gst0-plugins-base.info b/multimedia/gst0-plugins-base/gst0-plugins-base.info
new file mode 100644
index 0000000000..053dcd0d2b
--- /dev/null
+++ b/multimedia/gst0-plugins-base/gst0-plugins-base.info
@@ -0,0 +1,10 @@
+PRGNAM="gst0-plugins-base"
+VERSION="0.10.36"
+HOMEPAGE="https://gstreamer.freedesktop.org"
+DOWNLOAD="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.10.36.tar.xz"
+MD5SUM="3d2337841b132fe996e5eb2396ac9438"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="gstreamer0"
+MAINTAINER="Matteo Bernardini"
+EMAIL="ponce@slackbuilds.org"
diff --git a/multimedia/gst0-plugins-base/patches/00-fix-crash-0-byte-ogg.patch b/multimedia/gst0-plugins-base/patches/00-fix-crash-0-byte-ogg.patch
new file mode 100644
index 0000000000..2c03e820b5
--- /dev/null
+++ b/multimedia/gst0-plugins-base/patches/00-fix-crash-0-byte-ogg.patch
@@ -0,0 +1,22 @@
+From 7f22e3ea7f713867e1fbf2ef71b6a6e36e1f0531 Mon Sep 17 00:00:00 2001
+From: Jonathan Liu <net147@gmail.com>
+Date: Sun, 28 Oct 2012 10:07:16 +0000
+Subject: oggstream: fix crash with 0 byte ogg packets
+
+https://bugzilla.gnome.org/show_bug.cgi?id=687030
+---
+diff --git a/ext/ogg/gstoggstream.c b/ext/ogg/gstoggstream.c
+index c79f088..fe28f2e 100644
+--- a/ext/ogg/gstoggstream.c
++++ b/ext/ogg/gstoggstream.c
+@@ -790,7 +790,7 @@ setup_vorbis_mapper (GstOggStream * pad, ogg_packet * packet)
+ static gboolean
+ is_header_vorbis (GstOggStream * pad, ogg_packet * packet)
+ {
+- if (packet->bytes > 0 && (packet->packet[0] & 0x01) == 0)
++ if (packet->bytes == 0 || (packet->packet[0] & 0x01) == 0)
+ return FALSE;
+
+ if (packet->packet[0] == 5) {
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/multimedia/gst0-plugins-base/patches/01-colorbalance-fix-abi.patch b/multimedia/gst0-plugins-base/patches/01-colorbalance-fix-abi.patch
new file mode 100644
index 0000000000..1e7b8f2c11
--- /dev/null
+++ b/multimedia/gst0-plugins-base/patches/01-colorbalance-fix-abi.patch
@@ -0,0 +1,23 @@
+From 0cb4ccb1f09d39820682e052fc106f5fd7fa1309 Mon Sep 17 00:00:00 2001
+From: Stefan Sauer <ensonic@users.sf.net>
+Date: Fri, 24 Feb 2012 20:37:00 +0000
+Subject: interfaces: fix ABI class padding after the recent changes
+
+---
+(limited to 'gst-libs/gst/interfaces/colorbalance.h')
+
+diff --git a/gst-libs/gst/interfaces/colorbalance.h b/gst-libs/gst/interfaces/colorbalance.h
+index fd8ceaa..9f0a1cd 100644
+--- a/gst-libs/gst/interfaces/colorbalance.h
++++ b/gst-libs/gst/interfaces/colorbalance.h
+@@ -102,7 +102,7 @@ struct _GstColorBalanceClass {
+ GstColorBalanceType (*get_balance_type) (GstColorBalance *balance);
+
+ /*< private >*/
+- gpointer _gst_reserved[GST_PADDING];
++ gpointer _gst_reserved[GST_PADDING-1];
+ };
+
+ GType gst_color_balance_get_type (void);
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/multimedia/gst0-plugins-base/patches/02-ayuv64-lanczos.patch b/multimedia/gst0-plugins-base/patches/02-ayuv64-lanczos.patch
new file mode 100644
index 0000000000..64106e4650
--- /dev/null
+++ b/multimedia/gst0-plugins-base/patches/02-ayuv64-lanczos.patch
@@ -0,0 +1,236 @@
+From e4f01106d08f3c2a65897bfe919bd65ce55545a8 Mon Sep 17 00:00:00 2001
+From: David Schleef <ds@schleef.org>
+Date: Wed, 25 Jan 2012 23:49:00 +0000
+Subject: videoscale: Add AYUV64 path to Lanczos
+
+---
+diff --git a/gst/videoscale/gstvideoscale.c b/gst/videoscale/gstvideoscale.c
+index 7b44647..6df4ba6 100644
+--- a/gst/videoscale/gstvideoscale.c
++++ b/gst/videoscale/gstvideoscale.c
+@@ -1199,6 +1199,11 @@ gst_video_scale_transform (GstBaseTransform * trans, GstBuffer * in,
+ case GST_VIDEO_SCALE_4TAP:
+ vs_image_scale_4tap_AYUV64 (&dest, &src, videoscale->tmp_buf);
+ break;
++ case GST_VIDEO_SCALE_LANCZOS:
++ vs_image_scale_lanczos_AYUV64 (&dest, &src, videoscale->tmp_buf,
++ videoscale->sharpness, videoscale->dither, videoscale->submethod,
++ videoscale->envelope, videoscale->sharpen);
++ break;
+ default:
+ goto unknown_mode;
+ }
+diff --git a/gst/videoscale/vs_image.h b/gst/videoscale/vs_image.h
+index 2312acc..7b34991 100644
+--- a/gst/videoscale/vs_image.h
++++ b/gst/videoscale/vs_image.h
+@@ -52,6 +52,9 @@ void vs_image_scale_linear_RGBA (const VSImage *dest, const VSImage *src,
+ void vs_image_scale_lanczos_AYUV (const VSImage * dest, const VSImage * src,
+ uint8_t * tmpbuf, double sharpness, gboolean dither, int submethod,
+ double a, double sharpen);
++void vs_image_scale_lanczos_AYUV64 (const VSImage * dest, const VSImage * src,
++ uint8_t * tmpbuf, double sharpness, gboolean dither, int submethod,
++ double a, double sharpen);
+
+ void vs_image_scale_nearest_RGB (const VSImage *dest, const VSImage *src,
+ uint8_t *tmpbuf);
+diff --git a/gst/videoscale/vs_lanczos.c b/gst/videoscale/vs_lanczos.c
+index 1c87ba3..d141a01 100644
+--- a/gst/videoscale/vs_lanczos.c
++++ b/gst/videoscale/vs_lanczos.c
+@@ -204,6 +204,9 @@ static void vs_image_scale_lanczos_AYUV_float (const VSImage * dest,
+ static void vs_image_scale_lanczos_AYUV_double (const VSImage * dest,
+ const VSImage * src, uint8_t * tmpbuf, double sharpness, gboolean dither,
+ double a, double sharpen);
++static void vs_image_scale_lanczos_AYUV64_double (const VSImage * dest,
++ const VSImage * src, uint8_t * tmpbuf, double sharpness, gboolean dither,
++ double a, double sharpen);
+
+ static double
+ sinc (double x)
+@@ -590,6 +593,15 @@ vs_image_scale_lanczos_AYUV (const VSImage * dest, const VSImage * src,
+ }
+ }
+
++void
++vs_image_scale_lanczos_AYUV64 (const VSImage * dest, const VSImage * src,
++ uint8_t * tmpbuf, double sharpness, gboolean dither, int submethod,
++ double a, double sharpen)
++{
++ vs_image_scale_lanczos_AYUV64_double (dest, src, tmpbuf, sharpness, dither,
++ a, sharpen);
++}
++
+
+
+ #define RESAMPLE_HORIZ_FLOAT(function, dest_type, tap_type, src_type, _n_taps) \
+@@ -813,9 +825,9 @@ RESAMPLE_VERT_DITHER (resample_vert_dither_int16_generic, gint16, gint16,
+ n_taps, shift)
+ /* *INDENT-ON* */
+
+-#define RESAMPLE_VERT_FLOAT(function, tap_type, src_type, _n_taps, _shift) \
++#define RESAMPLE_VERT_FLOAT(function, dest_type, clamp, tap_type, src_type, _n_taps, _shift) \
+ static void \
+-function (guint8 *dest, \
++function (dest_type *dest, \
+ const tap_type *taps, const src_type *src, int stride, int n_taps, \
+ int shift, int n) \
+ { \
+@@ -828,13 +840,13 @@ function (guint8 *dest, \
+ const src_type *line = PTR_OFFSET(src, stride * l); \
+ sum_y += line[i] * taps[l]; \
+ } \
+- dest[i] = CLAMP (floor(0.5 + sum_y), 0, 255); \
++ dest[i] = CLAMP (floor(0.5 + sum_y), 0, clamp); \
+ } \
+ }
+
+-#define RESAMPLE_VERT_FLOAT_DITHER(function, tap_type, src_type, _n_taps, _shift) \
++#define RESAMPLE_VERT_FLOAT_DITHER(function, dest_type, clamp, tap_type, src_type, _n_taps, _shift) \
+ static void \
+-function (guint8 *dest, \
++function (dest_type *dest, \
+ const tap_type *taps, const src_type *src, int stride, int n_taps, \
+ int shift, int n) \
+ { \
+@@ -849,19 +861,24 @@ function (guint8 *dest, \
+ sum_y += line[i] * taps[l]; \
+ } \
+ err_y += sum_y; \
+- dest[i] = CLAMP (floor (err_y), 0, 255); \
++ dest[i] = CLAMP (floor (err_y), 0, clamp); \
+ err_y -= floor (err_y); \
+ } \
+ }
+
+ /* *INDENT-OFF* */
+-RESAMPLE_VERT_FLOAT (resample_vert_double_generic, double, double, n_taps,
++RESAMPLE_VERT_FLOAT (resample_vert_double_generic, guint8, 255, double, double, n_taps,
+ shift)
+-RESAMPLE_VERT_FLOAT_DITHER (resample_vert_dither_double_generic, double, double,
++RESAMPLE_VERT_FLOAT_DITHER (resample_vert_dither_double_generic, guint8, 255, double, double,
+ n_taps, shift)
+
+-RESAMPLE_VERT_FLOAT (resample_vert_float_generic, float, float, n_taps, shift)
+-RESAMPLE_VERT_FLOAT_DITHER (resample_vert_dither_float_generic, float, float,
++RESAMPLE_VERT_FLOAT (resample_vert_double_generic_u16, guint16, 65535, double, double, n_taps,
++ shift)
++RESAMPLE_VERT_FLOAT_DITHER (resample_vert_dither_double_generic_u16, guint16, 65535, double, double,
++ n_taps, shift)
++
++RESAMPLE_VERT_FLOAT (resample_vert_float_generic, guint8, 255, float, float, n_taps, shift)
++RESAMPLE_VERT_FLOAT_DITHER (resample_vert_dither_float_generic, guint8, 255, float, float,
+ n_taps, shift)
+ /* *INDENT-ON* */
+
+@@ -1556,3 +1573,77 @@ vs_image_scale_lanczos_AYUV_float (const VSImage * dest, const VSImage * src,
+ scale1d_cleanup (&scale->y_scale1d);
+ g_free (scale->tmpdata);
+ }
++
++static void
++vs_scale_lanczos_AYUV64_double (Scale * scale)
++{
++ int j;
++ int yi;
++ int tmp_yi;
++
++ tmp_yi = 0;
++
++ for (j = 0; j < scale->dest->height; j++) {
++ guint16 *destline;
++ double *taps;
++
++ destline = (guint16 *) (scale->dest->pixels + scale->dest->stride * j);
++
++ yi = scale->y_scale1d.offsets[j];
++
++ while (tmp_yi < yi + scale->y_scale1d.n_taps) {
++ scale->horiz_resample_func (TMP_LINE_DOUBLE_AYUV (tmp_yi),
++ scale->x_scale1d.offsets, scale->x_scale1d.taps, SRC_LINE (tmp_yi),
++ scale->x_scale1d.n_taps, 0, scale->dest->width);
++ tmp_yi++;
++ }
++
++ taps = (double *) scale->y_scale1d.taps + j * scale->y_scale1d.n_taps;
++ if (scale->dither) {
++ resample_vert_dither_double_generic_u16 (destline,
++ taps, TMP_LINE_DOUBLE_AYUV (scale->y_scale1d.offsets[j]),
++ sizeof (double) * 4 * scale->dest->width,
++ scale->y_scale1d.n_taps, 0, scale->dest->width * 4);
++ } else {
++ resample_vert_double_generic_u16 (destline,
++ taps, TMP_LINE_DOUBLE_AYUV (scale->y_scale1d.offsets[j]),
++ sizeof (double) * 4 * scale->dest->width,
++ scale->y_scale1d.n_taps, 0, scale->dest->width * 4);
++ }
++ }
++}
++
++void
++vs_image_scale_lanczos_AYUV64_double (const VSImage * dest, const VSImage * src,
++ uint8_t * tmpbuf, double sharpness, gboolean dither, double a,
++ double sharpen)
++{
++ Scale s = { 0 };
++ Scale *scale = &s;
++ int n_taps;
++
++ scale->dest = dest;
++ scale->src = src;
++
++ n_taps = scale1d_get_n_taps (src->width, dest->width, a, sharpness);
++ scale1d_calculate_taps (&scale->x_scale1d,
++ src->width, dest->width, n_taps, a, sharpness, sharpen);
++
++ n_taps = scale1d_get_n_taps (src->height, dest->height, a, sharpness);
++ scale1d_calculate_taps (&scale->y_scale1d,
++ src->height, dest->height, n_taps, a, sharpness, sharpen);
++
++ scale->dither = dither;
++
++ scale->horiz_resample_func =
++ (HorizResampleFunc) resample_horiz_double_ayuv_generic;
++
++ scale->tmpdata =
++ g_malloc (sizeof (double) * scale->dest->width * scale->src->height * 4);
++
++ vs_scale_lanczos_AYUV64_double (scale);
++
++ scale1d_cleanup (&scale->x_scale1d);
++ scale1d_cleanup (&scale->y_scale1d);
++ g_free (scale->tmpdata);
++}
+--
+cgit v0.9.0.2-2-gbebe
+From f8dc679ca7e9542e6f410062df5e332fc8e0ba9d Mon Sep 17 00:00:00 2001
+From: David Schleef <ds@schleef.org>
+Date: Sun, 19 Feb 2012 08:03:03 +0000
+Subject: videoscale: fix AYUV64 scaling
+
+---
+diff --git a/gst/videoscale/vs_lanczos.c b/gst/videoscale/vs_lanczos.c
+index d141a01..67cd401 100644
+--- a/gst/videoscale/vs_lanczos.c
++++ b/gst/videoscale/vs_lanczos.c
+@@ -728,6 +728,9 @@ RESAMPLE_HORIZ_AYUV_FLOAT (resample_horiz_double_ayuv_generic, double, double,
+ RESAMPLE_HORIZ_AYUV_FLOAT (resample_horiz_float_ayuv_generic, float, float,
+ guint8, n_taps)
+
++RESAMPLE_HORIZ_AYUV_FLOAT (resample_horiz_double_ayuv_generic_s16, double, double,
++ guint16, n_taps)
++
+ RESAMPLE_HORIZ (resample_horiz_int32_int32_u8_generic, gint32, gint32,
+ guint8, n_taps, shift)
+ RESAMPLE_HORIZ (resample_horiz_int16_int16_u8_generic, gint16, gint16,
+@@ -1636,7 +1639,7 @@ vs_image_scale_lanczos_AYUV64_double (const VSImage * dest, const VSImage * src,
+ scale->dither = dither;
+
+ scale->horiz_resample_func =
+- (HorizResampleFunc) resample_horiz_double_ayuv_generic;
++ (HorizResampleFunc) resample_horiz_double_ayuv_generic_s16;
+
+ scale->tmpdata =
+ g_malloc (sizeof (double) * scale->dest->width * scale->src->height * 4);
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/multimedia/gst0-plugins-base/patches/03-videoscale-fix-negotiation.patch b/multimedia/gst0-plugins-base/patches/03-videoscale-fix-negotiation.patch
new file mode 100644
index 0000000000..6e34d41c53
--- /dev/null
+++ b/multimedia/gst0-plugins-base/patches/03-videoscale-fix-negotiation.patch
@@ -0,0 +1,171 @@
+From 63d1316c0fd4ce22cf4a53f4aa7cb1ca16a07aa8 Mon Sep 17 00:00:00 2001
+From: Tim-Philipp Müller <tim.muller@collabora.co.uk>
+Date: Sun, 26 Feb 2012 18:19:57 +0000
+Subject: videoscale: fix negotiation after addition of new formats and methods
+
+Now that we no longer support all methods for all formats, we
+need to cater for that in the transform function: we can't
+transform formats not supported by the currently-selected
+mehod.
+
+make check, folks. It's da bomb.
+---
+diff --git a/gst/videoscale/gstvideoscale.c b/gst/videoscale/gstvideoscale.c
+index 9f072a3..60dd5ff 100644
+--- a/gst/videoscale/gstvideoscale.c
++++ b/gst/videoscale/gstvideoscale.c
+@@ -424,10 +424,118 @@ gst_video_scale_get_property (GObject * object, guint prop_id, GValue * value,
+ }
+ }
+
++#define NEAREST (1 << GST_VIDEO_SCALE_NEAREST)
++#define BILINEAR (1 << GST_VIDEO_SCALE_BILINEAR)
++#define FOURTAP (1 << GST_VIDEO_SCALE_4TAP)
++#define LANCZOS (1 << GST_VIDEO_SCALE_LANCZOS)
++
++/* or we could just do lookups via table[format] if we could be bothered.. */
++static const struct
++{
++ GstVideoFormat format;
++ guint8 methods;
++} formats_methods_table[] = {
++ {
++ GST_VIDEO_FORMAT_RGBx, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_xRGB, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_BGRx, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_xBGR, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_RGBA, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_ARGB, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_BGRA, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_ABGR, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_AYUV, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_ARGB64, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_AYUV64, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_RGB, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_BGR, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_v308, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_YUY2, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_YVYU, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_UYVY, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_Y800, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_GRAY8, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_GRAY16_LE, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_GRAY16_BE, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_Y16, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_I420, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_YV12, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_Y444, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_Y42B, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_Y41B, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++ GST_VIDEO_FORMAT_NV12, NEAREST | BILINEAR}, {
++ GST_VIDEO_FORMAT_RGB16, NEAREST | BILINEAR | FOURTAP}, {
++ GST_VIDEO_FORMAT_RGB15, NEAREST | BILINEAR | FOURTAP}
++};
++
++static gboolean
++gst_video_scale_format_supported_for_method (GstVideoFormat format,
++ GstVideoScaleMethod method)
++{
++ int i;
++
++ for (i = 0; i < G_N_ELEMENTS (formats_methods_table); ++i) {
++ if (formats_methods_table[i].format == format)
++ return ((formats_methods_table[i].methods & (1 << method)) != 0);
++ }
++ return FALSE;
++}
++
++static gboolean
++gst_video_scale_transform_supported (GstVideoScale * videoscale,
++ GstVideoScaleMethod method, GstStructure * structure)
++{
++ const GValue *val;
++ GstVideoFormat fmt;
++ gboolean supported = TRUE;
++ GstStructure *s;
++ GstCaps *c;
++
++ /* we support these methods for all formats */
++ if (method == GST_VIDEO_SCALE_NEAREST || method == GST_VIDEO_SCALE_BILINEAR)
++ return TRUE;
++
++ /* we need fixed caps if we want to use gst_video_parse_caps() */
++ s = gst_structure_new (gst_structure_get_name (structure),
++ "width", G_TYPE_INT, 1, "height", G_TYPE_INT, 1, NULL);
++
++ if ((val = gst_structure_get_value (structure, "format"))) {
++ gst_structure_set_value (s, "format", val);
++ } else {
++ if ((val = gst_structure_get_value (structure, "endianness")))
++ gst_structure_set_value (s, "endianness", val);
++ if ((val = gst_structure_get_value (structure, "red_mask")))
++ gst_structure_set_value (s, "red_mask", val);
++ if ((val = gst_structure_get_value (structure, "blue_mask")))
++ gst_structure_set_value (s, "blue_mask", val);
++ if ((val = gst_structure_get_value (structure, "green_mask")))
++ gst_structure_set_value (s, "green_mask", val);
++ if ((val = gst_structure_get_value (structure, "alpha_mask")))
++ gst_structure_set_value (s, "alpha_mask", val);
++ if ((val = gst_structure_get_value (structure, "depth")))
++ gst_structure_set_value (s, "depth", val);
++ if ((val = gst_structure_get_value (structure, "bpp")))
++ gst_structure_set_value (s, "bpp", val);
++ }
++ c = gst_caps_new_full (s, NULL);
++ if (!gst_video_format_parse_caps (c, &fmt, NULL, NULL)) {
++ GST_ERROR_OBJECT (videoscale, "couldn't parse %" GST_PTR_FORMAT, c);
++ } else if (!gst_video_scale_format_supported_for_method (fmt, method)) {
++ supported = FALSE;
++ }
++ GST_LOG_OBJECT (videoscale, "method %d %ssupported for format %d",
++ method, (supported) ? "" : "not ", fmt);
++ gst_caps_unref (c);
++
++ return supported;
++}
++
+ static GstCaps *
+ gst_video_scale_transform_caps (GstBaseTransform * trans,
+ GstPadDirection direction, GstCaps * caps)
+ {
++ GstVideoScale *videoscale = GST_VIDEO_SCALE (trans);
++ GstVideoScaleMethod method;
+ GstCaps *ret;
+ GstStructure *structure;
+
+@@ -441,6 +549,13 @@ gst_video_scale_transform_caps (GstBaseTransform * trans,
+ ret = gst_caps_copy (caps);
+ structure = gst_structure_copy (gst_caps_get_structure (ret, 0));
+
++ GST_OBJECT_LOCK (videoscale);
++ method = videoscale->method;
++ GST_OBJECT_UNLOCK (videoscale);
++
++ if (!gst_video_scale_transform_supported (videoscale, method, structure))
++ goto format_not_supported;
++
+ gst_structure_set (structure,
+ "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+ "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
+@@ -452,9 +567,19 @@ gst_video_scale_transform_caps (GstBaseTransform * trans,
+ }
+ gst_caps_append_structure (ret, structure);
+
++done:
++
+ GST_DEBUG_OBJECT (trans, "returning caps: %" GST_PTR_FORMAT, ret);
+
+ return ret;
++
++format_not_supported:
++ {
++ gst_structure_free (structure);
++ gst_caps_unref (ret);
++ ret = gst_caps_new_empty ();
++ goto done;
++ }
+ }
+
+ static gboolean
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/multimedia/gst0-plugins-base/patches/04-gstaudio-symbols.patch b/multimedia/gst0-plugins-base/patches/04-gstaudio-symbols.patch
new file mode 100644
index 0000000000..7e2ad0f47d
--- /dev/null
+++ b/multimedia/gst0-plugins-base/patches/04-gstaudio-symbols.patch
@@ -0,0 +1,10 @@
+--- gst-plugins-base/win32/common/libgstaudio.def.orig 2013-12-10 12:09:41.280012610 +0000
++++ gst-plugins-base/win32/common/libgstaudio.def 2013-12-10 12:10:12.253127720 +0000
+@@ -24,6 +24,7 @@
+ gst_audio_decoder_get_plc_aware
+ gst_audio_decoder_get_tolerance
+ gst_audio_decoder_get_type
++ gst_audio_decoder_merge_tags
+ gst_audio_decoder_set_byte_time
+ gst_audio_decoder_set_drainable
+ gst_audio_decoder_set_latency
diff --git a/multimedia/gst0-plugins-base/patches/05-enum_headers.patch b/multimedia/gst0-plugins-base/patches/05-enum_headers.patch
new file mode 100644
index 0000000000..1205da2417
--- /dev/null
+++ b/multimedia/gst0-plugins-base/patches/05-enum_headers.patch
@@ -0,0 +1,132 @@
+diff --unified --recursive --text package.orig/common/glib-gen.mak package.new/common/glib-gen.mak
+--- package.orig/common/glib-gen.mak 2020-03-18 22:16:50.800759634 -0400
++++ package.new/common/glib-gen.mak 2020-03-18 22:17:26.360479044 -0400
+@@ -5,7 +5,7 @@
+ #glib_enum_define=GST_COLOR_BALANCE
+ #glib_enum_prefix=gst_color_balance
+
+-enum_headers=$(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers=$(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
+
+ # these are all the rules generating the relevant files
+ %-marshal.h: %-marshal.list
+diff --unified --recursive --text package.orig/common/gst-glib-gen.mak package.new/common/gst-glib-gen.mak
+--- package.orig/common/gst-glib-gen.mak 2020-03-18 22:16:50.800759634 -0400
++++ package.new/common/gst-glib-gen.mak 2020-03-18 22:17:26.360479044 -0400
+@@ -6,7 +6,7 @@
+ #glib_gen_prefix=gst_color_balance
+ #glib_gen_basename=colorbalance
+
+-enum_headers=$(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers=$(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
+
+ # these are all the rules generating the relevant files
+ $(glib_gen_basename)-marshal.h: $(glib_gen_basename)-marshal.list
+diff --unified --recursive --text package.orig/gst/encoding/Makefile.in package.new/gst/encoding/Makefile.in
+--- package.orig/gst/encoding/Makefile.in 2020-03-18 22:16:50.807426248 -0400
++++ package.new/gst/encoding/Makefile.in 2020-03-18 22:17:26.620476983 -0400
+@@ -493,7 +493,7 @@
+ BUILT_SOURCES = $(built_headers) $(built_sources)
+ EXTRA_DIST = gstencode-marshal.list
+ CLEANFILES = $(BUILT_SOURCES)
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
+ all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+diff --unified --recursive --text package.orig/gst/playback/Makefile.in package.new/gst/playback/Makefile.in
+--- package.orig/gst/playback/Makefile.in 2020-03-18 22:16:50.804092941 -0400
++++ package.new/gst/playback/Makefile.in 2020-03-18 22:17:26.540477618 -0400
+@@ -569,7 +569,7 @@
+ BUILT_SOURCES = $(built_headers) $(built_sources)
+ EXTRA_DIST = gstplay-marshal.list
+ CLEANFILES = $(BUILT_SOURCES)
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
+ all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+diff --unified --recursive --text package.orig/gst/tcp/Makefile.in package.new/gst/tcp/Makefile.in
+--- package.orig/gst/tcp/Makefile.in 2020-03-18 22:16:50.804092941 -0400
++++ package.new/gst/tcp/Makefile.in 2020-03-18 22:17:26.457144945 -0400
+@@ -471,7 +471,7 @@
+ glib_enum_define = GST_TCP
+ glib_gen_prefix = gst_tcp
+ glib_gen_basename = gsttcp
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
+ built_sources = gsttcp-enumtypes.c gsttcp-marshal.c
+ built_headers = gsttcp-enumtypes.h gsttcp-marshal.h
+ BUILT_SOURCES = $(built_sources) $(built_headers)
+diff --unified --recursive --text package.orig/gst-libs/gst/app/Makefile.in package.new/gst-libs/gst/app/Makefile.in
+--- package.orig/gst-libs/gst/app/Makefile.in 2020-03-18 22:16:50.817426170 -0400
++++ package.new/gst-libs/gst/app/Makefile.in 2020-03-18 22:17:27.103806485 -0400
+@@ -473,7 +473,7 @@
+ glib_enum_define = GST_APP
+ glib_gen_prefix = __gst_app
+ glib_gen_basename = gstapp
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
+ built_sources = gstapp-marshal.c
+ built_headers = gstapp-marshal.h
+ BUILT_SOURCES = $(built_sources) $(built_headers)
+diff --unified --recursive --text package.orig/gst-libs/gst/audio/Makefile.in package.new/gst-libs/gst/audio/Makefile.in
+--- package.orig/gst-libs/gst/audio/Makefile.in 2020-03-18 22:16:50.817426170 -0400
++++ package.new/gst-libs/gst/audio/Makefile.in 2020-03-18 22:17:27.070473416 -0400
+@@ -544,7 +544,7 @@
+ $(GST_BASE_LIBS) $(GST_LIBS)
+
+ libgstaudio_@GST_MAJORMINOR@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
+ @HAVE_INTROSPECTION_TRUE@BUILT_GIRSOURCES = GstAudio-@GST_MAJORMINOR@.gir
+ @HAVE_INTROSPECTION_TRUE@gir_headers = $(patsubst %,$(srcdir)/%, \
+ @HAVE_INTROSPECTION_TRUE@ $(libgstaudio_@GST_MAJORMINOR@include_HEADERS)) \
+diff --unified --recursive --text package.orig/gst-libs/gst/interfaces/Makefile.in package.new/gst-libs/gst/interfaces/Makefile.in
+--- package.orig/gst-libs/gst/interfaces/Makefile.in 2020-03-18 22:16:50.814092862 -0400
++++ package.new/gst-libs/gst/interfaces/Makefile.in 2020-03-18 22:17:26.897141457 -0400
+@@ -551,7 +551,7 @@
+
+ EXTRA_DIST = interfaces-marshal.list
+ CLEANFILES = $(BUILT_SOURCES) $(am__append_1)
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
+ @HAVE_INTROSPECTION_TRUE@BUILT_GIRSOURCES = GstInterfaces-@GST_MAJORMINOR@.gir
+ @HAVE_INTROSPECTION_TRUE@gir_headers = $(patsubst %,$(srcdir)/%, \
+ @HAVE_INTROSPECTION_TRUE@ $(libgstinterfacesinclude_HEADERS)) \
+diff --unified --recursive --text package.orig/gst-libs/gst/pbutils/Makefile.in package.new/gst-libs/gst/pbutils/Makefile.in
+--- package.orig/gst-libs/gst/pbutils/Makefile.in 2020-03-18 22:16:50.814092862 -0400
++++ package.new/gst-libs/gst/pbutils/Makefile.in 2020-03-18 22:17:26.937141140 -0400
+@@ -542,7 +542,7 @@
+
+ # DISTCLEANFILES is for files generated by configure
+ DISTCLEANFILES = $(built_headers_configure)
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
+ @HAVE_INTROSPECTION_TRUE@BUILT_GIRSOURCES = GstPbutils-@GST_MAJORMINOR@.gir
+ @HAVE_INTROSPECTION_TRUE@gir_headers = $(patsubst %,$(srcdir)/%, \
+ @HAVE_INTROSPECTION_TRUE@ $(libgstpbutils_@GST_MAJORMINOR@include_HEADERS)) \
+diff --unified --recursive --text package.orig/gst-libs/gst/rtsp/Makefile.in package.new/gst-libs/gst/rtsp/Makefile.in
+--- package.orig/gst-libs/gst/rtsp/Makefile.in 2020-03-18 22:16:50.817426170 -0400
++++ package.new/gst-libs/gst/rtsp/Makefile.in 2020-03-18 22:17:27.113806406 -0400
+@@ -517,7 +517,7 @@
+ glib_enum_define = gst_rtsp
+ glib_enum_headers = gstrtspdefs.h
+ glib_gen_basename = gstrtsp
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
+ @HAVE_INTROSPECTION_TRUE@BUILT_GIRSOURCES = GstRtsp-@GST_MAJORMINOR@.gir
+ @HAVE_INTROSPECTION_TRUE@gir_headers = $(patsubst %,$(srcdir)/%, \
+ @HAVE_INTROSPECTION_TRUE@ $(libgstrtspinclude_HEADERS)) \
+diff --unified --recursive --text package.orig/gst-libs/gst/video/Makefile.in package.new/gst-libs/gst/video/Makefile.in
+--- package.orig/gst-libs/gst/video/Makefile.in 2020-03-18 22:16:50.810759555 -0400
++++ package.new/gst-libs/gst/video/Makefile.in 2020-03-18 22:17:26.847141854 -0400
+@@ -553,7 +553,7 @@
+ $(GST_ALL_LDFLAGS) \
+ $(GST_LT_LDFLAGS)
+
+-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++enum_headers = $(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
+ @HAVE_INTROSPECTION_TRUE@BUILT_GIRSOURCES = GstVideo-@GST_MAJORMINOR@.gir
+ @HAVE_INTROSPECTION_TRUE@gir_headers = $(patsubst %,$(srcdir)/%, \
+ @HAVE_INTROSPECTION_TRUE@ $(libgstvideo_@GST_MAJORMINOR@include_HEADERS)) \
diff --git a/multimedia/gst0-plugins-base/slack-desc b/multimedia/gst0-plugins-base/slack-desc
new file mode 100644
index 0000000000..54c5be6b02
--- /dev/null
+++ b/multimedia/gst0-plugins-base/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+gst0-plugins-base: gst0-plugins-base (base set of GStreamer plugins, v0)
+gst0-plugins-base:
+gst0-plugins-base: GStreamer Base Plug-ins is a well-groomed and well-maintained
+gst0-plugins-base: collection of GStreamer plug-ins and elements, spanning the range of
+gst0-plugins-base: possible types of elements one would want to write for GStreamer.
+gst0-plugins-base: It also contains helper libraries and base classes useful for
+gst0-plugins-base: writing elements. A wide range of video and audio decoders, encoders,
+gst0-plugins-base: and filters are included.
+gst0-plugins-base:
+gst0-plugins-base:
+gst0-plugins-base:
diff --git a/multimedia/gst0-plugins-base/x86.patch b/multimedia/gst0-plugins-base/x86.patch
new file mode 100644
index 0000000000..127ca6af83
--- /dev/null
+++ b/multimedia/gst0-plugins-base/x86.patch
@@ -0,0 +1,35 @@
+From 9bd5a7ae5435469c3557a3d70e762791cb3dc5c7 Mon Sep 17 00:00:00 2001
+From: Antoine Jacoutot <ajacoutot@gnome.org>
+Date: Mon, 20 Jan 2014 15:44:09 +0100
+Subject: [PATCH] audioresample: fix build on BSD
+
+On i386, EMMINTRIN is defined but not usable without sse so check for
+__SSE__ and __SSE2__ as well.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=670690
+---
+ gst/audioresample/resample.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gst/audioresample/resample.c b/gst/audioresample/resample.c
+index 98d006c..481fa01 100644
+--- a/gst/audioresample/resample.c
++++ b/gst/audioresample/resample.c
+@@ -77,13 +77,13 @@
+ #define EXPORT G_GNUC_INTERNAL
+
+ #ifdef _USE_SSE
+-#ifndef HAVE_XMMINTRIN_H
++#if !defined(__SSE__) || !defined(HAVE_XMMINTRIN_H)
+ #undef _USE_SSE
+ #endif
+ #endif
+
+ #ifdef _USE_SSE2
+-#ifndef HAVE_EMMINTRIN_H
++#if !defined(__SSE2__) || !defined(HAVE_XMMINTRIN_H)
+ #undef _USE_SSE2
+ #endif
+ #endif
+--
+1.8.5.3
diff --git a/multimedia/gst0-plugins-good/README b/multimedia/gst0-plugins-good/README
new file mode 100644
index 0000000000..c599a59421
--- /dev/null
+++ b/multimedia/gst0-plugins-good/README
@@ -0,0 +1,3 @@
+GStreamer Good Plug-ins is a set of plug-ins that have good quality
+code, correct functionality, and a good license (LGPL for the plug-in
+code, LGPL or LGPL-compatible for the supporting library).
diff --git a/multimedia/gst0-plugins-good/gst0-plugins-good.SlackBuild b/multimedia/gst0-plugins-good/gst0-plugins-good.SlackBuild
new file mode 100644
index 0000000000..c4e5afdded
--- /dev/null
+++ b/multimedia/gst0-plugins-good/gst0-plugins-good.SlackBuild
@@ -0,0 +1,126 @@
+#!/bin/bash
+
+# Slackware build script for gst0-plugins-good
+
+# Copyright 2008 Michiel van Wessem <michiel@slackbuilds.org>
+# Copyright 2008, 2009, 2010, 2018 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2021 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=gst0-plugins-good
+SRCNAM=gst-plugins-good
+VERSION=${VERSION:-0.10.31}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+DOCS="ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README* RELEASE REQUIREMENTS"
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.xz
+cd $SRCNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# Thanks AUR for the patches
+sed -i '/AC_PATH_XTRA/d' configure.ac
+sed -i 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' configure.ac
+
+for i in $CWD/patches/* ; do patch -p1 < $i ; done
+
+NOCONFIGURE=1 ./autogen.sh
+find . -name 'Makefile.in' -exec sed -i -e 's/\\#include/#include/g' {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --disable-debug \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+#quick and dirty fix
+ echo "#define GST_PLUGIN_DEFINE2(a,b,c,d,e,f,g,h,i) GST_PLUGIN_DEFINE(a,b, #c ,d,e,f,g,h,i)" >> config.h
+
+make
+make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 install DESTDIR=$PKG
+rm -fR $PKG/etc/gconf
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gst0-plugins-good/gst0-plugins-good.info b/multimedia/gst0-plugins-good/gst0-plugins-good.info
new file mode 100644
index 0000000000..3565b78242
--- /dev/null
+++ b/multimedia/gst0-plugins-good/gst0-plugins-good.info
@@ -0,0 +1,10 @@
+PRGNAM="gst0-plugins-good"
+VERSION="0.10.31"
+HOMEPAGE="https://gstreamer.freedesktop.org"
+DOWNLOAD="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-0.10.31.tar.xz"
+MD5SUM="555845ceab722e517040bab57f9ace95"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="gst0-plugins-base"
+MAINTAINER="Matteo Bernardini"
+EMAIL="ponce@slackbuilds.org"
diff --git a/multimedia/gst0-plugins-good/patches/00-test-rtp-payloading.patch b/multimedia/gst0-plugins-good/patches/00-test-rtp-payloading.patch
new file mode 100644
index 0000000000..e8a9431360
--- /dev/null
+++ b/multimedia/gst0-plugins-good/patches/00-test-rtp-payloading.patch
@@ -0,0 +1,422 @@
+From dca42d4767adff3578e5d5990604766735ec1f9b Mon Sep 17 00:00:00 2001
+From: Tim-Philipp Müller <tim.muller@collabora.co.uk>
+Date: Fri, 10 Feb 2012 13:44:43 +0000
+Subject: tests: clean up rtp-payloading test a little
+
+Feed data into the pipeline using appsrc instead of fdsrc and
+a pipe. Store unsigned byte values in guint8 instead of char.
+Getting rid of the capsfilter also helps to avoid 'format is
+not fully specified' warnings when pushing "video/x-h264" data
+into rtph264pay with fully specified h264 caps in the sink template.
+---
+diff --git a/tests/check/elements/rtp-payloading.c b/tests/check/elements/rtp-payloading.c
+index b2160f4..7b4985b 100644
+--- a/tests/check/elements/rtp-payloading.c
++++ b/tests/check/elements/rtp-payloading.c
+@@ -31,13 +31,11 @@
+ typedef struct
+ {
+ GstElement *pipeline;
+- GstElement *fdsrc;
+- GstElement *capsfilter;
++ GstElement *appsrc;
+ GstElement *rtppay;
+ GstElement *rtpdepay;
+ GstElement *fakesink;
+- int fd[2];
+- const char *frame_data;
++ const guint8 *frame_data;
+ int frame_data_size;
+ int frame_count;
+ } rtp_pipeline;
+@@ -140,13 +138,11 @@ rtp_bus_callback (GstBus * bus, GstMessage * message, gpointer data)
+ * The user must free the RTP pipeline when it's not used anymore.
+ */
+ static rtp_pipeline *
+-rtp_pipeline_create (const char *frame_data, int frame_data_size,
++rtp_pipeline_create (const guint8 * frame_data, int frame_data_size,
+ int frame_count, const char *filtercaps, const char *pay, const char *depay)
+ {
+ gchar *pipeline_name;
+-
+ rtp_pipeline *p;
+-
+ GstCaps *caps;
+
+ /* Check parameters. */
+@@ -165,60 +161,39 @@ rtp_pipeline_create (const char *frame_data, int frame_data_size,
+ pipeline_name = g_strdup_printf ("%s-%s-pipeline", pay, depay);
+ p->pipeline = gst_pipeline_new (pipeline_name);
+ g_free (pipeline_name);
+- p->fdsrc = gst_element_factory_make ("fdsrc", NULL);
+- p->capsfilter = gst_element_factory_make ("capsfilter", NULL);
++ p->appsrc = gst_element_factory_make ("appsrc", NULL);
+ p->rtppay = gst_element_factory_make (pay, NULL);
+ p->rtpdepay = gst_element_factory_make (depay, NULL);
+ p->fakesink = gst_element_factory_make ("fakesink", NULL);
+
+ /* One or more elements are not created successfully or failed to create p? */
+- if (!p->pipeline || !p->fdsrc || !p->capsfilter || !p->rtppay || !p->rtpdepay
+- || !p->fakesink || pipe (p->fd) == -1) {
++ if (!p->pipeline || !p->appsrc || !p->rtppay || !p->rtpdepay || !p->fakesink) {
+ /* Release created elements. */
+ RELEASE_ELEMENT (p->pipeline);
+- RELEASE_ELEMENT (p->fdsrc);
+- RELEASE_ELEMENT (p->capsfilter);
++ RELEASE_ELEMENT (p->appsrc);
+ RELEASE_ELEMENT (p->rtppay);
+ RELEASE_ELEMENT (p->rtpdepay);
+ RELEASE_ELEMENT (p->fakesink);
+
+- /* Close pipe. */
+- if (p->fd[0]) {
+- close (p->fd[0]);
+- }
+-
+- if (p->fd[1]) {
+- close (p->fd[1]);
+- }
+-
+ /* Release allocated memory. */
+ free (p);
+
+ return NULL;
+ }
+
+- /* Set fdsrc properties. */
+- g_object_set (p->fdsrc, "fd", p->fd[0], NULL);
+- g_object_set (p->fdsrc, "do-timestamp", TRUE, NULL);
+- g_object_set (p->fdsrc, "blocksize", p->frame_data_size, NULL);
+- g_object_set (p->fdsrc, "num-buffers", p->frame_count * LOOP_COUNT, NULL);
+-
+- /* Set caps filters. */
++ /* Set src properties. */
+ caps = gst_caps_from_string (filtercaps);
+-
+- g_object_set (p->capsfilter, "caps", caps, NULL);
++ g_object_set (p->appsrc, "do-timestamp", TRUE, "caps", caps, NULL);
+ gst_caps_unref (caps);
+
+ /* Add elements to the pipeline. */
+- gst_bin_add (GST_BIN (p->pipeline), p->fdsrc);
+- gst_bin_add (GST_BIN (p->pipeline), p->capsfilter);
++ gst_bin_add (GST_BIN (p->pipeline), p->appsrc);
+ gst_bin_add (GST_BIN (p->pipeline), p->rtppay);
+ gst_bin_add (GST_BIN (p->pipeline), p->rtpdepay);
+ gst_bin_add (GST_BIN (p->pipeline), p->fakesink);
+
+ /* Link elements. */
+- gst_element_link (p->fdsrc, p->capsfilter);
+- gst_element_link (p->capsfilter, p->rtppay);
++ gst_element_link (p->appsrc, p->rtppay);
+ gst_element_link (p->rtppay, p->rtpdepay);
+ gst_element_link (p->rtpdepay, p->fakesink);
+
+@@ -240,15 +215,6 @@ rtp_pipeline_destroy (rtp_pipeline * p)
+ /* Release pipeline. */
+ RELEASE_ELEMENT (p->pipeline);
+
+- /* Close pipe. */
+- if (p->fd[0]) {
+- close (p->fd[0]);
+- }
+-
+- if (p->fd[1]) {
+- close (p->fd[1]);
+- }
+-
+ /* Release allocated memory. */
+ free (p);
+ }
+@@ -260,11 +226,10 @@ rtp_pipeline_destroy (rtp_pipeline * p)
+ static void
+ rtp_pipeline_run (rtp_pipeline * p)
+ {
++ GstFlowReturn flow_ret;
+ GMainLoop *mainloop = NULL;
+-
+ GstBus *bus;
+-
+- gint i;
++ gint i, j;
+
+ /* Check parameters. */
+ if (p == NULL) {
+@@ -286,22 +251,28 @@ rtp_pipeline_run (rtp_pipeline * p)
+ /* Set pipeline to PLAYING. */
+ gst_element_set_state (p->pipeline, GST_STATE_PLAYING);
+
+- /* TODO: Writing may need some changes... */
+-
++ /* Push data into the pipeline */
+ for (i = 0; i < LOOP_COUNT; i++) {
+- const char *frame_data_pointer = p->frame_data;
+- int res;
+- int frame_count = p->frame_count;
+-
+- /* Write in to the pipe. */
+- while (frame_count > 0) {
+- res = write (p->fd[1], frame_data_pointer, p->frame_data_size);
+- fail_unless_equals_int (res, p->frame_data_size);
+- frame_data_pointer += p->frame_data_size;
+- frame_count--;
++ const guint8 *data = p->frame_data;
++
++ for (j = 0; j < p->frame_count; j++) {
++ GstBuffer *buf;
++
++ buf = gst_buffer_new ();
++ GST_BUFFER_DATA (buf) = (guint8 *) data;
++ GST_BUFFER_SIZE (buf) = p->frame_data_size;
++ GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_READONLY);
++
++ g_signal_emit_by_name (p->appsrc, "push-buffer", buf, &flow_ret);
++ fail_unless_equals_int (flow_ret, GST_FLOW_OK);
++ data += p->frame_data_size;
++
++ gst_buffer_unref (buf);
+ }
+ }
+
++ g_signal_emit_by_name (p->appsrc, "end-of-stream", &flow_ret);
++
+ /* Run mainloop. */
+ g_main_loop_run (mainloop);
+
+@@ -350,8 +321,8 @@ rtp_pipeline_enable_lists (rtp_pipeline * p, guint mtu_size)
+ * @use_lists enable buffer lists
+ */
+ static void
+-rtp_pipeline_test (const char *frame_data, int frame_data_size, int frame_count,
+- const char *filtercaps, const char *pay, const char *depay,
++rtp_pipeline_test (const guint8 * frame_data, int frame_data_size,
++ int frame_count, const char *filtercaps, const char *pay, const char *depay,
+ guint bytes_sent, guint mtu_size, gboolean use_lists)
+ {
+ /* Create RTP pipeline. */
+@@ -380,7 +351,7 @@ rtp_pipeline_test (const char *frame_data, int frame_data_size, int frame_count,
+ }
+ }
+
+-static char rtp_ilbc_frame_data[] =
++static const guint8 rtp_ilbc_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -397,7 +368,7 @@ GST_START_TEST (rtp_ilbc)
+ }
+
+ GST_END_TEST;
+-static char rtp_gsm_frame_data[] =
++static const guint8 rtp_gsm_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -414,7 +385,7 @@ GST_START_TEST (rtp_gsm)
+ }
+
+ GST_END_TEST;
+-static char rtp_amr_frame_data[] =
++static const guint8 rtp_amr_frame_data[] =
+ { 0x3c, 0x24, 0x03, 0xb3, 0x48, 0x10, 0x68, 0x46, 0x6c, 0xec, 0x03,
+ 0x7a, 0x37, 0x16, 0x41, 0x41, 0xc0, 0x00, 0x0d, 0xcd, 0x12, 0xed,
+ 0xad, 0x80, 0x00, 0x00, 0x11, 0x31, 0x00, 0x00, 0x0d, 0xa0
+@@ -432,7 +403,7 @@ GST_START_TEST (rtp_amr)
+ }
+
+ GST_END_TEST;
+-static char rtp_pcma_frame_data[] =
++static const guint8 rtp_pcma_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -449,7 +420,7 @@ GST_START_TEST (rtp_pcma)
+ }
+
+ GST_END_TEST;
+-static char rtp_pcmu_frame_data[] =
++static const guint8 rtp_pcmu_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -466,7 +437,7 @@ GST_START_TEST (rtp_pcmu)
+ }
+
+ GST_END_TEST;
+-static char rtp_mpa_frame_data[] =
++static const guint8 rtp_mpa_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -483,7 +454,7 @@ GST_START_TEST (rtp_mpa)
+ }
+
+ GST_END_TEST;
+-static char rtp_h263_frame_data[] =
++static const guint8 rtp_h263_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -495,12 +466,12 @@ static int rtp_h263_frame_count = 1;
+ GST_START_TEST (rtp_h263)
+ {
+ rtp_pipeline_test (rtp_h263_frame_data, rtp_h263_frame_data_size,
+- rtp_h263_frame_count, "video/x-h263,variant=itu,h263version=h263",
++ rtp_h263_frame_count, "video/x-h263,variant=(string)itu,h263version=h263",
+ "rtph263pay", "rtph263depay", 0, 0, FALSE);
+ }
+
+ GST_END_TEST;
+-static char rtp_h263p_frame_data[] =
++static const guint8 rtp_h263p_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -512,12 +483,12 @@ static int rtp_h263p_frame_count = 1;
+ GST_START_TEST (rtp_h263p)
+ {
+ rtp_pipeline_test (rtp_h263p_frame_data, rtp_h263p_frame_data_size,
+- rtp_h263p_frame_count, "video/x-h263,variant=itu", "rtph263ppay",
++ rtp_h263p_frame_count, "video/x-h263,variant=(string)itu", "rtph263ppay",
+ "rtph263pdepay", 0, 0, FALSE);
+ }
+
+ GST_END_TEST;
+-static char rtp_h264_frame_data[] =
++static const guint8 rtp_h264_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -528,13 +499,14 @@ static int rtp_h264_frame_count = 1;
+
+ GST_START_TEST (rtp_h264)
+ {
++ /* FIXME 0.11: fully specify h264 caps (and make payloader check) */
+ rtp_pipeline_test (rtp_h264_frame_data, rtp_h264_frame_data_size,
+ rtp_h264_frame_count, "video/x-h264", "rtph264pay", "rtph264depay",
+ 0, 0, FALSE);
+ }
+
+ GST_END_TEST;
+-static char rtp_h264_list_lt_mtu_frame_data[] =
++static const guint8 rtp_h264_list_lt_mtu_frame_data[] =
+ /* not packetized, next NAL starts with 0001 */
+ { 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+@@ -552,6 +524,7 @@ static int rtp_h264_list_lt_mtu_mtu_size = 1024;
+
+ GST_START_TEST (rtp_h264_list_lt_mtu)
+ {
++ /* FIXME 0.11: fully specify h264 caps (and make payloader check) */
+ rtp_pipeline_test (rtp_h264_list_lt_mtu_frame_data,
+ rtp_h264_list_lt_mtu_frame_data_size, rtp_h264_list_lt_mtu_frame_count,
+ "video/x-h264", "rtph264pay", "rtph264depay",
+@@ -559,7 +532,7 @@ GST_START_TEST (rtp_h264_list_lt_mtu)
+ }
+
+ GST_END_TEST;
+-static char rtp_h264_list_gt_mtu_frame_data[] =
++static const guint8 rtp_h264_list_gt_mtu_frame_data[] =
+ /* not packetized, next NAL starts with 0001 */
+ { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+@@ -580,6 +553,7 @@ static int rtp_h264_list_gt_mtu_mty_size = 28;
+
+ GST_START_TEST (rtp_h264_list_gt_mtu)
+ {
++ /* FIXME 0.11: fully specify h264 caps (and make payloader check) */
+ rtp_pipeline_test (rtp_h264_list_gt_mtu_frame_data,
+ rtp_h264_list_gt_mtu_frame_data_size, rtp_h264_list_gt_mtu_frame_count,
+ "video/x-h264", "rtph264pay", "rtph264depay",
+@@ -587,7 +561,7 @@ GST_START_TEST (rtp_h264_list_gt_mtu)
+ }
+
+ GST_END_TEST;
+-static char rtp_L16_frame_data[] =
++static const guint8 rtp_L16_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -605,7 +579,7 @@ GST_START_TEST (rtp_L16)
+ }
+
+ GST_END_TEST;
+-static char rtp_mp2t_frame_data[] =
++static const guint8 rtp_mp2t_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -622,7 +596,7 @@ GST_START_TEST (rtp_mp2t)
+ }
+
+ GST_END_TEST;
+-static char rtp_mp4v_frame_data[] =
++static const guint8 rtp_mp4v_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -639,7 +613,7 @@ GST_START_TEST (rtp_mp4v)
+ }
+
+ GST_END_TEST;
+-static char rtp_mp4v_list_frame_data[] =
++static const guint8 rtp_mp4v_list_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -659,7 +633,7 @@ GST_START_TEST (rtp_mp4v_list)
+ }
+
+ GST_END_TEST;
+-static char rtp_mp4g_frame_data[] =
++static const guint8 rtp_mp4g_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -677,7 +651,7 @@ GST_START_TEST (rtp_mp4g)
+ }
+
+ GST_END_TEST;
+-static char rtp_theora_frame_data[] =
++static const guint8 rtp_theora_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -694,7 +668,7 @@ GST_START_TEST (rtp_theora)
+ }
+
+ GST_END_TEST;
+-static char rtp_vorbis_frame_data[] =
++static const guint8 rtp_vorbis_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+@@ -711,7 +685,7 @@ GST_START_TEST (rtp_vorbis)
+ }
+
+ GST_END_TEST;
+-static char rtp_jpeg_frame_data[] =
++static const guint8 rtp_jpeg_frame_data[] =
+ { /* SOF */ 0xFF, 0xC0, 0x00, 0x11, 0x08, 0x00, 0x08, 0x00, 0x08,
+ 0x03, 0x00, 0x21, 0x08, 0x01, 0x11, 0x08, 0x02, 0x11, 0x08,
+ /* DQT */ 0xFF, 0xDB, 0x00, 0x43, 0x08,
+@@ -738,7 +712,7 @@ GST_START_TEST (rtp_jpeg)
+ }
+
+ GST_END_TEST;
+-static char rtp_jpeg_list_frame_data[] =
++static const guint8 rtp_jpeg_list_frame_data[] =
+ { /* SOF */ 0xFF, 0xC0, 0x00, 0x11, 0x08, 0x00, 0x08, 0x00, 0x08,
+ 0x03, 0x00, 0x21, 0x08, 0x01, 0x11, 0x08, 0x02, 0x11, 0x08,
+ /* DQT */ 0xFF, 0xDB, 0x00, 0x43, 0x08,
+@@ -767,7 +741,7 @@ GST_START_TEST (rtp_jpeg_list)
+ }
+
+ GST_END_TEST;
+-static char rtp_g729_frame_data[] =
++static const guint8 rtp_g729_frame_data[] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/multimedia/gst0-plugins-good/patches/01-souptest.patch b/multimedia/gst0-plugins-good/patches/01-souptest.patch
new file mode 100644
index 0000000000..a025eb6b98
--- /dev/null
+++ b/multimedia/gst0-plugins-good/patches/01-souptest.patch
@@ -0,0 +1,28 @@
+From 5765db50a19498e3d1576b4279cb2ca984da9dcd Mon Sep 17 00:00:00 2001
+From: Edward Hervey <bilboed@bilboed.com>
+Date: Tue, 23 Sep 2014 09:47:31 +0200
+Subject: check/soup: Temporarily disable G_ENABLE_DIAGNOSTIC
+
+The SOUP_SERVER_PORT property has been deprecated in recent libsoup
+versions.
+
+diff --git a/tests/check/elements/souphttpsrc.c b/tests/check/elements/souphttpsrc.c
+index 33431ac..dfb682b 100644
+--- a/tests/check/elements/souphttpsrc.c
++++ b/tests/check/elements/souphttpsrc.c
+@@ -602,7 +602,12 @@ run_server (guint * http_port, guint * https_port)
+
+ *http_port = *https_port = 0;
+
++ /* The G_ENABLE_DIAGNOSTIC is temporarily overriden to avoid
++ * property deprecation warnings (for the SOUP_SERVER_PORT
++ * property) */
++ g_setenv ("G_ENABLE_DIAGNOSTIC", "0", TRUE);
+ server = soup_server_new (SOUP_SERVER_PORT, port, NULL);
++ g_setenv ("G_ENABLE_DIAGNOSTIC", "1", TRUE);
+ if (!server) {
+ GST_DEBUG ("Unable to bind to server port %u", port);
+ return FALSE;
+--
+cgit v0.10.2
+
diff --git a/multimedia/gst0-plugins-good/patches/02-v4l.compile.fixes.diff b/multimedia/gst0-plugins-good/patches/02-v4l.compile.fixes.diff
new file mode 100644
index 0000000000..e03fdac894
--- /dev/null
+++ b/multimedia/gst0-plugins-good/patches/02-v4l.compile.fixes.diff
@@ -0,0 +1,57 @@
+From fa21c0bb253213c9dc48ce72faaf7090dc8a3554 Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@verbum.org>
+Date: Thu, 2 May 2013 16:16:46 -0400
+Subject: [PATCH] sys/v4l2: Some blind compilation fixes
+
+---
+ sys/v4l2/gstv4l2bufferpool.c | 1 -
+ sys/v4l2/v4l2_calls.c | 12 ++++--------
+ 2 files changed, 4 insertions(+), 9 deletions(-)
+
+diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c
+index a0b4c84..3916815 100644
+--- a/sys/v4l2/gstv4l2bufferpool.c
++++ b/sys/v4l2/gstv4l2bufferpool.c
+@@ -182,7 +182,6 @@ gst_v4l2_buffer_new (GstV4l2BufferPool * pool, guint index, GstCaps * caps)
+ GST_LOG_OBJECT (pool->v4l2elem, " MMAP offset: %u",
+ ret->vbuffer.m.offset);
+ GST_LOG_OBJECT (pool->v4l2elem, " length: %u", ret->vbuffer.length);
+- GST_LOG_OBJECT (pool->v4l2elem, " input: %u", ret->vbuffer.input);
+
+ ret->mmap_length = ret->vbuffer.length;
+ data = (guint8 *) v4l2_mmap (0, ret->vbuffer.length,
+diff --git a/sys/v4l2/v4l2_calls.c b/sys/v4l2/v4l2_calls.c
+index 309bfb6..ee3ff9f 100644
+--- a/sys/v4l2/v4l2_calls.c
++++ b/sys/v4l2/v4l2_calls.c
+@@ -53,14 +53,6 @@
+
+ #include "gst/gst-i18n-plugin.h"
+
+-/* Those are ioctl calls */
+-#ifndef V4L2_CID_HCENTER
+-#define V4L2_CID_HCENTER V4L2_CID_HCENTER_DEPRECATED
+-#endif
+-#ifndef V4L2_CID_VCENTER
+-#define V4L2_CID_VCENTER V4L2_CID_VCENTER_DEPRECATED
+-#endif
+-
+ GST_DEBUG_CATEGORY_EXTERN (v4l2_debug);
+ #define GST_CAT_DEFAULT v4l2_debug
+
+@@ -294,8 +286,12 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object)
+ break;
+ case V4L2_CID_HFLIP:
+ case V4L2_CID_VFLIP:
++#ifdef V4L2_CID_HCENTER
+ case V4L2_CID_HCENTER:
++#endif
++#ifdef V4L2_CID_VCENTER
+ case V4L2_CID_VCENTER:
++#endif
+ #ifdef V4L2_CID_PAN_RESET
+ case V4L2_CID_PAN_RESET:
+ #endif
+--
+1.7.1
+
diff --git a/multimedia/gst0-plugins-good/slack-desc b/multimedia/gst0-plugins-good/slack-desc
new file mode 100644
index 0000000000..51d5272810
--- /dev/null
+++ b/multimedia/gst0-plugins-good/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the good package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+gst0-plugins-good: gst0-plugins-good (good set of GStreamer plugins, v0)
+gst0-plugins-good:
+gst0-plugins-good: GStreamer Good Plug-ins is a set of plug-ins that have good quality
+gst0-plugins-good: code, correct functionality, and a good license (LGPL for the plug-in
+gst0-plugins-good: code, LGPL or LGPL-compatible for the supporting library).
+gst0-plugins-good:
+gst0-plugins-good:
+gst0-plugins-good:
+gst0-plugins-good:
+gst0-plugins-good:
+gst0-plugins-good:
diff --git a/multimedia/gst0-plugins-ugly/README b/multimedia/gst0-plugins-ugly/README
index fbb70ee79c..09169028c2 100644
--- a/multimedia/gst0-plugins-ugly/README
+++ b/multimedia/gst0-plugins-ugly/README
@@ -1,6 +1,7 @@
-GStreamer Ugly Plug-ins is a set of plug-ins that have good quality and
-correct functionality, but distributing them might pose problems. The
-license on either the plug-ins or the supporting libraries might not be
-how we'd like. The code might be widely known to present patent problems.
+GStreamer Ugly Plug-ins is a set of plug-ins that have good quality
+and correct functionality, but distributing them might pose problems.
+The license on either the plug-ins or the supporting libraries might
+not be how we'd like. The code might be widely known to present patent
+problems.
-This optionally depends on opencore-amr, lame, libmpeg2, twolame, and x264.
+This optionally depends on opencore-amr, libmpeg2, twolame, and x264.
diff --git a/multimedia/gst0-plugins-ugly/gst0-plugins-ugly.SlackBuild b/multimedia/gst0-plugins-ugly/gst0-plugins-ugly.SlackBuild
index 04f5180301..67d800a315 100644
--- a/multimedia/gst0-plugins-ugly/gst0-plugins-ugly.SlackBuild
+++ b/multimedia/gst0-plugins-ugly/gst0-plugins-ugly.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for gst0-plugins-ugly
@@ -24,28 +24,38 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=gst0-plugins-ugly
VERSION=${VERSION:-0.10.19}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
SRCNAM=gst-plugins-ugly
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -107,4 +117,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gst0-plugins-ugly/gst0-plugins-ugly.info b/multimedia/gst0-plugins-ugly/gst0-plugins-ugly.info
index 7f4f1e8f51..b4d52bfee3 100644
--- a/multimedia/gst0-plugins-ugly/gst0-plugins-ugly.info
+++ b/multimedia/gst0-plugins-ugly/gst0-plugins-ugly.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugl
MD5SUM="1d81c593e22a6cdf0f2b4f57eae93df2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="gst0-plugins-base"
MAINTAINER="Michiel van Wessem"
EMAIL="michiel@slackbuilds.org"
diff --git a/multimedia/gstreamer0/README b/multimedia/gstreamer0/README
new file mode 100644
index 0000000000..8f931a3cf7
--- /dev/null
+++ b/multimedia/gstreamer0/README
@@ -0,0 +1,8 @@
+GStreamer is a library that allows the construction of graphs of a
+media-handling components, ranging from simple Ogg/Vorbis playback
+to complex audio (mixing) and video (non-linear editing) processing.
+Applications can take advantage of advances in codec and filter
+technology transparently. Developers can add new codecs and filters
+by writing a simple plugin with a clean, generic interface.
+
+GStreamer is released under the LGPL.
diff --git a/multimedia/gstreamer0/gstreamer-0.10.36-bison3.patch b/multimedia/gstreamer0/gstreamer-0.10.36-bison3.patch
new file mode 100644
index 0000000000..f569b1d85c
--- /dev/null
+++ b/multimedia/gstreamer0/gstreamer-0.10.36-bison3.patch
@@ -0,0 +1,31 @@
+From 60516f4798894f958fc53b470e1283318d0f8706 Mon Sep 17 00:00:00 2001
+From: Kerrick Staley <kerrick@kerrickstaley.com>
+Date: Wed, 21 Aug 2013 06:59:29 +0000
+Subject: parse: make grammar.y work with Bison 3
+
+YYLEX_PARAM is no longer supported in Bison 3.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=706462
+---
+diff --git a/gst/parse/grammar.y b/gst/parse/grammar.y
+index 24fc87b..7f9dd16 100644
+--- a/gst/parse/grammar.y
++++ b/gst/parse/grammar.y
+@@ -26,7 +26,6 @@
+ */
+
+ #define YYERROR_VERBOSE 1
+-#define YYLEX_PARAM scanner
+
+ #define YYENABLE_NLS 0
+
+@@ -648,6 +647,7 @@ static int yyerror (void *scanner, graph_t *graph, const char *s);
+ %right '.'
+ %left '!' '='
+
++%lex-param { void *scanner }
+ %parse-param { void *scanner }
+ %parse-param { graph_t *graph }
+ %pure-parser
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/multimedia/dvdauthor/dvdauthor.SlackBuild b/multimedia/gstreamer0/gstreamer0.SlackBuild
index bf785bab21..2a3f35b5ee 100644
--- a/multimedia/dvdauthor/dvdauthor.SlackBuild
+++ b/multimedia/gstreamer0/gstreamer0.SlackBuild
@@ -1,10 +1,11 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for dvdauthor
+# Slackware build script for gstreamer0
-# Copyright 2007 Brian Reichert <rignes@pobox.com>
-# Copyright 2010,2013 Niels Horn - Rio de Janeiro, Brazil
-# Copyright 2015, 2017 Edward W. Koenig - Vancouver, Washington USA
+# Copyright 2008 Robby Workman, Northport, Alabama, USA
+# Copyright 2008 Michiel van Wessem <michiel@slackbuilds.org>
+# Copyright 2008, 2009, 2010, 2013, 2018 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2021 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,30 +25,37 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# Revision date: 2013/03/28
-# 25-JUL-2015: new maintainer
-# 29-JAN-2017: version update fixes missing header includes
+cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=dvdauthor
-VERSION=${VERSION:-0.7.2}
+PRGNAM=gstreamer0
+SRCNAM=gstreamer
+VERSION=${VERSION:-0.10.36}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -60,14 +68,16 @@ else
LIBDIRSUFFIX=""
fi
+DOCS="AUTHORS COPYING* INSTALL MAINTAINERS NEWS README* RELEASE TODO"
+
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.?z
+cd $SRCNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -75,28 +85,42 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+patch -p1 < $CWD/gstreamer-0.10.36-bison3.patch || exit 1
+sed -e 's/static volatile gsize gonce_data/static gsize gonce_data/g' -i gst/gstutils.h
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
- --libdir=/usr/lib$LIBDIRSUFFIX \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
- --build=$ARCH-slackware-linux
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
+ --disable-debug \
+ --disable-gst-debug \
+ --enable-glib-asserts=no \
+ --with-package-name='gstreamer' \
+ --with-package-origin='http://gstreamer.freedesktop.org' \
+ --build=$ARCH-slackware-linux || exit 1
make
-make install-strip DESTDIR=$PKG
+make install DESTDIR=$PKG
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS ChangeLog COPYING INSTALL README TODO $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gstreamer0/gstreamer0.info b/multimedia/gstreamer0/gstreamer0.info
new file mode 100644
index 0000000000..4fb19812ae
--- /dev/null
+++ b/multimedia/gstreamer0/gstreamer0.info
@@ -0,0 +1,10 @@
+PRGNAM="gstreamer0"
+VERSION="0.10.36"
+HOMEPAGE="https://gstreamer.freedesktop.org"
+DOWNLOAD="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.36.tar.xz"
+MD5SUM="15389c73e091b1dda915279c388b9cb2"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Matteo Bernardini"
+EMAIL="ponce@slackbuilds.org"
diff --git a/multimedia/gstreamer0/slack-desc b/multimedia/gstreamer0/slack-desc
new file mode 100644
index 0000000000..2609b28210
--- /dev/null
+++ b/multimedia/gstreamer0/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+gstreamer0: gstreamer0 (streaming multimedia framework, v0)
+gstreamer0:
+gstreamer0: GStreamer is a library that allows the construction of graphs of a
+gstreamer0: media-handling components, ranging from simple Ogg/Vorbis playback
+gstreamer0: to complex audio (mixing) and video (non-linear editing) processing.
+gstreamer0: Applications can take advantage of advances in codec and filter
+gstreamer0: technology transparently. Developers can add new codecs and filters
+gstreamer0: by writing a simple plugin with a clean, generic interface.
+gstreamer0:
+gstreamer0: GStreamer is released under the LGPL.
+gstreamer0:
diff --git a/multimedia/gtick/gtick.SlackBuild b/multimedia/gtick/gtick.SlackBuild
index d1f892995c..566f2acca6 100644
--- a/multimedia/gtick/gtick.SlackBuild
+++ b/multimedia/gtick/gtick.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for GTick
@@ -22,26 +22,36 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=gtick
-VERSION=${VERSION:-0.5.4}
+VERSION=${VERSION:-0.5.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -65,9 +75,11 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+
+SLKCFLAGS+=" -fcommon"
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -117,4 +129,4 @@ StartupNotify=false
EOF
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gtick/gtick.info b/multimedia/gtick/gtick.info
index 53946d2ce7..3f7e008afd 100644
--- a/multimedia/gtick/gtick.info
+++ b/multimedia/gtick/gtick.info
@@ -1,8 +1,8 @@
PRGNAM="gtick"
-VERSION="0.5.4"
+VERSION="0.5.5"
HOMEPAGE="http://www.antcom.de/gtick/"
-DOWNLOAD="http://www.antcom.de/gtick/download/gtick-0.5.4.tar.gz"
-MD5SUM="1df601c1ff202a9a888f982087fa2488"
+DOWNLOAD="http://www.antcom.de/gtick/download/gtick-0.5.5.tar.gz"
+MD5SUM="0d7e99785188aaf1b446d94c9a175939"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/gtk-recordmydesktop/gtk-recordmydesktop.SlackBuild b/multimedia/gtk-recordmydesktop/gtk-recordmydesktop.SlackBuild
index 258ccee020..75cad4b1c8 100644
--- a/multimedia/gtk-recordmydesktop/gtk-recordmydesktop.SlackBuild
+++ b/multimedia/gtk-recordmydesktop/gtk-recordmydesktop.SlackBuild
@@ -1,28 +1,38 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for gtk-recordmydesktop
# Originally written for qt-recordmydesktop by Michales Michaloudes,
# adapted for gtk-recordmydesktop by Morten Juhl-Johansen Zölde-Fejér <mjjzf@syntaktisk.dk>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=gtk-recordmydesktop
VERSION=${VERSION:-0.3.8}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -78,4 +88,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gtkpod/README b/multimedia/gtkpod/README
deleted file mode 100644
index 891bc5fbe0..0000000000
--- a/multimedia/gtkpod/README
+++ /dev/null
@@ -1,5 +0,0 @@
-gtkpod is a graphical user interface for the Apple iPod for
-Unix-like systems, written using the GTK+ toolkit.
-
-Optional dependencies are faac, faad2, gst-plugins-*, webkitgtk3,
-lame, libmusicbrainz3, libmp4v2 and brasero.
diff --git a/multimedia/gtkpod/gtkpod.info b/multimedia/gtkpod/gtkpod.info
deleted file mode 100644
index 5176d5afc0..0000000000
--- a/multimedia/gtkpod/gtkpod.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="gtkpod"
-VERSION="2.1.5"
-HOMEPAGE="http://www.gtkpod.org/wiki/Home"
-DOWNLOAD="http://downloads.sourceforge.net/gtkpod/gtkpod-2.1.5.tar.gz"
-MD5SUM="f011d6bc403f06d8bb13829c1c3d25fe"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="anjuta"
-MAINTAINER="Willy Sudiarto Raharjo"
-EMAIL="willysr@slackbuilds.org"
diff --git a/multimedia/guvcview/README b/multimedia/guvcview/README
index c0c3b87fec..976c8ec1cd 100644
--- a/multimedia/guvcview/README
+++ b/multimedia/guvcview/README
@@ -3,9 +3,3 @@ guvcview (GTK+ UVC Viewer)
This project aims at providing a simple GTK interface for capturing and
viewing video from devices supported by the linux UVC driver, although
it should also work with any v4l2 compatible device.
-
-If you want to compile guvcview without PulseAudio support you can
-run the script as follows:
- PULSE=NO ./guvcview.SlackBuild
-
-NOTE: Qt5 support is disabled by default.
diff --git a/multimedia/guvcview/guvcview.SlackBuild b/multimedia/guvcview/guvcview.SlackBuild
index eb1ce668ce..bc5f30760e 100644
--- a/multimedia/guvcview/guvcview.SlackBuild
+++ b/multimedia/guvcview/guvcview.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for GuvcView.
+# Slackware build script for guvcview
#
-# Copyright 2010-2017 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
+# Copyright 2010-2024 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=guvcview
-VERSION=${VERSION:-2.0.6}
+VERSION=${VERSION:-2.1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
DOCS="AUTHORS COPYING ChangeLog INSTALL README.md"
@@ -37,14 +40,15 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-# By default, we will use PulseAudio
-PULSE=${PULSE:-"yes"}
-
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
@@ -59,20 +63,14 @@ else
LIBDIRSUFFIX=""
fi
-# Give users an option to disable PulseAudio
-if [ "$PULSE" = "NO" ]; then
- PULSEAUDIO="--disable-pulse"
-else
- PULSEAUDIO=""
-fi
-
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-src-$VERSION
-tar xvf $CWD/$PRGNAM-src-$VERSION.tar.gz
+mkdir -p $PRGNAM-src-$VERSION
+tar xvf $CWD/$PRGNAM-src-$VERSION.tar.bz2
cd $PRGNAM-src-$VERSION
chown -R root:root .
find -L . \
@@ -91,12 +89,14 @@ CXXFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--disable-debian-menu \
--enable-static=no \
- --build=$ARCH-slackware-linux \
- $PULSEAUDIO
+ --enable-qt5 \
+ --build=$ARCH-slackware-linux
make
make install DESTDIR=$PKG
+rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/*.la
+
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
@@ -115,4 +115,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/guvcview/guvcview.info b/multimedia/guvcview/guvcview.info
index 61a7a8c434..18535e84ef 100644
--- a/multimedia/guvcview/guvcview.info
+++ b/multimedia/guvcview/guvcview.info
@@ -1,10 +1,10 @@
PRGNAM="guvcview"
-VERSION="2.0.6"
+VERSION="2.1.0"
HOMEPAGE="http://guvcview.sourceforge.net/"
-DOWNLOAD="http://downloads.sourceforge.net/project/guvcview/source/guvcview-src-2.0.6.tar.gz"
-MD5SUM="ea35acb3a97952ceca26d92478b6e7ea"
+DOWNLOAD="http://downloads.sourceforge.net/project/guvcview/source/guvcview-src-2.1.0.tar.bz2"
+MD5SUM="43593ab63c9fa7e31105d6552d926bf4"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg portaudio SDL2"
+REQUIRES="portaudio"
MAINTAINER="Willy Sudiarto Raharjo"
EMAIL="willysr@slackbuilds.org"
diff --git a/multimedia/gxine/README b/multimedia/gxine/README
new file mode 100644
index 0000000000..04c5459f41
--- /dev/null
+++ b/multimedia/gxine/README
@@ -0,0 +1,5 @@
+GXine is a graphical frontend to the Xine Multimedia
+player. It can play MPEG system streams [audio and video],
+MPEG elementary streams such as mp3,mpa or mpv files, MPEG
+transport stream, AVI,ASF,quicktime as well as (S)VCD and
+DVD files. Anything Xine-lib can handle.
diff --git a/multimedia/miro/doinst.sh b/multimedia/gxine/doinst.sh
index 0fb9c8b686..aea0f894eb 100644
--- a/multimedia/miro/doinst.sh
+++ b/multimedia/gxine/doinst.sh
@@ -11,4 +11,3 @@ if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
/usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
fi
fi
-
diff --git a/multimedia/kdenlive/kdenlive.SlackBuild b/multimedia/gxine/gxine.SlackBuild
index 9304f04db7..9f99bfbeff 100644
--- a/multimedia/kdenlive/kdenlive.SlackBuild
+++ b/multimedia/gxine/gxine.SlackBuild
@@ -1,9 +1,8 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for kdenlive
+# Slackware build script for gxine
-# Copyright 2014 Tak Ooishi, Alberta, Canada <rootisfun (at) gadgetinventor com>
-# Original SBo script by stormtracknole <stormtracknole (at) gmail com> 8/5/2009
+# Copyright 2023 Vijay Marcel
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,62 +22,47 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# CHANGELOG
-# ---------
-# 2014 MAY 22
-# SBo maintainer change: Tak Ooishi <rootisfun (at) gadgetinventor com>
-# * Add license to build script as per SBo requirement
-# * Updated to version 0.9.8 released on 2014 MAY 14
-# * Upstream tarball filename format changed again
-# * Workaround for CMakeList.txt error at build time
-# * Updated slack-desc and README
-# * INSTALL no longer in upstream tarball
-# * Add ChangeLog to installed documentation
-# * Minor changes for consistency with SBo cmake-template
-# +---------------------------------------+
-# stormtracknole stormtracknole@gmail.com
-# 8/5/2009
-# +---------------------------------------+
-# May 16, 2011
-# *Upgraded to version 0.8.
-# *qjson added as a new dependency.
-# +---------------------------------------+
-# Dec 14, 2011
-# *Upgraded to version 0.8.2
-# +---------------------------------------+
-# Jul 2, 2012
-# *Upgraded to version 0.9.2
-# *Hosting location of the src file
-# changed.
-# *Upstream is now tarring files as
-# bz2 instead of gz.
-# +---------------------------------------+
-
-PRGNAM=kdenlive
-VERSION=${VERSION:-0.9.10}
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=gxine
+VERSION=${VERSION:-0.5.910}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+PREPROCESS="-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS"
+
+HARDENING="-fexceptions -fstack-protector-strong -fstack-clash-protection -mindirect-branch=thunk -mfunction-return=thunk -mneeded -fPIE"
+
+SLDFLAGS="-pie -Wl,-z,relro -Wl,-z,separate-code -Wl,-z,now -Wl,-z,noexecstack -Wl,-z,defs"
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="$PREPROCESS -march=i586 -mtune=i686 -pipe -O2 -fPIC $HARDENING"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ SLKCFLAGS="$PREPROCESS -march=i686 -mtune=i686 -pipe -O2 -fPIC $HARDENING"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="$PREPROCESS -march=x86-64 -mtune=generic -pipe -O2 -fPIC $HARDENING"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
@@ -87,13 +71,15 @@ else
fi
set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
cd $PRGNAM-$VERSION
+
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -101,17 +87,39 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-mkdir build
-cd build
-cmake \
- -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_VERBOSE_MAKEFILE=ON \
- ..
+for size in 64 64 ; do
+convert $TMP/${PRGNAM}-${VERSION}/pixmaps/${PRGNAM}.png -resize ${size}x${size}! \
+ $TMP/${PRGNAM}-${VERSION}/pixmaps/Gxine.png
+done
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+LDFLAGS="$SLDFLAGS" \
+./autogen.sh \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --enable-static=no \
+ --build=$ARCH-slackware-linux \
+ --host=$ARCH-slackware-linux \
+ --with-xcb \
+ --with-x \
+ --enable-watchdog \
+ --disable-deprecated \
+ --without-hal \
+ --with-gtk3 \
+ --with-gudev \
+ --with-logo-format=auto
+
make
make install DESTDIR=$PKG
-cd ..
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/gxine/*.la
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
@@ -119,13 +127,21 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+rm -rvf $PKG/usr/share/applications/gxine.desktop
+install -Dm0644 $CWD/gxine.desktop -t $PKG/usr/share/applications
+rm -rvf $PKG/usr/share/icons/hicolor/64x64/apps/gxine.png
+rm -rvf $PKG/usr/share/pixmaps/gxine.png
+install -Dm0644 $TMP/$PRGNAM-$VERSION/pixmaps/Gxine.png -t $PKG/usr/share/pixmaps/
+install -Dm0644 $TMP/$PRGNAM-$VERSION/pixmaps/Gxine.png -t $PKG/usr/share/icons/hicolor/64x64/apps/
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS COPYING README ChangeLog $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS ChangeLog COPYING README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/gxine/gxine.desktop b/multimedia/gxine/gxine.desktop
new file mode 100644
index 0000000000..00dc6ecbd6
--- /dev/null
+++ b/multimedia/gxine/gxine.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Name=gxine
+Comment=Watch videos or TV and listen to audio in a variety of formats
+GenericName=Video Player
+Exec=gxine %U
+X-MultipleArgs=true
+Icon=Gxine
+Terminal=false
+Type=Application
+StartupNotify=true
+Categories=AudioVideo;Video;GTK;Player;TV;
+MimeType=x-content/video-dvd;x-content/audio-cdda;x-content/video-vcd;x-content/video-svcd;
diff --git a/multimedia/gxine/gxine.info b/multimedia/gxine/gxine.info
new file mode 100644
index 0000000000..58553ce7f7
--- /dev/null
+++ b/multimedia/gxine/gxine.info
@@ -0,0 +1,10 @@
+PRGNAM="gxine"
+VERSION="0.5.910"
+HOMEPAGE="https://sourceforge.net/projects/xine"
+DOWNLOAD="https://downloads.sourceforge.net/xine/gxine/gxine-0.5.910.tar.xz"
+MD5SUM="33f507b1014e928799dc2fe1c755fda6"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="js185 gnome-vfs lirc"
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/gxine/slack-desc b/multimedia/gxine/slack-desc
new file mode 100644
index 0000000000..4ab211ce40
--- /dev/null
+++ b/multimedia/gxine/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+gxine: gxine (Xine GUI Frontend)
+gxine:
+gxine: GXine is a graphical frontend to the Xine Multimedia
+gxine: player. It can play MPEG system streams [audio and video],
+gxine: MPEG elementary streams such as mp3,mpa or mpv files, MPEG
+gxine: transport stream, AVI,ASF,quicktime as well as (S)VCD and
+gxine: DVD files. Anything Xine-lib can handle.
+gxine:
+gxine: Homepage:https://sourforge.net/projects/xine
+gxine:
+gxine:
diff --git a/multimedia/haruna/README b/multimedia/haruna/README
new file mode 100644
index 0000000000..ebd6b7398c
--- /dev/null
+++ b/multimedia/haruna/README
@@ -0,0 +1,13 @@
+Haruna Video Player
+
+Haruna is an open source video player built with Qt/QML and libmpv
+
+Features
+these are just some features that set Haruna apart from others players
+
+- play online videos, through yt-dlp
+- toggle playlist with mouse-over, playlist overlays the video
+- auto skip chapter containing certain words
+- configurable shortcuts and mouse buttons
+- quick jump to next chapter by middle click on progress bar
+
diff --git a/multimedia/haruna/doinst.sh b/multimedia/haruna/doinst.sh
new file mode 100644
index 0000000000..be52e823bf
--- /dev/null
+++ b/multimedia/haruna/doinst.sh
@@ -0,0 +1,11 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications
+fi
+
+# If other icon themes are installed, then add to/modify this as needed
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+
diff --git a/multimedia/haruna/haruna.SlackBuild b/multimedia/haruna/haruna.SlackBuild
new file mode 100644
index 0000000000..4481cf9698
--- /dev/null
+++ b/multimedia/haruna/haruna.SlackBuild
@@ -0,0 +1,101 @@
+#!/bin/bash
+
+# Copyright 2022 marav, Paris, FR
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=haruna
+VERSION=${VERSION:-0.12.3}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i586 ;;
+ arm*) export ARCH=arm ;;
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z || exit 1
+cd $PRGNAM-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \+
+
+mkdir build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install DESTDIR=$PKG
+cd ..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ LICENSES/* \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -rf $PKG/usr/share/doc
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/haruna/haruna.info b/multimedia/haruna/haruna.info
new file mode 100644
index 0000000000..c63e693c1c
--- /dev/null
+++ b/multimedia/haruna/haruna.info
@@ -0,0 +1,10 @@
+PRGNAM="haruna"
+VERSION="0.12.3"
+HOMEPAGE="https://apps.kde.org/haruna/"
+DOWNLOAD="https://download.kde.org/stable/haruna/haruna-0.12.3.tar.xz"
+MD5SUM="8369fde2841a696bfd027c9c18a82fc0"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="mpv yt-dlp"
+MAINTAINER="marav"
+EMAIL="marav8@free.fr"
diff --git a/multimedia/haruna/slack-desc b/multimedia/haruna/slack-desc
new file mode 100644
index 0000000000..56792f5c1e
--- /dev/null
+++ b/multimedia/haruna/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+haruna: haruna (Video Player)
+haruna:
+haruna: haruna is an open source video player built with Qt/QML
+haruna: and libmpv
+haruna:
+haruna:
+haruna:
+haruna: Homepage: https://apps.kde.org/haruna/
+haruna:
+haruna:
+haruna:
diff --git a/multimedia/hexter/hexter.SlackBuild b/multimedia/hexter/hexter.SlackBuild
index 65415792ab..243c0c9d2a 100644
--- a/multimedia/hexter/hexter.SlackBuild
+++ b/multimedia/hexter/hexter.SlackBuild
@@ -1,11 +1,14 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <hexter>
# Written by Michales Michaloudes korgie@gmail.com
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=hexter
VERSION=${VERSION:-1.0.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -15,7 +18,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -46,9 +53,11 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+
+SLKCFLAGS+=" -lm"
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -78,4 +87,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/huludesktop/huludesktop.SlackBuild b/multimedia/huludesktop/huludesktop.SlackBuild
index 63b1b514b4..0793f5bd44 100644
--- a/multimedia/huludesktop/huludesktop.SlackBuild
+++ b/multimedia/huludesktop/huludesktop.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Slackware build script for Hulu Desktop
#
@@ -22,27 +22,44 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=huludesktop
VERSION=${VERSION:-0.9.8}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
-CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-case "$(uname -m)" in
- i?86) DEBARCH="i386" ; ARCH=i386 ;;
- x86_64) DEBARCH="amd64" ; ARCH=x86_64 ;;
- *) echo "Package for $(uname -m) architecture is not available." ; exit 1 ;;
-esac
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
-set -eu
+if [ "$ARCH" = "x86_64" ]; then
+ DEBARCH="amd64"
+elif [[ $ARCH =~ i?86 ]]; then
+ DEBARCH="i386"
+else
+ echo "$ARCH architecture is unsupported." >/dev/stderr
+ exit 1
+fi
REAL_VER=$(ar p ${PRGNAM}_${DEBARCH}.deb control.tar.gz | tar zxO ./control \
| grep Version | awk '{print $2}' | cut -d- -f1)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$REAL_VER-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+set -eu
+
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $PKG
@@ -67,4 +84,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$REAL_VER-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$REAL_VER-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/huludesktop/huludesktop.info b/multimedia/huludesktop/huludesktop.info
index 9a9099b27b..44f005053e 100644
--- a/multimedia/huludesktop/huludesktop.info
+++ b/multimedia/huludesktop/huludesktop.info
@@ -5,6 +5,6 @@ DOWNLOAD="http://ponce.cc/slackware/sources/repo/huludesktop_i386.deb"
MD5SUM="d9b27d1837ab86526100964e80c3cdd1"
DOWNLOAD_x86_64="http://ponce.cc/slackware/sources/repo/huludesktop_amd64.deb"
MD5SUM_x86_64="bccc94d7f327989dab2653d254f40869"
-REQUIRES="flashplayer-plugin"
+REQUIRES=""
MAINTAINER="Erik Hanson"
EMAIL="erik@slackbuilds.org"
diff --git a/multimedia/iat/README b/multimedia/iat/README
index c290afd127..d65061d502 100644
--- a/multimedia/iat/README
+++ b/multimedia/iat/README
@@ -1,5 +1,5 @@
-IAT (Iso9660 Analyzer Tool is a tool for detecting the structure of many types
-of CD/DVD images and is part of iGnus Project.
+IAT (Iso9660 Analyzer Tool is a tool for detecting the structure of
+many types of CD/DVD images and is part of iGnus Project.
With Iso9660 Analyzer Tool you can:
* Create Cuesheet file from image CD/DVD
diff --git a/multimedia/iat/iat.SlackBuild b/multimedia/iat/iat.SlackBuild
index f086ec0e46..225b419e02 100644
--- a/multimedia/iat/iat.SlackBuild
+++ b/multimedia/iat/iat.SlackBuild
@@ -1,12 +1,15 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for iat
# Written by Elvio Basello <hellvis69 at slackware dot it>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=iat
VERSION=${VERSION:-0.1.7}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -16,7 +19,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -78,4 +88,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/imagination/imagination.SlackBuild b/multimedia/imagination/imagination.SlackBuild
index 13a249b69f..b18dd1920d 100644
--- a/multimedia/imagination/imagination.SlackBuild
+++ b/multimedia/imagination/imagination.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for imagination
-# Maintained by Klaatu @member.fsf.org
+# Maintained by Klaatu <klaatu@member.fsf.org> | Lawrence NZ
# Copyright 2011 by Giovanne Castro, Campinas, Sao Paulo, Brazil <giovannefc@ig.com.br>
# All rights reserved.
#
@@ -23,10 +23,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=imagination
-VERSION=${VERSION:-3.1}
+VERSION=${VERSION:-3.6}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -61,7 +71,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
@@ -92,7 +102,7 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \
+ AUTHORS COPYING ChangeLog INSTALL README TODO \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -101,4 +111,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/imagination/imagination.info b/multimedia/imagination/imagination.info
index ec367cb94a..36c50e9fb8 100644
--- a/multimedia/imagination/imagination.info
+++ b/multimedia/imagination/imagination.info
@@ -1,10 +1,10 @@
PRGNAM="imagination"
-VERSION="3.1"
+VERSION="3.6"
HOMEPAGE="http://imagination.sourceforge.net/"
-DOWNLOAD="http://downloads.sourceforge.net/imagination/imagination-3.1.tar.bz2"
-MD5SUM="0c430f90a58cbd6c9fcebf1f8385d777"
+DOWNLOAD="https://sourceforge.net/projects/imagination/files/imagination-3.6.tar.gz"
+MD5SUM="798bcb72a939f5c6c48801fd0442f1b3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg"
+REQUIRES=""
MAINTAINER="Klaatu"
EMAIL="klaatu@member.fsf.org"
diff --git a/multimedia/inputstream.adaptive/README b/multimedia/inputstream.adaptive/README
new file mode 100644
index 0000000000..923b804ff6
--- /dev/null
+++ b/multimedia/inputstream.adaptive/README
@@ -0,0 +1,16 @@
+InputStream Adaptive (inputstream.adaptive) is a binary kodi addon
+that acts as a demuxer for segmented, multi-bitrate internet streams.
+On Kodi, InputStream Adaptive serves as a client for adaptive streams
+and can even play DRM content using an external library.
+
+It is an essential component for many popular video addons including
+Hummingbird, Netflix, YouTube, Disney Plus, Amazon Prime Video and SGK
+Live-Portal.
+
+NOTE: Many, if not all, players using inputstream.adaptive will
+require downloading and installing the Widevine Content Decryption
+Module (CDM). Widevine CDM is DRM licensing and encryption technology
+that is owned and maintained by Google.
+
+Kodi will prompt you to agree to download and install it the first
+time Widevine CDM is requested for use.
diff --git a/multimedia/inputstream.adaptive/inputstream.adaptive.SlackBuild b/multimedia/inputstream.adaptive/inputstream.adaptive.SlackBuild
new file mode 100644
index 0000000000..9309853146
--- /dev/null
+++ b/multimedia/inputstream.adaptive/inputstream.adaptive.SlackBuild
@@ -0,0 +1,114 @@
+#!/bin/bash
+
+# Slackware build script for inputstream.adaptive
+
+# Copyright 2022-2024 Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=inputstream.adaptive
+CODNAM=Omega
+VERSION=${VERSION:-21.4.4}
+BENTO4VER=${BENTO4VER:-1.6.0-641}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION-$CODNAM
+tar xvf $CWD/$PRGNAM-$VERSION-$CODNAM.tar.gz
+cd $PRGNAM-$VERSION-$CODNAM
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+
+ # Requires internal bento4 as it won't work with external bento4
+ # when built with apps.
+ # See https://github.com/xbmc/inputstream.adaptive/issues/859#issuecomment-1429396200
+
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS -Wno-deprecated-declarations" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -Wno-deprecated-declarations" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DENABLE_INTERNAL_BENTO4=ON \
+ -DBENTO4_URL=$CWD/Bento4-$BENTO4VER-$CODNAM.tar.gz \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ LICENSE.md README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/inputstream.adaptive/inputstream.adaptive.info b/multimedia/inputstream.adaptive/inputstream.adaptive.info
new file mode 100644
index 0000000000..534cfa6cc5
--- /dev/null
+++ b/multimedia/inputstream.adaptive/inputstream.adaptive.info
@@ -0,0 +1,12 @@
+PRGNAM="inputstream.adaptive"
+VERSION="21.4.4"
+HOMEPAGE="https://github.com/xbmc/inputstream.adaptive/"
+DOWNLOAD="https://github.com/xbmc/inputstream.adaptive/archive/21.4.4-Omega/inputstream.adaptive-21.4.4-Omega.tar.gz \
+ https://github.com/xbmc/Bento4/archive/refs/tags/1.6.0-641-Omega/Bento4-1.6.0-641-Omega.tar.gz"
+MD5SUM="ac05307397df43eb6cc77c8379275056 \
+ 77b1246f0d738ee4f2006c27eb48d3c8"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="kodi pycryptodomex pugixml"
+MAINTAINER="Jeremy Hansen"
+EMAIL="jebrhansen+SBo@gmail.com"
diff --git a/multimedia/inputstream.adaptive/slack-desc b/multimedia/inputstream.adaptive/slack-desc
new file mode 100644
index 0000000000..6db0c57095
--- /dev/null
+++ b/multimedia/inputstream.adaptive/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+inputstream.adaptive: inputstream.adaptive (kodi addon for adaptive streams)
+inputstream.adaptive:
+inputstream.adaptive: InputStream Adaptive (inputstream.adaptive) is a binary kodi addon
+inputstream.adaptive: that acts as a demuxer for segmented, multi-bitrate internet streams.
+inputstream.adaptive: On Kodi, InputStream Adaptive serves as a client for adaptive streams
+inputstream.adaptive: and can even play DRM content using an external library.
+inputstream.adaptive:
+inputstream.adaptive: It is an essential component for many popular video addons including
+inputstream.adaptive: Hummingbird, Netflix, YouTube, Disney Plus, Amazon Prime Video and SGK
+inputstream.adaptive: Live-Portal.
+inputstream.adaptive:
diff --git a/multimedia/intel-gmmlib/README b/multimedia/intel-gmmlib/README
new file mode 100644
index 0000000000..c0ef0fe205
--- /dev/null
+++ b/multimedia/intel-gmmlib/README
@@ -0,0 +1,3 @@
+The Intel(R) Graphics Memory Management Library provides device specific
+and buffer management for the Intel(R) Graphics Compute Runtime for
+OpenCL(TM) and the Intel(R) Media Driver for VAAPI.
diff --git a/multimedia/tomahawk/tomahawk.SlackBuild b/multimedia/intel-gmmlib/intel-gmmlib.SlackBuild
index fa9861d1b4..0d62385bcf 100644
--- a/multimedia/tomahawk/tomahawk.SlackBuild
+++ b/multimedia/intel-gmmlib/intel-gmmlib.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for tomahawk
+# Slackware build script for intel-gmmlib
-# Copyright 2015 Thorn Inurcide USA
+# Copyright 2021 Mario Preksavec, Zagreb, Croatia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,15 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=tomahawk
-VERSION=${VERSION:-0.8.4}
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=intel-gmmlib
+VERSION=${VERSION:-21.3.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+SRCNAM=gmmlib-$PRGNAM
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +40,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -59,9 +68,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
-cd $PRGNAM-$VERSION
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
+cd $SRCNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -69,33 +78,29 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# Compare taglib version properly (fix for taglib-1.10)
-# https://github.com/tomahawk-player/tomahawk/commit/ee4656383a92a78299aff6f8637f174fff328e98
-patch -p1 < $CWD/ee4656383a92a78299aff6f8637f174fff328e98.patch
-
mkdir -p build
cd build
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DLIB_SUFFIX=${LIBDIRSUFFIX} \
- -DBUILD_WITH_QT4="ON" \
+ -Wno-dev \
-DCMAKE_BUILD_TYPE=Release ..
make
- make install DESTDIR=$PKG
+ make install/strip DESTDIR=$PKG
cd ..
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS ChangeLog* LICENSE* PACKAGING* README* $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSE.md README.rst $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/intel-gmmlib/intel-gmmlib.info b/multimedia/intel-gmmlib/intel-gmmlib.info
new file mode 100644
index 0000000000..56c6e5218b
--- /dev/null
+++ b/multimedia/intel-gmmlib/intel-gmmlib.info
@@ -0,0 +1,10 @@
+PRGNAM="intel-gmmlib"
+VERSION="21.3.1"
+HOMEPAGE="https://github.com/intel/gmmlib/"
+DOWNLOAD="https://github.com/intel/gmmlib/archive/intel-gmmlib-21.3.1/gmmlib-intel-gmmlib-21.3.1.tar.gz"
+MD5SUM="e6755c5d0f44e336f298cee9c7c3fdae"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Mario Preksavec"
+EMAIL="mario at slackware dot hr"
diff --git a/multimedia/intel-gmmlib/slack-desc b/multimedia/intel-gmmlib/slack-desc
new file mode 100644
index 0000000000..1dbed8d8b5
--- /dev/null
+++ b/multimedia/intel-gmmlib/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+intel-gmmlib: intel-gmmlib (The Intel(R) Graphics Memory Management Library)
+intel-gmmlib:
+intel-gmmlib: The Intel(R) Graphics Memory Management Library provides device
+intel-gmmlib: specific and buffer management for the Intel(R) Graphics Compute
+intel-gmmlib: Runtime for OpenCL(TM) and the Intel(R) Media Driver for VAAPI.
+intel-gmmlib:
+intel-gmmlib:
+intel-gmmlib:
+intel-gmmlib:
+intel-gmmlib:
+intel-gmmlib:
diff --git a/multimedia/intel-media-driver/README b/multimedia/intel-media-driver/README
new file mode 100644
index 0000000000..874e5090d1
--- /dev/null
+++ b/multimedia/intel-media-driver/README
@@ -0,0 +1,3 @@
+The Intel(R) Media Driver for VAAPI is a new VA-API (Video Acceleration
+API) user mode driver supporting hardware accelerated decoding,
+encoding, and video post processing for GEN based graphics hardware.
diff --git a/multimedia/freshplayerplugin/freshplayerplugin.SlackBuild b/multimedia/intel-media-driver/intel-media-driver.SlackBuild
index 652979d681..dfb1b3b30b 100644
--- a/multimedia/freshplayerplugin/freshplayerplugin.SlackBuild
+++ b/multimedia/intel-media-driver/intel-media-driver.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for freshplayerplugin
+# Slackware build script for intel-media-driver
-# Copyright 2015-2019 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
+# Copyright 2021 Mario Preksavec, Zagreb, Croatia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,15 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=freshplayerplugin
-VERSION=${VERSION:-0.3.11}
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=intel-media-driver
+VERSION=${VERSION:-21.3.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+SRCNAM=intel-media
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +40,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -54,43 +63,43 @@ else
LIBDIRSUFFIX=""
fi
-DOCS="COPYING ChangeLog LICENSE README.md data/freshwrapper.conf.example"
-
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || tar xvf $CWD/v$VERSION.tar.?z*
-cd $PRGNAM-$VERSION
+rm -rf media-driver-$SRCNAM-$VERSION
+tar xvf $CWD/media-driver-$SRCNAM-$VERSION.tar.gz
+cd media-driver-$SRCNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
mkdir -p build
cd build
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release ..
make
- install -D -m 0644 libfreshwrapper-flashplayer.so \
- $PKG/usr/lib$LIBDIRSUFFIX/mozilla/plugins/libfreshwrapper-flashplayer.so
+ make install/strip DESTDIR=$PKG
cd ..
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a CODEOWNERS LICENSE.md README.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/intel-media-driver/intel-media-driver.info b/multimedia/intel-media-driver/intel-media-driver.info
new file mode 100644
index 0000000000..9516ea42a4
--- /dev/null
+++ b/multimedia/intel-media-driver/intel-media-driver.info
@@ -0,0 +1,10 @@
+PRGNAM="intel-media-driver"
+VERSION="21.3.5"
+HOMEPAGE="https://github.com/intel/media-driver/"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/intel/media-driver/archive/intel-media-21.3.5/media-driver-intel-media-21.3.5.tar.gz"
+MD5SUM_x86_64="3ace8aec373b3990acb1e3270e4a9e0b"
+REQUIRES="intel-gmmlib"
+MAINTAINER="Mario Preksavec"
+EMAIL="mario at slackware dot hr"
diff --git a/multimedia/flashplayer-plugin/slack-desc b/multimedia/intel-media-driver/slack-desc
index fd64680ce8..797217d89e 100644
--- a/multimedia/flashplayer-plugin/slack-desc
+++ b/multimedia/intel-media-driver/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-flashplayer-plugin: flashplayer-plugin (flash plugin for web browsers)
-flashplayer-plugin:
-flashplayer-plugin: Provides Adobe Flash plugin for browsers that recognize
-flashplayer-plugin: /usr/lib(64)/mozilla/plugins as a valid plugin directory
-flashplayer-plugin:
-flashplayer-plugin: Plugin is subject to Adobe terms of use:
-flashplayer-plugin: https://www.adobe.com/misc/terms.html
-flashplayer-plugin:
-flashplayer-plugin:
-flashplayer-plugin:
-flashplayer-plugin:
+intel-media-driver: intel-media-driver (The Intel(R) Media Driver for VAAPI)
+intel-media-driver:
+intel-media-driver: The Intel(R) Media Driver for VAAPI is a new VA-API (Video
+intel-media-driver: Acceleration API) user mode driver supporting hardware accelerated
+intel-media-driver: decoding, encoding, and video post processing for GEN based graphics
+intel-media-driver: hardware.
+intel-media-driver:
+intel-media-driver:
+intel-media-driver:
+intel-media-driver:
+intel-media-driver:
diff --git a/multimedia/intel-media-sdk/README b/multimedia/intel-media-sdk/README
new file mode 100644
index 0000000000..5456e3ed25
--- /dev/null
+++ b/multimedia/intel-media-sdk/README
@@ -0,0 +1,11 @@
+Intel(R) Media SDK provides a plain C API to access hardware-accelerated
+video decode, encode and filtering on Intel(R) Gen graphics hardware
+platforms. Implementation written in C++ 11 with parts in C-for-Media
+(CM).
+
+Supported video encoders: HEVC, AVC, MPEG-2, JPEG, VP9
+
+Supported video decoders: HEVC, AVC, VP8, VP9, MPEG-2, VC1, JPEG, AV1
+
+Supported video pre-processing filters: Color Conversion, Deinterlace,
+Denoise, Resize, Rotate, Composition
diff --git a/multimedia/intel-media-sdk/intel-media-sdk.SlackBuild b/multimedia/intel-media-sdk/intel-media-sdk.SlackBuild
new file mode 100644
index 0000000000..2c3f1e67bf
--- /dev/null
+++ b/multimedia/intel-media-sdk/intel-media-sdk.SlackBuild
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+# Slackware build script for intel-media-sdk
+
+# Copyright 2021 Mario Preksavec, Zagreb, Croatia
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=intel-media-sdk
+VERSION=${VERSION:-21.3.5}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+SRCNAM=intel-mediasdk
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf MediaSDK-$SRCNAM-$VERSION
+tar xvf $CWD/MediaSDK-$SRCNAM-$VERSION.tar.gz
+cd MediaSDK-$SRCNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_TOOLS:BOOL="ON" \
+ -DENABLE_OPENCL:BOOL="OFF" \
+ -DENABLE_X11_DRI3:BOOL="ON" \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ CHANGELOG.md CODEOWNERS CONTRIBUTING.md LICENSE README.rst \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/intel-media-sdk/intel-media-sdk.info b/multimedia/intel-media-sdk/intel-media-sdk.info
new file mode 100644
index 0000000000..8ac23ebd28
--- /dev/null
+++ b/multimedia/intel-media-sdk/intel-media-sdk.info
@@ -0,0 +1,10 @@
+PRGNAM="intel-media-sdk"
+VERSION="21.3.5"
+HOMEPAGE="https://github.com/Intel-Media-SDK/MediaSDK/"
+DOWNLOAD="https://github.com/Intel-Media-SDK/MediaSDK/archive/intel-mediasdk-21.3.5/MediaSDK-intel-mediasdk-21.3.5.tar.gz"
+MD5SUM="7a71beb6def13ab71348785a8880dd0a"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Mario Preksavec"
+EMAIL="mario at slackware dot hr"
diff --git a/multimedia/intel-media-sdk/slack-desc b/multimedia/intel-media-sdk/slack-desc
new file mode 100644
index 0000000000..977888fe5b
--- /dev/null
+++ b/multimedia/intel-media-sdk/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+intel-media-sdk: intel-media-sdk (Intel(R) Media SDK)
+intel-media-sdk:
+intel-media-sdk: Intel(R) Media SDK provides a plain C API to access
+intel-media-sdk: hardware-accelerated video decode, encode and filtering on Intel(R)
+intel-media-sdk: Gen graphics hardware platforms. Implementation written in C++ 11
+intel-media-sdk: with parts in C-for-Media (CM).
+intel-media-sdk:
+intel-media-sdk:
+intel-media-sdk:
+intel-media-sdk:
+intel-media-sdk:
diff --git a/multimedia/iptvnator/README b/multimedia/iptvnator/README
new file mode 100644
index 0000000000..de5739ac64
--- /dev/null
+++ b/multimedia/iptvnator/README
@@ -0,0 +1,32 @@
+IPTVnator - IPTV Player Application
+
+IPTVnator is a video player application that provides support for the
+playback of IPTV playlists (m3u, m3u8).
+The application allows to import playlists by using remote URLs or per
+file upload from the file system. Additionally there is a support of EPG
+information XMLTV-based which can be provided by URL.
+
+The application is a cross-platform and open source project based on
+Electron and Angular.
+
+Note: IPTVnator doesn't provide any playlists or other digital
+content.
+
+Features
+- M3u and M3u8 playlists support
+- Xtream Code (XC) and Stalker portal (STB) support
+- External player support - mvp, VLC
+- Add playlists from file system or from remote URL
+- Playlists auto-update feature on app startup
+- Search for channels
+- EPG support (TV Guide) with detailed info
+- TV archive/catchup/timeshift
+- Group-based channels list
+- Save channels as favorites
+- Global favorites aggregated from all playlists
+- HTML video player with hls.js support or Video.js based player
+- Internalization, currently 8 languages are supported (en, ru, de, ko,
+ es, zh, fr, it)
+- Set custom "User Agent" header for a playlist
+- Light and Dark theme
+- Version for self-hosted docker is available
diff --git a/multimedia/kdenlive/doinst.sh b/multimedia/iptvnator/doinst.sh
index 6c9ac6b5e3..aea0f894eb 100644
--- a/multimedia/kdenlive/doinst.sh
+++ b/multimedia/iptvnator/doinst.sh
@@ -11,9 +11,3 @@ if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
/usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
fi
fi
-
-if [ -e usr/share/icons/oxygen/icon-theme.cache ]; then
- if [ -x /usr/bin/gtk-update-icon-cache ]; then
- /usr/bin/gtk-update-icon-cache -f usr/share/icons/oxygen >/dev/null 2>&1
- fi
-fi
diff --git a/multimedia/mkvalidator/mkvalidator.SlackBuild b/multimedia/iptvnator/iptvnator.SlackBuild
index 0a37ddfdb7..02cb821343 100644
--- a/multimedia/mkvalidator/mkvalidator.SlackBuild
+++ b/multimedia/iptvnator/iptvnator.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
-#
-# Slackware build script for mkvalidator.
-#
-# Copyright 2016-2020 Edinaldo P. Silva, Rio de Janeiro, Brazil.
+#!/bin/bash
+
+# Slackware build script for iptvnator
+
+# Copyright 2023-2024 Marco Lavorini, Campiglia Marittima Italy
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=mkvalidator
-VERSION=${VERSION:-0.5.2}
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=iptvnator
+VERSION=${VERSION:-0.15.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,25 +38,20 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- _target="gcc_linux"
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- _target="gcc_linux"
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- _target="gcc_linux_x64"
-elif [ "$ARCH" = "arm" ]; then
- SLKCFLAGS="-O2"
- _target="gcc_linux_arm"
+if [ "$ARCH" = "x86_64" ]; then
+ SUFFIX="amd64"
else
- SLKCFLAGS="-O2"
+ echo Arch $ARCH not supported!
+ exit 1
fi
set -e
@@ -61,38 +59,37 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-mkdir $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM
+mkdir -p $PRGNAM
+cd $PRGNAM
+ar -x $CWD/$PRGNAM\_$VERSION\_$SUFFIX.deb
+tar xvf data.tar.xz -C $PKG
+cd $PKG
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} + -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-sed "s|/usr/local|$PKG/usr|g" -i corec/tools/coremake/gcc_mak.inc
-sed 's|arm-linux-gnueabi-||g' -i corec/tools/coremake/gcc_linux_arm.build
-
-gcc $SLKCFLAGS -o coremake corec/tools/coremake/coremake.c
-./coremake ${_target}
-
-cd $PRGNAM
-make
-
-install -d $PKG/usr/bin
-make install
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp ../ChangeLog.txt ../ReadMe.txt $PKG/usr/doc/$PRGNAM-$VERSION/
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+mv $PKG/usr/share/doc/$PRGNAM/* $PKG/usr/doc/$PRGNAM-$VERSION/
+rm -Rf $PKG/usr/share/doc/
+
+mkdir -p $PKG/usr/bin/
+ln -sf ../../opt/IPTVnator/iptvnator $PKG/usr/bin/iptvnator
+chmod 4755 $PKG/opt/IPTVnator/chrome-sandbox
+
+sed -i "s|/opt/IPTVnator/||g" $PKG/usr/share/applications/$PRGNAM.desktop
+sed -i "s|Video|AudioVideo|g" $PKG/usr/share/applications/$PRGNAM.desktop
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/iptvnator/iptvnator.info b/multimedia/iptvnator/iptvnator.info
new file mode 100644
index 0000000000..1755e4f210
--- /dev/null
+++ b/multimedia/iptvnator/iptvnator.info
@@ -0,0 +1,10 @@
+PRGNAM="iptvnator"
+VERSION="0.15.1"
+HOMEPAGE="https://github.com/4gray/iptvnator"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/4gray/iptvnator/releases/download/v0.15.1/iptvnator_0.15.1_amd64.deb"
+MD5SUM_x86_64="35b243ffb88ae2188db4d5d81f4738a3"
+REQUIRES=""
+MAINTAINER="Marco Lavorini"
+EMAIL="sbo.mlavorini@outlook.com"
diff --git a/multimedia/mediatomb/slack-desc b/multimedia/iptvnator/slack-desc
index f4326c71f6..dc1b53780b 100644
--- a/multimedia/mediatomb/slack-desc
+++ b/multimedia/iptvnator/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-mediatomb: mediatomb (UPnP Media Server)
-mediatomb:
-mediatomb: MediaTomb is an open source (GPL) UPnP MediaServer with a nice
-mediatomb: web user interface, it allows you to stream your digital media
-mediatomb: through your home network and listen to/watch it on a variety
-mediatomb: of UPnP compatible devices.
-mediatomb:
-mediatomb: Homepage: http://mediatomb.cc/
-mediatomb:
-mediatomb:
-mediatomb:
+iptvnator: iptvnator (IPTV Player Application)
+iptvnator:
+iptvnator: IPTVnator is a video player application that provides support for
+iptvnator: the playback of IPTV playlists (m3u, m3u8).
+iptvnator:
+iptvnator:
+iptvnator:
+iptvnator: Homepage: https://github.com/4gray/iptvnator
+iptvnator:
+iptvnator:
+iptvnator:
diff --git a/multimedia/ivtv-utils/README b/multimedia/ivtv-utils/README
index f151532b6b..68bf7f3334 100644
--- a/multimedia/ivtv-utils/README
+++ b/multimedia/ivtv-utils/README
@@ -1,8 +1,8 @@
Userspace utilities and firmware for Hauppauge PVR cards.
Note that the header files ivtv.h and ivtvfb.h included in the source
-tarball are already provided by the Linux kernel headers, so the included
-build script removes these.
+tarball are already provided by the Linux kernel headers, so the
+included build script removes these.
Similarly, two binaries v4l2-ctl and ivtv-ctl are provided by v4l-utils
(assuming you did a full Slackware installation) and therefore the in-
diff --git a/multimedia/ivtv-utils/ivtv-utils.SlackBuild b/multimedia/ivtv-utils/ivtv-utils.SlackBuild
index 8ba5f083ed..cea9578bb8 100644
--- a/multimedia/ivtv-utils/ivtv-utils.SlackBuild
+++ b/multimedia/ivtv-utils/ivtv-utils.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for ivtv-utils.
@@ -22,10 +22,16 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20231030 bkw: modified by SlackBuilds.org, BUILD=2:
+# - add missing SlackBuild to /usr/doc dir.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=ivtv-utils
VERSION=${VERSION:-1.4.1}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +41,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -66,9 +76,9 @@ tar xvf $CWD/ivtv-firmware-20080701.tar.gz
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
# Use SLKCFLAGS
sed -i "/^C.*.*FLAGS/s/=/+=/" Makefile
@@ -90,8 +100,10 @@ for file in \
install -D -m644 $file $PKG/lib/firmware/$file
done
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a COPYING* ChangeLog README $PKG/usr/doc/$PRGNAM-$VERSION
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+cp -a COPYING* ChangeLog README $PKGDOC
# N.B. Remove stuff that clobbers existing files - thanks Arch Linux:
# Already provided by kernel headers
@@ -104,4 +116,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/ivtv-utils/ivtv-utils.info b/multimedia/ivtv-utils/ivtv-utils.info
index 54422bd8e8..6e595f0e1b 100644
--- a/multimedia/ivtv-utils/ivtv-utils.info
+++ b/multimedia/ivtv-utils/ivtv-utils.info
@@ -1,10 +1,10 @@
PRGNAM="ivtv-utils"
VERSION="1.4.1"
HOMEPAGE="http://ivtvdriver.org/"
-DOWNLOAD="http://http.debian.net/debian/pool/contrib/i/ivtv-utils/ivtv-utils_1.4.1.orig.tar.gz \
- ftp://ftp.mirrorservice.org/sites/distfiles.gentoo.org/distfiles/ivtv-firmware-20080701.tar.gz"
+DOWNLOAD="https://slackware.uk/~urchlay/src/ivtv-utils_1.4.1.orig.tar.gz \
+ https://distfiles.gentoo.org/distfiles/ad/ivtv-firmware-20080701.tar.gz"
MD5SUM="3a4219d698262ca2b28e41f0f547b0a2 \
- b9a871f1c569025be9c48a77b3515faf"
+ b9a871f1c569025be9c48a77b3515faf"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/jellyfin-bin/README b/multimedia/jellyfin-bin/README
new file mode 100644
index 0000000000..9417a5d22b
--- /dev/null
+++ b/multimedia/jellyfin-bin/README
@@ -0,0 +1,12 @@
+Jellyfin is the volunteer-built media solution that puts you in control
+of your media. Stream to any device from your own server, with no
+strings attached. Your media, your server, your way.
+
+By default, jellyfin will use below folders:
+ -Data /opt/jellyfin/data
+ -Cache /opt/jellyfin/cache
+ -Log /opt/jellyfin/log
+ -Config /opt/jellyfin/config
+To change them, edit /etc/default/jellyfin
+
+For more information read README.SLACKWARE
diff --git a/multimedia/jellyfin-bin/README.SLACKWARE b/multimedia/jellyfin-bin/README.SLACKWARE
new file mode 100644
index 0000000000..e5c2ea53c8
--- /dev/null
+++ b/multimedia/jellyfin-bin/README.SLACKWARE
@@ -0,0 +1,14 @@
+The default configuration is under /etc/default/jellyfin and is s below:
+
+DATADIR=/opt/jellyfin/data
+CACHEDIR=/opt/jellyfin/cache
+CONFIGDIR=/opt/jellyfin/config
+LOGDIR=/opt/jellyfin/log
+
+You can change them as you need and the package updates won't override
+them
+
+It is also possible to run jellyfin under its own user: Usually people
+use jellyfin:jellyfin. If you want to run it under its own user, then
+you have to change the permissions of the DATADIR, CACHEDIR, CONFIGFIR,
+and LOGDIR so jellyfin user can read and write to the folders. \ No newline at end of file
diff --git a/multimedia/jellyfin-bin/doinst.sh b/multimedia/jellyfin-bin/doinst.sh
new file mode 100644
index 0000000000..cda26e8011
--- /dev/null
+++ b/multimedia/jellyfin-bin/doinst.sh
@@ -0,0 +1,24 @@
+# FUNCTION: config()
+# DESCRIPTION: Discards identical copies of config and rc.INIT files.
+# ARGUMENTS: A single filename.
+# NOTE
+# Files should be installed with a .new extension.
+# Example: etc/rc.d/rc.myshinynewdaemon.new
+# We don't clobber if it's avoidable.
+# "slackpkg new-config" is one way that users can list+process .new files.
+
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+# Does the finished package have config files in etc/?
+config etc/default/jellyfin.new
diff --git a/multimedia/jellyfin-bin/jellyfin b/multimedia/jellyfin-bin/jellyfin
new file mode 100644
index 0000000000..ab57c7ab1c
--- /dev/null
+++ b/multimedia/jellyfin-bin/jellyfin
@@ -0,0 +1,8 @@
+# Below is the default values. Change them as you need them
+DATADIR=/opt/jellyfin/data
+CACHEDIR=/opt/jellyfin/cache
+CONFIGDIR=/opt/jellyfin/config
+LOGDIR=/opt/jellyfin/log
+
+#USER=jellyfin
+#GROUP=jellyfin \ No newline at end of file
diff --git a/multimedia/mkclean/mkclean.SlackBuild b/multimedia/jellyfin-bin/jellyfin-bin.SlackBuild
index 6bb84c6480..d76acdafa3 100644
--- a/multimedia/mkclean/mkclean.SlackBuild
+++ b/multimedia/jellyfin-bin/jellyfin-bin.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
-#
-# Slackware build script for mkclean.
-#
-# Copyright 2016-2020 Edinaldo P. Silva, Rio de Janeiro, Brazil.
+#!/bin/bash
+
+# Slackware build script for jellyfin-bin
+
+# Copyright 2023 Ozan Türkyılmaz Türkiye
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,48 +22,41 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=mkclean
-VERSION=${VERSION:-0.8.10}
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=jellyfin-bin
+APPNAME=jellyfin
+ARCHFIX=amd64
+VERSION=${VERSION:-10.8.13}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i586 ;;
+ i?86) ARCH=i586;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- _target="gcc_linux"
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- _target="gcc_linux"
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- _target="gcc_linux_x64"
-elif [ "$ARCH" = "arm" ]; then
- SLKCFLAGS="-O2"
- _target="gcc_linux_arm"
-else
- SLKCFLAGS="-O2"
-fi
-
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
-cd $PRGNAM-$VERSION
+rm -rf "$APPNAME"_"$VERSION"
+tar xvf $CWD/"$APPNAME"_"$VERSION"_"$ARCHFIX".tar.gz
+cd "$APPNAME"_"$VERSION"
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -71,27 +64,28 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-sed "s|/usr/local|$PKG/usr|g" -i corec/tools/coremake/gcc_mak.inc
-sed 's|arm-linux-gnueabi-||g' -i corec/tools/coremake/gcc_linux_arm.build
+mkdir -p $PKG/opt/jellyfin
+cd $PKG/opt/jellyfin
+mkdir -p data cache config log
+cp -r $TMP/"$APPNAME"_"$VERSION" $PKG/opt/jellyfin
+ln -s "$APPNAME"_"$VERSION" "$APPNAME"
-gcc $SLKCFLAGS -o coremake corec/tools/coremake/coremake.c
-./coremake ${_target}
-
-cd $PRGNAM
-make
-
-install -d $PKG/usr/bin
-make install
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+mkdir -p $PKG/etc/rc.d/
+cat $CWD/rc.jellyfin > $PKG/etc/rc.d/rc.jellyfin
+mkdir -p $PKG/etc/default/
+cat $CWD/jellyfin > $PKG/etc/default/jellyfin.new
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp ../ChangeLog.txt ../ReadMe.txt $PKG/usr/doc/$PRGNAM-$VERSION/
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/jellyfin-bin/jellyfin-bin.info b/multimedia/jellyfin-bin/jellyfin-bin.info
new file mode 100644
index 0000000000..3ad49f46e1
--- /dev/null
+++ b/multimedia/jellyfin-bin/jellyfin-bin.info
@@ -0,0 +1,10 @@
+PRGNAM="jellyfin-bin"
+VERSION="10.8.13"
+HOMEPAGE="https://jellyfin.org"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://repo.jellyfin.org/releases/server/linux/stable/combined/jellyfin_10.8.13_amd64.tar.gz"
+MD5SUM_x86_64="49c815f03cfeb998afe35f53f25d8971"
+REQUIRES=""
+MAINTAINER="Ozan Türkyılmaz"
+EMAIL="ozan.turkyilmaz@gmail.com"
diff --git a/multimedia/jellyfin-bin/rc.jellyfin b/multimedia/jellyfin-bin/rc.jellyfin
new file mode 100644
index 0000000000..6af29237e2
--- /dev/null
+++ b/multimedia/jellyfin-bin/rc.jellyfin
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides: Jellyfin Media Server
+# Required-Start:
+# Required-Stop:
+# Default-Start: S
+# Default-Stop:
+# Short-Description: Jellyfin Media Server
+# Description: Runs Jellyfin Media Server
+### END INIT INFO
+
+# Load the defaults
+. /etc/default/jellyfin
+
+
+start() {
+if [ -x /opt/jellyfin/jellyfin/jellyfin ]; then
+ if [ "$USER" = "" ]; then
+ echo "Starting Jellyfin Media Server"
+ /usr/bin/daemon --name=jellyfin --pidfile=/var/run/jellyfin.pid -- \
+ /opt/jellyfin/jellyfin/jellyfin \
+ -d $DATADIR \
+ -C $CACHEDIR \
+ -c $CONFIGDIR \
+ -l $LOGDIR
+ else
+ echo "Starting Jellyfin Media Server"
+ /usr/bin/daemon --name=jellyfin --pidfile=/var/run/jellyfin.pid -- \
+ /opt/jellyfin/jellyfin/jellyfin \
+ -d $DATADIR \
+ -C $CACHEDIR \
+ -c $CONFIGDIR \
+ -l $LOGDIR \
+ -u $USER:$GROUP
+ fi
+fi
+}
+
+stop() {
+echo "Stopping Jellyfin Media Server"
+if /usr/bin/daemon --name=jellyfin --pidfile=/var/run/jellyfin.pid --running ; then
+ /usr/bin/daemon --name=jellyfin --pidfile=/var/run/jellyfin.pid --stop
+fi
+}
+
+restart() {
+echo "Restarting Jellyfin Media Server"
+if /usr/bin/daemon --name=jellyfin --pidfile=/var/run/jellyfin.pid --running ; then
+ /usr/bin/daemon --name=jellyfin --pidfile=/var/run/jellyfin.pid --restart
+ fi
+}
+
+status() {
+/usr/bin/daemon --name=jellyfin --running --pidfile=/var/run/jellyfin.pid --verbose
+}
+
+case "$1" in
+start)
+ start
+ ;;
+stop)
+ stop
+ ;;
+restart)
+ restart
+ ;;
+status)
+ status
+ ;;
+*)
+ echo $"Usage: $0 {start|stop|restart|status}"
+ exit 1
+esac
+
+
+
diff --git a/multimedia/jellyfin-bin/slack-desc b/multimedia/jellyfin-bin/slack-desc
new file mode 100644
index 0000000000..5e16fd2f03
--- /dev/null
+++ b/multimedia/jellyfin-bin/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+jellyfin-bin: jellyfin-bin (The Free Software Media System)
+jellyfin-bin:
+jellyfin-bin:
+jellyfin-bin: Jellyfin is a volunteer-built media solution that puts you in control
+jellyfin-bin: of your media. Stream to any device from your own server, with no
+jellyfin-bin: strings attached. Your media, your server, your way.
+jellyfin-bin:
+jellyfin-bin: https://jellyfin.org/
+jellyfin-bin:
+jellyfin-bin:
+jellyfin-bin:
diff --git a/multimedia/jellyfin-media-player/README b/multimedia/jellyfin-media-player/README
new file mode 100644
index 0000000000..7c0a0352e6
--- /dev/null
+++ b/multimedia/jellyfin-media-player/README
@@ -0,0 +1,8 @@
+Desktop client using jellyfin-web with embedded MPV player. Supports
+Windows, Mac OS, and Linux. Media plays within the same window using the
+jellyfin-web interface unlike Jellyfin Desktop. Supports audio
+passthrough. Based on Plex Media Player.
+
+OPptional dependecies:
+ - libcec for HDMI CEC support
+ - lirc for Linux IR handling
diff --git a/multimedia/tomahawk/doinst.sh b/multimedia/jellyfin-media-player/doinst.sh
index 65c7e2eeb9..55ca305770 100644
--- a/multimedia/tomahawk/doinst.sh
+++ b/multimedia/jellyfin-media-player/doinst.sh
@@ -1,3 +1,4 @@
+
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
diff --git a/multimedia/jellyfin-media-player/jellyfin-media-player.SlackBuild b/multimedia/jellyfin-media-player/jellyfin-media-player.SlackBuild
new file mode 100644
index 0000000000..73cf932ec9
--- /dev/null
+++ b/multimedia/jellyfin-media-player/jellyfin-media-player.SlackBuild
@@ -0,0 +1,115 @@
+#!/bin/bash
+
+# Slackware build script for jellyfin-media-player
+
+# Copyright 2022 Ozan Türkyılmaz Istanbul
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=jellyfin-media-player
+WCPRGNAM=jellyfin-web
+VERSION=${VERSION:-1.9.1}
+WCVERSION=${WCVERSION:-10.8.10}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ #We untar webclient here
+ tar xvf $CWD/jellyfin-web_${WCVERSION}_portable.tar.gz
+ #And rename the folder
+ mv jellyfin-web_${WCVERSION} dist
+ cmake .. \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ -DOpenGL_GL_PREFERENCE=GLVND \
+ -DCMAKE_SKIP_RPATH=1 \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ LICENSE README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/jellyfin-media-player/jellyfin-media-player.info b/multimedia/jellyfin-media-player/jellyfin-media-player.info
new file mode 100644
index 0000000000..d5c0105ff0
--- /dev/null
+++ b/multimedia/jellyfin-media-player/jellyfin-media-player.info
@@ -0,0 +1,10 @@
+PRGNAM="jellyfin-media-player"
+VERSION="1.9.1"
+HOMEPAGE="https://github.com/jellyfin/jellyfin-media-player"
+DOWNLOAD="https://github.com/jellyfin/jellyfin-media-player/archive/v1.9.1/jellyfin-media-player-1.9.1.tar.gz https://repo.jellyfin.org/releases/server/portable/stable/web/jellyfin-web_10.8.10_portable.tar.gz"
+MD5SUM="7e9808a1f54b4dd814eae89ef4a5b408 e69f7ccb9df998d1cf2a606c316a8cc1"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="mpv"
+MAINTAINER="Ozan Turkyilmaz"
+EMAIL="ozan.turkyilmaz@gmail.com"
diff --git a/multimedia/jellyfin-media-player/slack-desc b/multimedia/jellyfin-media-player/slack-desc
new file mode 100644
index 0000000000..bb5d310b85
--- /dev/null
+++ b/multimedia/jellyfin-media-player/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+jellyfin-media-player: jellyfin-media-player (Jellyfin Desktop Client)
+jellyfin-media-player:
+jellyfin-media-player: Desktop client using jellyfin-web with embedded MPV player. Supports
+jellyfin-media-player: Windows, Mac OS, and Linux. Media plays within the same window using
+jellyfin-media-player: the jellyfin-web interface.
+jellyfin-media-player:
+jellyfin-media-player: https://github.com/jellyfin/jellyfin-media-player
+jellyfin-media-player:
+jellyfin-media-player:
+jellyfin-media-player:
+jellyfin-media-player:
diff --git a/multimedia/jlscp/README b/multimedia/jlscp/README
index 6a80be4413..880c0c69b6 100644
--- a/multimedia/jlscp/README
+++ b/multimedia/jlscp/README
@@ -4,7 +4,7 @@ This library provides client API for retrieving information and
configuring running LinuxSampler instance according to the LinuxSampler
control protocol version 1.4
-For more information about LinuxSampler visit http://www.linuxsampler.org
+For more information about LinuxSampler, see http://www.linuxsampler.org
Homepage: http://sourceforge.net/projects/jlscp/
See also: http://www.linuxsampler.org/downloads.html
diff --git a/multimedia/jlscp/jlscp.SlackBuild b/multimedia/jlscp/jlscp.SlackBuild
index 0890eb6713..804f822e34 100644
--- a/multimedia/jlscp/jlscp.SlackBuild
+++ b/multimedia/jlscp/jlscp.SlackBuild
@@ -1,16 +1,27 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for jlscp
# Written by klaatu@member.fsf.org
+# 20220331 bkw: Modified by SlackBuilds.org: fail if JAVA_HOME not set
+# and can't be set from profile.d script. This avoid creating a /jre
+# in the package root.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=jlscp
VERSION=${VERSION:-0.8}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
ARCH=noarch
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -26,9 +37,21 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
+
+if [ -z "$JAVA_HOME" ]; then
+ source /etc/profile.d/zulu-openjdk8.sh
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+ cat <<EOF
+*** No JDK found. Install zulu-openjdk8 or another *jdk package and
+*** try again.
+EOF
+ exit 1
+fi
# here is the install, such as it is
mkdir -p $PKG/$JAVA_HOME/jre/lib/ext
@@ -47,4 +70,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/jlscp/jlscp.info b/multimedia/jlscp/jlscp.info
index b8156a0e48..bdd77557c2 100644
--- a/multimedia/jlscp/jlscp.info
+++ b/multimedia/jlscp/jlscp.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://downloads.sourceforge.net/jlscp/jlscp-0.8.tar.bz2"
MD5SUM="9a3a507b3e5359369c2be777e71b8232"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="jdk linuxsampler"
+REQUIRES="zulu-openjdk8 linuxsampler"
MAINTAINER="Klaatu"
EMAIL="klaatu@member.fsf.org"
diff --git a/multimedia/k9copy-reloaded/README b/multimedia/k9copy-reloaded/README
index 94f94a9262..115f236e3e 100644
--- a/multimedia/k9copy-reloaded/README
+++ b/multimedia/k9copy-reloaded/README
@@ -2,16 +2,13 @@ K9copy-reloaded is a continuation of the original k9copy program.
It allows you to make 1:1 backups of both single-and dual-layer
DVDs, as well as compress a dual-layer DVD to single-layer.
-NOTE 1: This script builds an internal copy of the ffmpeg 2.8.15
-static libaries. It has been tested and does not (should not?)
-interfere with any existing ffmpeg installation. Just remember that
-you need to be in a full shell (su - and not just su) for ffmpeg
-to build properly.
+NOTE 1: This script now uses the system ffmpeg, so be sure it is
+installed before trying to run this script.
-NOTE 2: K9copy-reloaded is unable to open .iso files on 32-bit systems.
-This is an issue with libdvdread and not with k9copy-reloaded.
-They open just fine on 64-bit systems.
-
-NOTE 3: This program is only intended for personal backups, and is NOT
-intended for copying of copyrighted commercial DVDs. Therefore, there
+NOTE 2: This program is only intended for personal backups, and is NOT
+intended for copying of copyrighted commercial DVDs. Therefore, there
is NO CSS decription libary included in this package.
+
+NOTE 3: dvdauthor is listed as optional, but it crashes k9copy if you
+try to use it for copy without menus; it is disabled by default in
+settings.
diff --git a/multimedia/k9copy-reloaded/k9copy-reloaded.SlackBuild b/multimedia/k9copy-reloaded/k9copy-reloaded.SlackBuild
index a6c97ac873..d56d877d00 100644
--- a/multimedia/k9copy-reloaded/k9copy-reloaded.SlackBuild
+++ b/multimedia/k9copy-reloaded/k9copy-reloaded.SlackBuild
@@ -1,13 +1,10 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for k9copy-reloaded
-# Copyright 2016 by Lenard Spencer (lspencer31-at-cfl-rr-com)
+# Copyright 2018, 2020 by Lenard Spencer (lenardrspencer@gmail.com)
# All rights reserved.
#
-# ffmpeg static library section borrowed (stolen?) from xine-lib.SlackBuild
-# from Slackware 14.2 source archives,copyrighted by Pat Volkerding, et. al.
-#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
@@ -26,12 +23,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=k9copy-reloaded
SRCNAM=k9copy
VERSION=${VERSION:-3.0.3}
-BUILD=${BUILD:-2}
-FFMPEG_VERSION=${FFMPEG_VERSION:-2.8.15}
+BUILD=${BUILD:-6}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -41,7 +40,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -49,21 +55,15 @@ OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
- # 32bit x86 fails without this...
- FFARCHOPTS="--disable-asm"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- # 32bit x86 fails without this...
- FFARCHOPTS="--disable-asm"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
- FFARCHOPTS="--arch=x86_64 --enable-pic"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
- FFARCHOPTS=""
fi
set -e
@@ -71,51 +71,6 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf ffmpeg*
-tar xvf $CWD/ffmpeg-$FFMPEG_VERSION.tar.?z*
-cd ffmpeg*
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-echo "Building static ffmpeg libs ..."
-
-FFMPEGDIR=/$TMP/ff-$(mcookie)
-
-CFLAGS="$SLKCFLAGS -fvisibility=hidden -I/usr/include/openmj2-2.1" \
-CXXFLAGS="$SLKCFLAGS -fvisibility=hidden -I/usr/include/openmj2-2.1" \
-./configure \
- --prefix=$FFMPEGDIR/usr \
- --libdir=$FFMPEGDIR/usr/lib${LIBDIRSUFFIX} \
- --shlibdir=$FFMPEGDIR/usr/lib${LIBDIRSUFFIX} \
- --enable-gpl \
- --enable-version3 \
- --enable-postproc \
- --disable-doc \
- --disable-avfilter \
- --disable-avdevice \
- --disable-swresample \
- --disable-ffserver \
- --disable-ffplay \
- --disable-ffmpeg \
- --disable-ffprobe \
- --enable-pthreads \
- --disable-debug \
- --disable-shared \
- --enable-static \
- --enable-hardcoded-tables \
- --enable-memalign-hack \
- --enable-bzlib \
- --enable-zlib \
- --enable-libopenjpeg \
- ${FFARCHOPTS}
-
- make
- make install # Note: no DESTDIR !!
-cd -
-
rm -rf $SRCNAM
tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
cd $SRCNAM
@@ -126,23 +81,47 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# patches from upstream and community:
-patch -p1 < $CWD/patches/k9copy-mimetype.patch
-patch -p0 < $CWD/patches/k9copy-tempdir.patch
+# Insert a blank CmakeLists.txt file in various subs
+# or the build will fail
+touch src/libdvdnav-NOW/CMakeLists.txt
+touch src/libdvdnav-NOW/vm/CMakeLists.txt
+touch src/libdvdnav-NOW/dvdnav/CMakeLists.txt
+touch src/libdvdread-NOW/CMakeLists.txt
+touch src/libdvdread-NOW/dvdread/CMakeLists.txt
+
+patch -p1 < $CWD/patches/k9copy-fix-desktop-files.patch
+patch -p1 < $CWD/patches/k9copy-installdirs.patch
+patch -p1 < $CWD/patches/k9copy-ffmpeg3.patch
+
+# from the Fedora community, MUCH better than the ill-conceived and
+# BROKEN gcc6 patch that has been floating around the web:
+patch -p1 < $CWD/patches/k9copy-gcc7.patch
+
+# There have been several attempts to remove the internal libdvdread
+# and libdvdnav, but NONE of then work properly (the program builds,
+# but the backups are corrupt and will not play). I may revisit it
+# later, but for now, we must patch the internal dvdnav to properly
+# link to the internal dvdread: otherwise, the backups come out with
+# corrupted .IFO files:
+patch -p1 < $CWD/patches/k9copy-dvdnav.patch
+
+# In 15.0, dvdauthor crashes the program if we try to use it,
+# so we disable it by default in settings:
+patch -p1 < $CWD/patches/k9copy-uncheck-dvdauthor.patch
+
+# Patch for missing "Language=" entry in .po files:
+patch -p1 < $CWD/patches/k9copy-missing-language-in-po-files.patch
-# Needed to link with the ffmpeg static libs we just built:
-export PKG_CONFIG_PATH="${FFMPEGDIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig"
+# Patch for i18n (mitigates I18N_ARGUMENT_MISSING messages):
+patch -p1 < $CWD/patches/k9copy-i18n.patch
mkdir -p build
cd build
cmake \
- -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DFFMPEGSCALE_LIBRARY:FILEPATH=${FFMPEGDIR}/usr/lib${LIBDIRSUFFIX} \
- -DFFMPEGSCALE_INCLUDE_DIR_LAVC=${FFMPEGDIR}/usr/include \
+ -DCMAKE_C_FLAGS="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS="$SLKCFLAGS -std=c++11" \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DLIB_SUFFIX=${LIBDIRSUFFIX} \
- -DMAN_INSTALL_DIR=/usr/man \
+ -DQT5_BUILD="ON" \
-DCMAKE_BUILD_TYPE=Release ..
make
make install DESTDIR=$PKG
@@ -152,7 +131,9 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a COPYING README $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ COPYING README \
+ $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -160,4 +141,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/k9copy-reloaded/k9copy-reloaded.info b/multimedia/k9copy-reloaded/k9copy-reloaded.info
index 1f850abaa6..852348a0c8 100644
--- a/multimedia/k9copy-reloaded/k9copy-reloaded.info
+++ b/multimedia/k9copy-reloaded/k9copy-reloaded.info
@@ -1,12 +1,10 @@
PRGNAM="k9copy-reloaded"
VERSION="3.0.3"
HOMEPAGE="http://k9copy-reloaded.sourceforge.net"
-DOWNLOAD="http://downloads.sourceforge.net/project/k9copy-reloaded/k9copy-3.0.3.tar.gz \
- http://www.ffmpeg.org/releases/ffmpeg-2.8.15.tar.bz2"
-MD5SUM="53158282e23a4aa4fb8f4336f1424521 \
- 87b4e1680fdbf08f6504c33c1e278cc7"
+DOWNLOAD="http://downloads.sourceforge.net/project/k9copy-reloaded/k9copy-3.0.3.tar.gz"
+MD5SUM="53158282e23a4aa4fb8f4336f1424521"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="dvdauthor libmpeg2"
+REQUIRES="libmpeg2"
MAINTAINER="Lenard Spencer"
EMAIL="lenardrspencer@gmail.com"
diff --git a/multimedia/k9copy-reloaded/patches/k9copy-dvdnav.patch b/multimedia/k9copy-reloaded/patches/k9copy-dvdnav.patch
new file mode 100644
index 0000000000..bf456a3252
--- /dev/null
+++ b/multimedia/k9copy-reloaded/patches/k9copy-dvdnav.patch
@@ -0,0 +1,207 @@
+diff -Naur k9copy/src/libdvdnav-NOW/dvdnav/dvdnav.h k9copy.new/src/libdvdnav-NOW/dvdnav/dvdnav.h
+--- k9copy/src/libdvdnav-NOW/dvdnav/dvdnav.h 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/dvdnav/dvdnav.h 2020-04-17 15:06:57.239790857 -0400
+@@ -32,11 +32,11 @@
+ extern "C" {
+ #endif
+
+-#include <dvdnav/dvd_types.h>
+-#include <dvdread/dvd_reader.h>
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h> /* For vm_cmd_t */
+-#include <dvdnav/dvdnav_events.h>
++#include "dvdnav/dvd_types.h"
++#include "dvdread/dvd_reader.h"
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h" /* For vm_cmd_t */
++#include "dvdnav_events.h"
+
+
+
+diff -Naur k9copy/src/libdvdnav-NOW/dvdnav.c k9copy.new/src/libdvdnav-NOW/dvdnav.c
+--- k9copy/src/libdvdnav-NOW/dvdnav.c 2014-09-29 12:02:49.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/dvdnav.c 2020-04-17 14:58:35.428540596 -0400
+@@ -34,14 +34,14 @@
+ #include <string.h>
+ #include <sys/time.h>
+ #include "dvdnav/dvdnav.h"
+-#include <dvdread/dvd_reader.h>
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h> /* For vm_cmd_t */
++#include "dvdread/dvd_reader.h"
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h" /* For vm_cmd_t */
+ #include "vm/decoder.h"
+ #include "vm/vm.h"
+ #include "dvdnav_internal.h"
+ #include "read_cache.h"
+-#include <dvdread/nav_read.h>
++#include "dvdread/nav_read.h"
+
+ static dvdnav_status_t dvdnav_clear(dvdnav_t * this) {
+ /* clear everything except file, vm, mutex, readahead */
+diff -Naur k9copy/src/libdvdnav-NOW/highlight.c k9copy.new/src/libdvdnav-NOW/highlight.c
+--- k9copy/src/libdvdnav-NOW/highlight.c 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/highlight.c 2020-04-17 14:59:35.543043065 -0400
+@@ -29,7 +29,7 @@
+ #include <limits.h>
+ #include <string.h>
+ #include <sys/time.h>
+-#include <dvdread/nav_types.h>
++#include "dvdread/nav_types.h"
+ #include "dvdnav/dvdnav.h"
+ #include "vm/decoder.h"
+ #include "vm/vm.h"
+diff -Naur k9copy/src/libdvdnav-NOW/navigation.c k9copy.new/src/libdvdnav-NOW/navigation.c
+--- k9copy/src/libdvdnav-NOW/navigation.c 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/navigation.c 2020-04-17 15:00:18.333402659 -0400
+@@ -27,8 +27,8 @@
+ #include <string.h>
+ #include <sys/time.h>
+ #include "dvdnav/dvdnav.h"
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h>
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h"
+ #include "vm/decoder.h"
+ #include "vm/vm.h"
+ #include "dvdnav_internal.h"
+diff -Naur k9copy/src/libdvdnav-NOW/read_cache.c k9copy.new/src/libdvdnav-NOW/read_cache.c
+--- k9copy/src/libdvdnav-NOW/read_cache.c 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/read_cache.c 2020-04-17 15:01:33.012033279 -0400
+@@ -34,8 +34,8 @@
+ #include <sys/time.h>
+ #include <time.h>
+ #include "dvdnav/dvdnav.h"
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h>
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h"
+ #include "vm/decoder.h"
+ #include "vm/vm.h"
+ #include "dvdnav_internal.h"
+diff -Naur k9copy/src/libdvdnav-NOW/searching.c k9copy.new/src/libdvdnav-NOW/searching.c
+--- k9copy/src/libdvdnav-NOW/searching.c 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/searching.c 2020-04-17 15:02:25.819481072 -0400
+@@ -30,12 +30,12 @@
+ #include <stdlib.h>
+ #include <sys/time.h>
+ #include "dvdnav/dvdnav.h"
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h>
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h"
+ #include "vm/decoder.h"
+ #include "vm/vm.h"
+ #include "dvdnav_internal.h"
+-#include <dvdread/ifo_read.h>
++#include "dvdread/ifo_read.h"
+
+ /*
+ #define LOG_DEBUG
+diff -Naur k9copy/src/libdvdnav-NOW/settings.c k9copy.new/src/libdvdnav-NOW/settings.c
+--- k9copy/src/libdvdnav-NOW/settings.c 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/settings.c 2020-04-17 15:03:13.324884966 -0400
+@@ -27,8 +27,8 @@
+ #include <string.h>
+ #include <sys/time.h>
+ #include "dvdnav/dvdnav.h"
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h>
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h"
+ #include "vm/decoder.h"
+ #include "vm/vm.h"
+ #include "dvdnav_internal.h"
+diff -Naur k9copy/src/libdvdnav-NOW/vm/decoder.c k9copy.new/src/libdvdnav-NOW/vm/decoder.c
+--- k9copy/src/libdvdnav-NOW/vm/decoder.c 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/vm/decoder.c 2020-04-17 15:04:17.177429113 -0400
+@@ -32,8 +32,8 @@
+ #include <sys/time.h>
+ #include <assert.h>
+
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h> /* vm_cmd_t */
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h" /* vm_cmd_t */
+
+ #include "dvdnav/dvdnav.h"
+ #include "decoder.h"
+diff -Naur k9copy/src/libdvdnav-NOW/vm/getset.c k9copy.new/src/libdvdnav-NOW/vm/getset.c
+--- k9copy/src/libdvdnav-NOW/vm/getset.c 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/vm/getset.c 2020-04-17 15:09:14.945967023 -0400
+@@ -30,9 +30,9 @@
+ #include <stdio.h>
+ #include <inttypes.h>
+
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h>
+-#include <dvdread/ifo_read.h>
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h"
++#include "dvdread/ifo_read.h"
+ #include "dvdnav/dvdnav.h"
+
+ #include "decoder.h"
+diff -Naur k9copy/src/libdvdnav-NOW/vm/play.c k9copy.new/src/libdvdnav-NOW/vm/play.c
+--- k9copy/src/libdvdnav-NOW/vm/play.c 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/vm/play.c 2020-04-17 15:10:18.384509885 -0400
+@@ -29,9 +29,9 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h>
+-#include <dvdread/ifo_read.h>
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h"
++#include "dvdread/ifo_read.h"
+ #include "dvdnav/dvdnav.h"
+
+ #include "decoder.h"
+diff -Naur k9copy/src/libdvdnav-NOW/vm/vm.c k9copy.new/src/libdvdnav-NOW/vm/vm.c
+--- k9copy/src/libdvdnav-NOW/vm/vm.c 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/vm/vm.c 2020-04-17 15:11:23.105064197 -0400
+@@ -37,9 +37,9 @@
+ #include <sys/time.h>
+ #include <fcntl.h>
+
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h>
+-#include <dvdread/ifo_read.h>
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h"
++#include "dvdread/ifo_read.h"
+ #include "dvdnav/dvdnav.h"
+
+ #include "decoder.h"
+diff -Naur k9copy/src/libdvdnav-NOW/vm/vmcmd.c k9copy.new/src/libdvdnav-NOW/vm/vmcmd.c
+--- k9copy/src/libdvdnav-NOW/vm/vmcmd.c 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/vm/vmcmd.c 2020-04-17 15:12:20.354554837 -0400
+@@ -30,8 +30,8 @@
+ #include <sys/time.h>
+
+ #include "dvdnav/dvdnav.h"
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h>
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h"
+ #include "decoder.h"
+ #include "vm.h"
+ #include "vmcmd.h"
+diff -Naur k9copy/src/libdvdnav-NOW/vm/vmget.c k9copy.new/src/libdvdnav-NOW/vm/vmget.c
+--- k9copy/src/libdvdnav-NOW/vm/vmget.c 2014-09-29 11:50:54.000000000 -0400
++++ k9copy.new/src/libdvdnav-NOW/vm/vmget.c 2020-04-17 15:14:34.696659304 -0400
+@@ -31,9 +31,9 @@
+ #include <string.h>
+ #include <stdlib.h>
+
+-#include <dvdread/nav_types.h>
+-#include <dvdread/ifo_types.h>
+-#include <dvdread/ifo_read.h>
++#include "dvdread/nav_types.h"
++#include "dvdread/ifo_types.h"
++#include "dvdread/ifo_read.h"
+ #include "dvdnav/dvdnav.h"
+
+ #include "decoder.h"
diff --git a/multimedia/k9copy-reloaded/patches/k9copy-ffmpeg3.patch b/multimedia/k9copy-reloaded/patches/k9copy-ffmpeg3.patch
new file mode 100644
index 0000000000..e01b562787
--- /dev/null
+++ b/multimedia/k9copy-reloaded/patches/k9copy-ffmpeg3.patch
@@ -0,0 +1,44 @@
+diff -Nru a/src/import/k9avidecode.cpp b/src/import/k9avidecode.cpp
+--- a/src/import/k9avidecode.cpp 2014-09-29 17:00:12.000000000 +0200
++++ b/src/import/k9avidecode.cpp 2017-03-10 06:42:21.692670007 +0100
+@@ -26,7 +26,6 @@
+ void av_free_packet_internal(AVPacket *pkt)
+ {
+ if (pkt) {
+- if (pkt->destruct) pkt->destruct(pkt);
+ pkt->data = NULL; pkt->size = 0;
+ }
+ }
+@@ -238,14 +237,14 @@
+
+ int numBytes;
+ // Determine required buffer size and allocate buffer
+- numBytes=avpicture_get_size(PIX_FMT_RGB24, m_CodecCtx->width,
++ numBytes=avpicture_get_size(AV_PIX_FMT_RGB24, m_CodecCtx->width,
+ m_CodecCtx->height);
+ m_buffer=(uint8_t *)av_malloc(numBytes*sizeof(uint8_t));
+
+ // Assign appropriate parts of buffer to image planes in pFrameRGB
+ // Note that pFrameRGB is an AVFrame, but AVFrame is a superset
+ // of AVPicture
+- avpicture_fill((AVPicture *)m_FrameRGB, m_buffer, PIX_FMT_RGB24,
++ avpicture_fill((AVPicture *)m_FrameRGB, m_buffer, AV_PIX_FMT_RGB24,
+ m_CodecCtx->width, m_CodecCtx->height);
+
+
+@@ -317,13 +316,13 @@
+ bFound=true;
+ #ifndef HAVE_SWSCALE
+ // Convert the image from its native format to RGB
+- img_convert((AVPicture *)m_FrameRGB, PIX_FMT_RGB24,
++ img_convert((AVPicture *)m_FrameRGB, AV_PIX_FMT_RGB24,
+ (AVPicture*)m_Frame, m_CodecCtx->pix_fmt,
+ m_CodecCtx->width, m_CodecCtx->height);
+ SaveFrame(m_FrameRGB, m_CodecCtx->width,
+ m_CodecCtx->height);
+ #else
+- toRGB_convert_ctx=sws_getContext(m_CodecCtx->width, m_CodecCtx->height, m_CodecCtx->pix_fmt, m_CodecCtx->width, m_CodecCtx->height, PIX_FMT_RGB24, sws_flags,NULL,NULL,NULL);
++ toRGB_convert_ctx=sws_getContext(m_CodecCtx->width, m_CodecCtx->height, m_CodecCtx->pix_fmt, m_CodecCtx->width, m_CodecCtx->height, AV_PIX_FMT_RGB24, sws_flags,NULL,NULL,NULL);
+ sws_scale(toRGB_convert_ctx, m_Frame->data, m_Frame->linesize, 0, m_CodecCtx->height, m_FrameRGB->data,m_FrameRGB->linesize);
+ // convert frame to QImage
+ SaveFrame(m_FrameRGB, m_CodecCtx->width,
diff --git a/multimedia/k9copy-reloaded/patches/k9copy-fix-desktop-files.patch b/multimedia/k9copy-reloaded/patches/k9copy-fix-desktop-files.patch
new file mode 100644
index 0000000000..ace6842e87
--- /dev/null
+++ b/multimedia/k9copy-reloaded/patches/k9copy-fix-desktop-files.patch
@@ -0,0 +1,66 @@
+diff -Naur a/k9copy.desktop b/k9copy.desktop
+--- a/k9copy.desktop 2014-09-29 11:00:11.000000000 -0400
++++ b/k9copy.desktop 2020-12-25 20:56:36.228414115 -0500
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+ Type=Application
+ Name=k9copy
+-Exec=k9copy -caption "%c" %i %u
++Exec=k9copy "%c" %i %u
+ Comment=DVD9 to DVD5 backup tool
+ Comment[fr]=Backup de DVD9 en DVD5
+ Comment[tr]=DVD9 DVD5 yedekleme aracı
+@@ -15,5 +15,5 @@
+ Terminal=false
+ Icon=k9copy
+ X-DocPath=k9copy/index.html
+-Categories=Qt;KDE;AudioVideo;DiscBurning;AudioVideoEditing;
++Categories=Qt;KDE;AudioVideo;DiscBurning;AudioVideoEditing;Video;
+ X-KDE-StartupNotify=true
+diff -Naur a/k9copy_assistant.desktop b/k9copy_assistant.desktop
+--- a/k9copy_assistant.desktop 2014-09-29 11:00:12.000000000 -0400
++++ b/k9copy_assistant.desktop 2020-12-25 20:56:36.228414115 -0500
+@@ -1,9 +1,7 @@
+-#!/usr/bin/env xdg-open
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Application
+ Name=k9copy assistant
+-Exec=k9copy --assistant -caption "%c" %i %m %u
++Exec=k9copy --assistant "%c" %i %m %u
+ Comment=DVD9 to DVD5 backup tool
+ Comment[fr]=Backup de DVD9 en DVD5
+ Comment[tr]=DVD9 DVD5 yedekleme aracı
+@@ -14,9 +12,8 @@
+ GenericName[tr]=DVD Vidyo Yedekleme Aracı
+ GenericName[ru]=Копирование Ñ Ð²Ð¸Ð´ÐµÐ¾-DVD
+ GenericName[uk]=ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾-DVD
+-MimeTypes=
+ Terminal=false
+ Icon=k9copy
+ X-DocPath=k9copy/index.html
+-Categories=Qt;KDE;AudioVideo;DiscBurning;
+-X-KDE-StartupNotify=true
+\ No newline at end of file
++Categories=Qt;KDE;AudioVideo;DiscBurning;Video;
++X-KDE-StartupNotify=true
+diff -Naur a/k9copy_assistant_open.desktop b/k9copy_assistant_open.desktop
+--- a/k9copy_assistant_open.desktop 2014-09-29 11:00:12.000000000 -0400
++++ b/k9copy_assistant_open.desktop 2020-12-25 20:57:16.993844890 -0500
+@@ -11,4 +11,4 @@
+ [Desktop Entry]
+ X-KDE-Solid-Predicate=[[ StorageVolume.ignored == false AND OpticalDisc.availableContent == 'Data|VideoDvd' ] OR [ StorageVolume.ignored == false AND OpticalDisc.availableContent == 'Data|VideoDvd' ]]
+ Type=Service
+-Actions=open;
+\ No newline at end of file
++Actions=open;
+diff -Naur a/k9copy_open.desktop b/k9copy_open.desktop
+--- a/k9copy_open.desktop 2014-09-29 11:00:12.000000000 -0400
++++ b/k9copy_open.desktop 2020-12-25 20:57:45.522142523 -0500
+@@ -11,4 +11,4 @@
+ [Desktop Entry]
+ X-KDE-Solid-Predicate=[[ StorageVolume.ignored == false AND OpticalDisc.availableContent == 'Data|VideoDvd' ] OR [ StorageVolume.ignored == false AND OpticalDisc.availableContent == 'Data|VideoDvd' ]]
+ Type=Service
+-Actions=open;
+\ No newline at end of file
++Actions=open;
diff --git a/multimedia/k9copy-reloaded/patches/k9copy-gcc7.patch b/multimedia/k9copy-reloaded/patches/k9copy-gcc7.patch
new file mode 100644
index 0000000000..a90cd7b368
--- /dev/null
+++ b/multimedia/k9copy-reloaded/patches/k9copy-gcc7.patch
@@ -0,0 +1,30 @@
+diff -up k9copy/src/backup/k9dvdbackup.cpp.gcc7 k9copy/src/backup/k9dvdbackup.cpp
+--- k9copy/src/backup/k9dvdbackup.cpp.gcc7 2014-09-29 18:55:40.000000000 +0200
++++ k9copy/src/backup/k9dvdbackup.cpp 2017-10-04 14:48:33.100692360 +0200
+@@ -907,7 +907,7 @@ k9Vobu * k9DVDBackup::remapOffset(uint32
+
+
+ if ((vobu1 !=NULL) && (vobu2!=NULL)) {
+- *_offset = abs(vobu1->newSector - vobu2->newSector) | maskOffset1 ;
++ *_offset = abs((int32_t)(vobu1->newSector - vobu2->newSector)) | maskOffset1 ;
+ *_offset |= maskOffset2;
+ return vobu2;
+ }
+diff -up k9copy/src/backup/k9execcopy.cpp.gcc7 k9copy/src/backup/k9execcopy.cpp
+--- k9copy/src/backup/k9execcopy.cpp.gcc7 2014-09-29 17:00:12.000000000 +0200
++++ k9copy/src/backup/k9execcopy.cpp 2017-10-04 14:51:04.899589523 +0200
+@@ -306,12 +306,12 @@ void k9ExecCopy::createMkv(k9DVDTitle *_
+
+ #if QT_VERSION >= 0x050000
+ m_progressDialog=new QProgressDialog(k9Dialogs::getMainWidget() );
+- m_progressDialog->setCancelButton(false);
++ m_progressDialog->setCancelButton(NULL);
+
+ #else
+ m_progressDialog=new KProgressDialog(k9Dialogs::getMainWidget() );
+
+- m_progressDialog->showCancelButton(false);
++ m_progressDialog->showCancelButton(NULL);
+ #endif
+ #if QT_VERSION >= 0x050000
+ m_progressDialog->setMaximum(100);
diff --git a/multimedia/k9copy-reloaded/patches/k9copy-i18n.patch b/multimedia/k9copy-reloaded/patches/k9copy-i18n.patch
new file mode 100644
index 0000000000..365fa08a5b
--- /dev/null
+++ b/multimedia/k9copy-reloaded/patches/k9copy-i18n.patch
@@ -0,0 +1,942 @@
+diff -Naur k9copy-work/src/assistant/k9aststreams.cpp k9copy/src/assistant/k9aststreams.cpp
+--- k9copy-work/src/assistant/k9aststreams.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/assistant/k9aststreams.cpp 2020-12-23 23:53:38.473154933 -0500
+@@ -54,7 +54,7 @@
+ showDefault(false);
+ setFlags(Qt::ItemIsEnabled | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable);
+ setCheckState(0,_stream->getselected()?Qt::Checked:Qt::Unchecked);
+- setText(0,i18n("%4 - %1 %2 %3 ch").arg(_stream->getlanguage()).arg(_stream->getformat()).arg(_stream->getchannels()).arg(_stream->getID()));
++ setText(0,i18n("%4 - %1 %2 %3 ch",_stream->getlanguage(),_stream->getformat(),_stream->getchannels(),_stream->getID()));
+ setIcon(0,SmallIcon("sound")) ;
+ //setText(1,i18n("%1 MB",_stream->getsize_mb()));
+ }
+@@ -65,7 +65,7 @@
+ showDefault(false);
+ setFlags(Qt::ItemIsEnabled | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable);
+ setCheckState(0,_stream->getselected()?Qt::Checked:Qt::Unchecked);
+- setText(0,i18n("%3 - %1 %2").arg(_stream->getlanguage()).arg(_stream->getcontent()).arg(_stream->getID().first()));
++ setText(0,i18n("%3 - %1 %2",_stream->getlanguage(),_stream->getcontent(),_stream->getID().first()));
+ setIcon(0,SmallIcon("subtitle"));
+
+ //setText(1,i18n("%1 MB",_stream->getsize_mb()));
+diff -Naur k9copy-work/src/assistant/k9asttitles.cpp k9copy/src/assistant/k9asttitles.cpp
+--- k9copy-work/src/assistant/k9asttitles.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/assistant/k9asttitles.cpp 2020-12-23 23:48:01.704471948 -0500
+@@ -276,22 +276,22 @@
+ int ch=0;
+ for (int i=0;i< _title->getchapterCount();i++) {
+ _k9ItemWidget *it =new _k9ItemWidget(_title->getChapter(i),_parent,k9astTitles::CHAPTER);
+- it->setText(1,i18n("chapter %1").arg(++ch));
++ it->setText(1,i18n("chapter %1",++ch));
+ QString s;
+
+ s=QString("%1").arg((double)(_title->getChapter(i)->getsectors()) /512,0,'f',2);
+ it->setText(2,QString("%1").arg(_title->getChapter(i)->getLength().toString("hh:mm:ss")));
+- it->setText(3,i18n("%1 MB").arg(s));
++ it->setText(3,i18n("%1 MB",s));
+ }
+ for (int j=0;j <_title->getTitles().count();j++) {
+ k9DVDTitle *title2=_title->getTitles().at(j);
+ for (int i=0;i< title2->getchapterCount();i++) {
+ _k9ItemWidget *it =new _k9ItemWidget(title2->getChapter(i),_parent,k9astTitles::CHAPTER);
+- it->setText(1,i18n("chapter %1").arg(++ch));
++ it->setText(1,i18n("chapter %1",++ch));
+ QString s;
+ s=QString("%1").arg((double)(title2->getChapter(i)->getsectors()) /512,0,'f',2);
+ it->setText(2,QString("%1").arg(title2->getChapter(i)->getLength().toString("hh:mm:ss")));
+- it->setText(3,i18n("%1 MB").arg(s));
++ it->setText(3,i18n("%1 MB",s));
+ }
+
+ }
+diff -Naur k9copy-work/src/backup/k9dvdauthor.cpp k9copy/src/backup/k9dvdauthor.cpp
+--- k9copy-work/src/backup/k9dvdauthor.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/backup/k9dvdauthor.cpp 2020-12-23 23:48:01.704471948 -0500
+@@ -161,7 +161,7 @@
+ error=true;
+ QString sMsg;
+ //sMsg.QString::sprintf(tr2i18n("'%s' not selected"),l_track->getname().latin1());
+- sMsg=i18n("'%1' not selected").arg(l_track->getname());
++ sMsg=i18n("'%1' not selected",l_track->getname());
+ k9Dialogs::error( sMsg, i18n("authoring"));
+ }
+ start.sprintf("jump titleset %d menu;",DVD->getnewTitleNum(l_track));
+@@ -415,7 +415,7 @@
+ c.sprintf("g1=%d;\ncall vmgm menu;",DVD->getnewTitleNum(l_next));
+ if ( DVD->getnewTitleNum(l_next)==-1) {
+ error=true;
+- c=i18n("'%1' not selected").arg(l_next->getname());
++ c=i18n("'%1' not selected",l_next->getname());
+ k9Dialogs::error( c, i18n("authoring"));
+ }
+
+@@ -439,7 +439,7 @@
+ void k9DVDAuthor::author() {
+ k9Config config;
+ if ( ! k9Tools::checkProgram("dvdauthor")) {
+- k9Dialogs::error (i18n("Unable to run %1").arg("dvdauthor") , i18n("authoring"));
++ k9Dialogs::error (i18n("Unable to run %1","dvdauthor") , i18n("authoring"));
+ error = TRUE;
+ return;
+ }
+diff -Naur k9copy-work/src/backup/k9dvdbackup.cpp k9copy/src/backup/k9dvdbackup.cpp
+--- k9copy-work/src/backup/k9dvdbackup.cpp 2020-12-23 23:47:42.374321418 -0500
++++ k9copy/src/backup/k9dvdbackup.cpp 2020-12-23 23:48:01.705471956 -0500
+@@ -295,13 +295,13 @@
+ k9DVDFile *dvdfile;
+ if ((dvdfile = m_dvdread->openTitle( _vts))== 0) {
+ QString stmp;
+- stmp=i18n("Unable to open titleset %1").arg(_vts);
++ stmp=i18n("Unable to open titleset %1",_vts);
+ seterror(stmp);
+ return ;
+ }
+ setTotalSteps(vts_handle->vtsi_mat->vts_last_sector-vts_handle->vtsi_mat->vtstt_vobs -1);
+ QString c;
+- c=i18n("Extracting titleset %1").arg(_vts);
++ c=i18n("Extracting titleset %1",_vts);
+ setProgressLabel(c);
+ if (!k9Tools::getBatchCopy())
+ backupDlg->show();
+@@ -477,7 +477,7 @@
+ k9DVDFile *dvdfile;
+ if ((dvdfile = m_dvdread->openMenu( _vts))== 0) {
+ QString stmp;
+- stmp=i18n("Unable to open menu for titleset %1").arg(_vts);
++ stmp=i18n("Unable to open menu for titleset %1",_vts);
+ seterror (stmp);
+ return 0;
+ }
+@@ -503,7 +503,7 @@
+ uint32_t sector, dsi_next_vobu = 0;
+ uint32_t imax=length/sizeof(cell_adr_t);
+ QString c;
+- c=i18n("Extracting menu for titleset %1").arg(_vts);
++ c=i18n("Extracting menu for titleset %1",_vts);
+ setProgressLabel(c);
+ if (!k9Tools::getBatchCopy()) {
+ backupDlg->show();
+@@ -597,7 +597,7 @@
+ vts_handle=currTS->ifoTitle->getIFO();
+ if (!vts_handle) {
+ QString stmp;
+- stmp=i18n("Unable to open ifo file for titleset %1").arg(vts_num);
++ stmp=i18n("Unable to open ifo file for titleset %1",vts_num);
+ seterror (stmp);
+ //JMP vamps->setNoData();
+ return;
+@@ -605,7 +605,7 @@
+
+ setTotalSteps( vts_handle->vtsi_mat->vts_last_sector-vts_handle->vtsi_mat->vtstt_vobs -1);
+ QString c;
+- c=i18n("Extracting titleset %1").arg(vts_num);
++ c=i18n("Extracting titleset %1",vts_num);
+ setProgressLabel(c);
+ if (!k9Tools::getBatchCopy())
+ backupDlg->show();
+@@ -620,7 +620,7 @@
+ dvdfile = m_dvdread->openTitle (vts_num);
+ if (! dvdfile) {
+ QString stmp;
+- stmp=i18n("Unable to open vobs for titleset %1").arg(vts_num);
++ stmp=i18n("Unable to open vobs for titleset %1",vts_num);
+ seterror( stmp);
+ //JMP vamps->setNoData();
+ return;
+@@ -1450,7 +1450,7 @@
+ sName="VIDEO_TS.VOB";
+ else
+ sName.sprintf("VTS_%02d_%d.VOB",(int)currVTS,(int)VobNum);
+- dbg=i18n("Updating vob %1").arg(sName);
++ dbg=i18n("Updating vob %1",sName);
+ sName=output+"/"+sName;
+ QFileInfo finfo(sName);
+ long fileSize=finfo.size();
+diff -Naur k9copy-work/src/backup/k9execcopy.cpp k9copy/src/backup/k9execcopy.cpp
+--- k9copy-work/src/backup/k9execcopy.cpp 2020-12-23 23:47:42.374321418 -0500
++++ k9copy/src/backup/k9execcopy.cpp 2020-12-23 23:48:01.705471956 -0500
+@@ -39,7 +39,7 @@
+ m_cancelled=false;
+ QString filename;
+ if (!m_dvd->getopened()) {
+- k9Dialogs::error( i18n("DVD is not opened"), i18n("DVD Copy"));
++ k9Dialogs::error( i18n("DVD is not opened"),i18n("DVD Copy"));
+ return;
+ }
+
+@@ -70,7 +70,7 @@
+ long fs=k9Tools::getFreeSpace(outputDir);
+ int maxSize=config.getPrefSize() < (m_dvd->getsizeSelected(false)/512) ? config.getPrefSize():(m_dvd->getsizeSelected(false)/512);
+ if ((fs < maxSize) && (fs !=-1)) {
+- if (k9Dialogs::warningContinueCancel ( i18n("Insufficient disk space on %1\n%2 MB expected.").arg(outputDir).arg(config.getPrefSize()),i18n("DVD Copy"))==cancel)
++ if (k9Dialogs::warningContinueCancel ( i18n("Insufficient disk space on %1\n%2 MB expected.",outputDir,config.getPrefSize()),i18n("DVD Copy"))==cancel)
+ return;
+ }
+
+@@ -188,7 +188,7 @@
+
+ if (matroska) {
+ if ( ! k9Tools::checkProgram("mkvmerge") ) {
+- k9Dialogs::error (i18n("Unable to run %1").arg("mkvmerge") , i18n("Encoding error"));
++ k9Dialogs::error (i18n("Unable to run %1","mkvmerge") , i18n("Encoding error"));
+ delete mp4;
+ return ;
+ }
+diff -Naur k9copy-work/src/backup/k9mp4enc.cpp k9copy/src/backup/k9mp4enc.cpp
+--- k9copy-work/src/backup/k9mp4enc.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/backup/k9mp4enc.cpp 2020-12-23 23:48:01.706471964 -0500
+@@ -157,8 +157,8 @@
+
+ if (!m_extractAudio) {
+ if ( ! k9Tools::checkProgram(sCodecV) ) {
+- k9log::add(i18n("Unable to run %1").arg(sCodecV),k9logLevel::ERROR);
+- k9Dialogs::error (i18n("Unable to run %1").arg(sCodecV) , i18n("Encoding error"));
++ k9log::add(i18n("Unable to run %1",sCodecV),k9logLevel::ERROR);
++ k9Dialogs::error (i18n("Unable to run %1",sCodecV) , i18n("Encoding error"));
+ m_error = TRUE;
+ return false;
+ }
+@@ -168,8 +168,8 @@
+
+ if ((sCodecA!=sCodecV) || m_extractAudio) {
+ if ( ! k9Tools::checkProgram(sCodecA) ) {
+- k9log::add(i18n("Unable to run %1").arg(sCodecV),k9logLevel::ERROR);
+- k9Dialogs::error (i18n("Unable to run %1").arg(sCodecA) , i18n("Encoding error"));
++ k9log::add(i18n("Unable to run %1",sCodecV),k9logLevel::ERROR);
++ k9Dialogs::error (i18n("Unable to run %1",sCodecA) , i18n("Encoding error"));
+ m_error = TRUE;
+ return false;
+ }
+@@ -181,12 +181,12 @@
+
+ void k9MP4Enc::execute(k9DVDTitle *_title) {
+ if (m_mpeg2)
+- k9log::add(i18n("Starting extraction of %1, chapters %2").arg(_title->getname()).arg(getChapterList( _title)),k9logLevel::INFO);
++ k9log::add(i18n("Starting extraction of %1, chapters %2",_title->getname(),getChapterList( _title)),k9logLevel::INFO);
+ else
+- k9log::add(i18n("Starting encoding of %1, chapters %2").arg(_title->getname()).arg(getChapterList( _title)),k9logLevel::INFO);
+- k9log::add(i18n("source : %1").arg(m_device),k9logLevel::INFO);
+- k9log::add(i18n("destination : %1").arg(m_filename),k9logLevel::INFO);
+- k9log::add(i18n("disk cache : %1").arg( m_usecache ? i18n("activated"):i18n("disabled")),k9logLevel::INFO);
++ k9log::add(i18n("Starting encoding of %1, chapters %2",_title->getname(),getChapterList( _title)),k9logLevel::INFO);
++ k9log::add(i18n("source : %1",m_device),k9logLevel::INFO);
++ k9log::add(i18n("destination : %1",m_filename),k9logLevel::INFO);
++ k9log::add(i18n("disk cache : %1", m_usecache ? i18n("activated"):i18n("disabled")),k9logLevel::INFO);
+ m_currentChapter=0;
+ m_error=false;
+ m_outputFile=NULL;
+@@ -205,14 +205,14 @@
+ m_remain="--:--:--";
+
+ m_totalSize=_title->getChaptersSize(true);
+- k9log::add(i18n("size : %1 MB").arg(m_totalSize/512),k9logLevel::INFO);
++ k9log::add(i18n("size : %1 MB",m_totalSize/512),k9logLevel::INFO);
+ if (!m_mpeg2) {
+- k9log::add(i18n("audio bitrate : %1").arg(m_audioBitrate),k9logLevel::INFO);
++ k9log::add(i18n("audio bitrate : %1",m_audioBitrate),k9logLevel::INFO);
+ if (!m_extractAudio) {
+ if (m_videoBitrate !="")
+- k9log::add(i18n("user defined video bitrate : %1").arg(m_videoBitrate),k9logLevel::INFO);
++ k9log::add(i18n("user defined video bitrate : %1",m_videoBitrate),k9logLevel::INFO);
+ else
+- k9log::add(i18n("calculated video bitrate : %1").arg(getBitRate(_title)),k9logLevel::INFO);
++ k9log::add(i18n("calculated video bitrate : %1",getBitRate(_title)),k9logLevel::INFO);
+ }
+ }
+ QString injectName;
+@@ -239,7 +239,7 @@
+
+ do {
+ if (!m_mpeg2)
+- k9log::add(i18n("starting pass %1 of %2").arg(pass==0 ? 1:pass).arg(maxPass==0 ? 1 : maxPass),k9logLevel::INFO);
++ k9log::add(i18n("starting pass %1 of %2",pass==0 ? 1:pass,maxPass==0 ? 1 : maxPass),k9logLevel::INFO);
+ m_totalBytes=0;
+ m_vamps=new k9vamps(this,m_usecache);;
+ m_player=new k9play(this);
+@@ -507,7 +507,7 @@
+
+ QString sAOption=replaceParams(audioCodecs->getOptions(m_audioCodec)).trimmed();
+
+- m_progress->setTitleLabel(i18n("Encoding %1").arg(sCodec));
++ m_progress->setTitleLabel(i18n("Encoding %1",sCodec));
+ QString path,ext=audioCodecs->getExtension(m_audioCodec) ;
+ if (!ext.startsWith("."))
+ ext="."+ext;
+@@ -519,7 +519,7 @@
+
+ cmd << m_ffmpegPath << "-i" << "/dev/stdin" <<sAOption.split(" ") << KShell::quoteArg(path) ;
+
+- k9log::add(i18n("starting thread : %1").arg(cmd.join(" ")),k9logLevel::INFO);
++ k9log::add(i18n("starting thread : %1",cmd.join(" ")),k9logLevel::INFO);
+ k9ConvertAudio *converter=new k9ConvertAudio("",cmd);
+ m_converters[BASE_CONV_AUDIO+i]=converter;
+ m_convertersToDelete << converter;
+@@ -571,9 +571,9 @@
+ cmd << sVOption.split(" ");
+
+ if (pass >0)
+- m_progress->setTitleLabel(i18n("Encoding %1").arg(sCodec)+" - "+i18n("pass %1").arg(pass));
++ m_progress->setTitleLabel(i18n("Encoding %1",sCodec)+" - "+i18n("pass %1",pass));
+ else
+- m_progress->setTitleLabel(i18n("Encoding %1").arg(sCodec));
++ m_progress->setTitleLabel(i18n("Encoding %1",sCodec));
+
+ if (m_fourcc !="")
+ cmd << "-vtag" << m_fourcc;
+@@ -640,7 +640,7 @@
+ cmd << "-y" << KShell::quoteArg(path);
+ cmd << slNewAudio;
+ // if (m_extractMkv) {
+- k9log::add(i18n("starting thread : %1").arg(cmd.join(" ")),k9logLevel::INFO);
++ k9log::add(i18n("starting thread : %1",cmd.join(" ")),k9logLevel::INFO);
+ k9ConvertAudio *converter=new k9ConvertAudio("",cmd);
+ //converter->setDebug(true);
+ m_converters[BASE_CONV_VIDEO]=converter;
+@@ -690,9 +690,9 @@
+
+
+ if (pass >0)
+- m_progress->setTitleLabel(i18n("Encoding %1").arg(sCodec)+" - "+i18n("pass %1").arg(pass));
++ m_progress->setTitleLabel(i18n("Encoding %1",sCodec)+" - "+i18n("pass %1",pass));
+ else
+- m_progress->setTitleLabel(i18n("Encoding %1").arg(sCodec));
++ m_progress->setTitleLabel(i18n("Encoding %1",sCodec));
+
+ if (m_fourcc !="")
+ cmd << "-ffourcc" << m_fourcc;
+@@ -747,7 +747,7 @@
+ // cmd << "-of" << "lavf";
+ // cmd << "-lavfopts" << "i_certify_that_my_video_stream_does_not_use_b_frames";
+ }
+- k9log::add(i18n("starting thread : %1").arg(cmd.join(" ")),k9logLevel::INFO);
++ k9log::add(i18n("starting thread : %1",cmd.join(" ")),k9logLevel::INFO);
+ k9ConvertAudio *converter=new k9ConvertAudio("",cmd);
+ converter->setDebug(false);
+ m_converters[BASE_CONV_VIDEO]=converter;
+@@ -894,7 +894,7 @@
+ else {
+ m_player->setAborted(true);
+ m_error=true;
+- m_msgError=i18n("An error occured while encoding the %1 stream").arg(i18n("audio"));
++ m_msgError=i18n("An error occured while encoding the %1 stream",i18n("audio"));
+ m_ErrorDetail=c->getOutput();
+ k9log::add(m_msgError,k9logLevel::ERROR);
+ }
+@@ -919,7 +919,7 @@
+ else {
+ m_player->setAborted(true);
+ m_error=true;
+- m_msgError=i18n("An error occured while encoding the %1 stream").arg(i18n("video"));
++ m_msgError=i18n("An error occured while encoding the %1 stream",i18n("video"));
+ m_ErrorDetail=c->getOutput();
+ k9log::add(m_msgError,k9logLevel::ERROR);
+ }
+diff -Naur k9copy-work/src/core/k9burndvd.cpp k9copy/src/core/k9burndvd.cpp
+--- k9copy-work/src/core/k9burndvd.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/core/k9burndvd.cpp 2020-12-23 23:48:01.706471964 -0500
+@@ -148,7 +148,7 @@
+ proc2->sync();
+ if (proc2->exitStatus()==0) {
+ delete proc2;
+- k9log::add(i18n("image size : %1").arg(imageSize),k9logLevel::INFO);
++ k9log::add(i18n("image size : %1",imageSize),k9logLevel::INFO);
+ return imageSize;
+ }
+ }
+@@ -234,7 +234,7 @@
+ connect( proc2, SIGNAL(receivedStdout(char *, int)),this, SLOT(mkisoSizeStdout(char *, int)) );
+ k9log::add(i18n("computing image size"),k9logLevel::INFO);
+ proc2->setShellCommand(proc2Cmd.join(" "));;
+- k9log::add(i18n("starting thread : %1").arg(proc2Cmd.join(" ")),k9logLevel::INFO);
++ k9log::add(i18n("starting thread : %1",proc2Cmd.join(" ")),k9logLevel::INFO);
+ proc2->start();
+ proc2->sync();
+ getWodimCmd(procCmd);
+@@ -243,7 +243,7 @@
+
+ if (!autoBurn) {
+ #if QT_VERSION >= 0x050000
+- if ( k9Dialogs::warningContinueCancel ( i18n("Insert a recordable DVD"), i18n("DVD burning"))!=QMessageBox::Ignore)
++ if ( k9Dialogs::warningContinueCancel ( i18n("Insert a recordable DVD"),i18n("DVD burning"))!=QMessageBox::Ignore)
+ #else
+ if ( k9Dialogs::warningContinueCancel ( i18n("Insert a recordable DVD"), i18n("DVD burning"))!=KMessageBox::Continue)
+ #endif
+@@ -255,12 +255,12 @@
+
+ if (!cancelled) {
+ k9log::add(i18n("start burning"),k9logLevel::INFO);
+- k9log::add(i18n("starting thread : %1").arg(procCmd.join(" ")),k9logLevel::INFO);
++ k9log::add(i18n("starting thread : %1",procCmd.join(" ")),k9logLevel::INFO);
+
+ int res=progress->execute();
+ if ( res==-1 ) {
+ k9log::add(i18n("Error"),k9logLevel::ERROR);
+- k9Dialogs::error( i18n("Error burning DVD :\n")+i18n("Unable to run %1").arg("genisoimage"), i18n("DVD burning") );
++ k9Dialogs::error( i18n("Error burning DVD :\n")+i18n("Unable to run %1", "genisoimage"),i18n("DVD burning") );
+ cancelled=true;
+ } else {
+
+@@ -353,13 +353,13 @@
+ }
+ if (!cancelled) {
+ k9log::add(i18n("start burning"),k9logLevel::INFO);
+- k9log::add(i18n("starting thread : %1").arg(proc->debug()),k9logLevel::INFO);
++ k9log::add(i18n("starting thread : %1",proc->debug()),k9logLevel::INFO);
+
+ int res=progress->execute();
+ if ( res==-1 ) {
+ k9log::add(i18n("Error"),k9logLevel::ERROR);
+
+- k9Dialogs::error( i18n("Error burning DVD :\n")+i18n("Unable to run %1").arg(progname), i18n("DVD burning") );
++ k9Dialogs::error( i18n("Error burning DVD :\n")+i18n("Unable to run %1",progname), i18n("DVD burning") );
+ cancelled=true;
+ } else {
+
+@@ -413,7 +413,7 @@
+ }
+
+ progress->setTitle(i18n("Burning DVD"));
+- progress->setLabelText(i18n("Current write speed :%1 x").arg(burnSpeed));
++ progress->setLabelText(i18n("Current write speed :%1 x",burnSpeed));
+ if (c.contains("% done")) {
+ pos=c.indexOf("%");
+ if (pos!=-1) {
+@@ -433,7 +433,7 @@
+ }
+ }
+ }
+- else k9log::add(i18n("%1").arg(c),k9logLevel::INFO);
++ else k9log::add(i18n("%1",c),k9logLevel::INFO);
+ }
+ }
+ void k9BurnDVD::growisoStdout(char *buffer, int buflen) {
+diff -Naur k9copy-work/src/core/k9dvd.cpp k9copy/src/core/k9dvd.cpp
+--- k9copy-work/src/core/k9dvd.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/core/k9dvd.cpp 2020-12-23 23:48:01.707471971 -0500
+@@ -214,7 +214,7 @@
+ int i;
+ QString c;
+ if (! (filehandle = fopen(dvd_device, "r"))) {
+- c=i18n("Couldn't open %1 for title\n").arg(dvd_device);
++ c=i18n("Couldn't open %1 for title\n",dvd_device);
+ // setError(c );
+ strcpy(title, i18n("unknown").toUtf8());
+ return -1;
+@@ -222,7 +222,7 @@
+
+ if ( fseek(filehandle, 32808, SEEK_SET )) {
+ fclose(filehandle);
+- c=i18n("Couldn't seek in %1 for title\n").arg(dvd_device);
++ c=i18n("Couldn't seek in %1 for title\n",dvd_device);
+ setError(c);
+ strcpy(title, i18n("unknown").toUtf8());
+ return -1;
+@@ -377,7 +377,7 @@
+ m_dvd.close();
+ m_dvd.openDevice(device);
+ if ( !m_dvd.opened() ) {
+- c=i18n("Can't open disc %1!\n").arg(device);
++ c=i18n("Can't open disc %1!\n",device);
+ setError(c);
+ return 2;
+ }
+@@ -411,7 +411,7 @@
+ ifo = kifo->getIFO();
+ if (ifo==NULL) {
+ //ifo is null when trying to open a protected dvd
+- setError(i18n("Can't open disc %1!\n").arg(device));
++ setError(i18n("Can't open disc %1!\n",device));
+ return 2;
+ //continue;
+ }
+@@ -435,7 +435,7 @@
+ vts_ttn = ttn;//ifo->vts_ptt_srpt->title[j].ptt[0].pgcn; //ifo_zero->tt_srpt->title[j].vts_ttn;
+
+ //JMPtxt=i18n("Title %1").arg(indexedCount);
+- txt=i18n("Title %1").arg(numTitle);
++ txt=i18n("Title %1",numTitle);
+ emit sigTotalText (txt);
+ emit sigTitleProgress(numTitle,ltitles);
+ video_attr = &vtsi_mat->vts_video_attr;
+@@ -725,7 +725,7 @@
+ }
+ if (bappend)
+ m_titles.append(track);
+- track->name=i18n("Title %1").arg(num);
++ track->name=i18n("Title %1",num);
+
+ if (!_indexed) {
+ for (int i=0;i<m_titles.count();i++) {
+@@ -895,7 +895,7 @@
+ QString c;
+ dvdfile =m_dvd.openTitle( title);
+ if ( !dvdfile ) {
+- c=i18n("Error opening vobs for title %1\n").arg(title);
++ c=i18n("Error opening vobs for title %1\n",title);
+ setError(c);
+ return 0;
+ }
+@@ -906,7 +906,7 @@
+ emit sigVobProgress(i-startblock,lastblock-startblock);
+ total+=size;
+ if ( !size ) {
+- c=i18n("ERROR reading block %1\n").arg(i);
++ c=i18n("ERROR reading block %1\n",i);
+ setError(c);
+ break;
+ }
+diff -Naur k9copy-work/src/import/k9avidecode.cpp k9copy/src/import/k9avidecode.cpp
+--- k9copy-work/src/import/k9avidecode.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/import/k9avidecode.cpp 2020-12-23 23:48:01.707471971 -0500
+@@ -53,20 +53,20 @@
+ m_error="";
+ QStringList errs;
+ if (!CodecHandle) {
+- errs << i18n("Cannot open the library %1").arg("libavcodec");
++ errs << i18n("Cannot open the library %1","libavcodec");
+ }
+ if (!FormatHandle ) {
+- errs << i18n("Cannot open the library %1").arg("libavformat");
++ errs << i18n("Cannot open the library %1","libavformat");
+ }
+ # if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 33, 0)
+ if (!UtilHandle) {
+- m_error =i18n("Cannot open then library %1").arg("libavutil");
++ m_error =i18n("Cannot open then library %1","libavutil");
+ return;
+ }
+ # endif
+ #ifdef HAVE_SWSCALE
+ if (!SwscaleHandle) {
+- errs << i18n("Cannot open the library %1").arg("libswscale");
++ errs << i18n("Cannot open the library %1","libswscale");
+ }
+ #endif
+
+@@ -101,7 +101,7 @@
+ img_convert = (img_convert_t)dlsym(CodecHandle,"img_convert");
+ //if img_convert is null (deprecated in ffmpeg), we need libswscale
+ if (!img_convert)
+- errs << i18n("Cannot open the library %1").arg("libswscale");
++ errs << i18n("Cannot open the library %1","libswscale");
+ #endif
+ av_free = (av_free_t)dlsym(CodecHandle,"av_free");
+ av_free_packet = (av_free_packet_t)dlsym(CodecHandle,"av_free_packet");
+@@ -174,7 +174,7 @@
+ av_open_input_file(&m_FormatCtx, _fileName.toUtf8(), NULL, 0, NULL)!=0
+ # endif
+ ) {
+- m_error=i18n("Couldn't open the file %1").arg(_fileName);
++ m_error=i18n("Couldn't open the file %1",_fileName);
+ return false; // Couldn't open file}
+ }
+ // Retrieve stream information
+@@ -231,7 +231,7 @@
+ // Allocate an AVFrame structure
+ m_FrameRGB=avcodec_alloc_frame();
+ if (m_FrameRGB==NULL) {
+- m_error =i18n ("Unable to allocate memory for frames");
++ m_error =i18n("Unable to allocate memory for frames");
+ return false;
+ }
+
+diff -Naur k9copy-work/src/import/k9import.cpp k9copy/src/import/k9import.cpp
+--- k9copy-work/src/import/k9import.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/import/k9import.cpp 2020-12-23 23:48:01.707471971 -0500
+@@ -186,7 +186,7 @@
+
+
+ k9LvItemImport * itemch=new k9LvItemImport(title,k9LvItemImport::CHAPTER);
+- itemch->setText(0,i18n("chapter %1").arg(title->childCount()));
++ itemch->setText(0,i18n("chapter %1",title->childCount()));
+ itemch->setAviFile(file);
+ itemch->setTitle(title->getTitle());
+ connect(file,SIGNAL(aviFileUpdated(k9AviFile*)),this,SLOT(aviFileUpdated(k9AviFile*)));
+@@ -201,7 +201,7 @@
+ btn->setHeight(config.getPrefButtonHeight());
+ btn->setScript(QString("jump title 1 chapter %1 ;").arg(title->childCount()));
+ btn->setTextPosition(BOTTOM);
+- btn->setText(i18n("chapter %1").arg(title->childCount()));
++ btn->setText(i18n("chapter %1",title->childCount()));
+ btn->setColor(config.getPrefButtonTextColor());
+ btn->setFont(config.getPrefButtonFont());
+ file->setButton(btn);
+diff -Naur k9copy-work/src/import/k9menu.cpp k9copy/src/import/k9menu.cpp
+--- k9copy-work/src/import/k9menu.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/import/k9menu.cpp 2020-12-23 23:48:01.707471971 -0500
+@@ -145,7 +145,7 @@
+ void k9Menu::createAudio(const QString & _audioFile) {
+ if (! (k9Tools::checkProgram("twolame",false) || k9Tools::checkProgram("toolame",false))) {
+ m_error=true;
+- k9Dialogs::error(i18n("Error starting program %1").arg("twolame | toolame"),i18n("Running program"));
++ k9Dialogs::error(i18n("Error starting program %1","twolame | toolame"),i18n("Running program"));
+ return;
+ }
+
+diff -Naur k9copy-work/src/import/k9menuedit.cpp k9copy/src/import/k9menuedit.cpp
+--- k9copy-work/src/import/k9menuedit.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/import/k9menuedit.cpp 2020-12-23 23:48:01.708471979 -0500
+@@ -298,7 +298,7 @@
+ disconnect (this,SIGNAL(endScriptChanged(const QString&)),0,0);
+ Ui_menuEdit.cbEnd->setEnabled(true);
+ m_scene->clearSelection();;
+- Ui_menuEdit.lTitle->setText(i18n("Title %1 Menu").arg(_title->getNum()+1));
++ Ui_menuEdit.lTitle->setText(i18n("Title %1 Menu",_title->getNum()+1));
+ setScene(_title->getMenu()->getScene());
+ m_menuType=TITLEMENU;
+ Ui_menuEdit.cbStart->clear();
+@@ -322,7 +322,7 @@
+ k9NewDVD *newDVD=(k9NewDVD*)_title->parent() ;
+ k9NewDVDItems *items=newDVD->getTitles();
+ foreach (k9Title *title,*items) {
+- Ui_menuEdit.cbEnd->addItem(i18n("Play Title %1").arg(title->getNum()+1));
++ Ui_menuEdit.cbEnd->addItem(i18n("Play Title %1",title->getNum()+1));
+ QString script=QString("g6=%1; call vmgm menu;" ).arg(title->getNum()+1);
+ m_endScripts << script;
+ }
+@@ -348,7 +348,7 @@
+ m_startScripts << "";
+ k9NewDVDItems *items=_newDVD->getTitles();
+ foreach (k9Title *title,*items) {
+- Ui_menuEdit.cbStart->addItem(i18n("Play Title %1").arg(title->getNum()+1));
++ Ui_menuEdit.cbStart->addItem(i18n("Play Title %1",title->getNum()+1));
+ // QString script=QString("if (g5==0) {g5=1; jump title %1;}" ).arg(title->getNum()+1);
+ QString script=QString("g6=%1;" ).arg(title->getNum()+1);
+ m_startScripts << script;
+diff -Naur k9copy-work/src/import/k9newdvd.cpp k9copy/src/import/k9newdvd.cpp
+--- k9copy-work/src/import/k9newdvd.cpp 2020-12-23 23:47:42.375321426 -0500
++++ k9copy/src/import/k9newdvd.cpp 2020-12-23 23:48:01.708471979 -0500
+@@ -175,7 +175,7 @@
+ QString menuFileName=m_workDir+k9Tools::randomFileName()+".mpg";
+ m_tmpFiles << menuFileName,
+ menu->setMenuFileName(menuFileName);
+- m_processList->addProgress(i18n("Creating menu for title %1").arg(title->getNum()+1));
++ m_processList->addProgress(i18n("Creating menu for title %1",title->getNum()+1));
+ if (!menu->createMenus(&titleSet))
+ return;
+
+@@ -282,7 +282,7 @@
+ break;
+ }
+
+- k9Process *process=m_processList->addProcess(i18n("Encoding %1").arg(_aviFile->getFileName()));
++ k9Process *process=m_processList->addProcess(i18n("Encoding %1",_aviFile->getFileName()));
+ m_processList->setFileName(process,_aviFile->getFileName());
+
+ QTime t(0,0);
+@@ -499,7 +499,7 @@
+ btn->setHeight(m_config->getPrefButtonHeight());
+ btn->setScript(QString("g1=0;jump titleset %1 menu;").arg(_title->getNum()+1));
+ btn->setTextPosition(RIGHT);
+- btn->setText(i18n("title %1").arg(_title->getNum()+1));
++ btn->setText(i18n("title %1",_title->getNum()+1));
+ btn->setColor(m_config->getPrefButtonTextColor());
+ btn->setFont(m_config->getPrefButtonFont());
+
+diff -Naur k9copy-work/src/import/k9newtitle.cpp k9copy/src/import/k9newtitle.cpp
+--- k9copy-work/src/import/k9newtitle.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/import/k9newtitle.cpp 2020-12-23 23:48:01.708471979 -0500
+@@ -126,7 +126,7 @@
+ k9LvItemImport *item=new k9LvItemImport(m_k9Import->getRoot(),k9LvItemImport::TITLE);
+ item->setExpanded(true);
+ k9Title *title=new k9Title( m_k9Import->getNewDVD());
+- item->setText(0,i18n("title %1").arg(title->getNum() +1));
++ item->setText(0,i18n("title %1",title->getNum() +1));
+
+ connect( title->getButton(),SIGNAL(sigsetImage(k9MenuButton*, const QImage&)),m_k9Import,SLOT(buttonUpdated(k9MenuButton*, const QImage&)));
+ item->setTitle(title);
+@@ -180,7 +180,7 @@
+ file->setEnd(t.addMSecs(qMin(pos,fileInfo.getDuration()) *1000));
+ file->setReencode(!Ui_newTitle.ckReencode->isChecked());
+ k9LvItemImport * itemch=new k9LvItemImport(item,k9LvItemImport::CHAPTER);
+- itemch->setText(0,i18n("chapter %1").arg(i+1));
++ itemch->setText(0,i18n("chapter %1",i+1));
+ itemch->setText(1,file->getStart().toString("hh:mm:ss") +" - "+file->getEnd().toString("hh:mm:ss") );
+ itemch->setAviFile(file);
+ itemch->setTitle(title);
+@@ -202,7 +202,7 @@
+ btn->setHeight(height);
+ btn->setScript(QString("jump title 1 chapter %1 ;").arg(i+1));
+ btn->setTextPosition(BOTTOM);
+- btn->setText(i18n("chapter %1").arg(i+1));
++ btn->setText(i18n("chapter %1",i+1));
+ btn->setColor(config.getPrefButtonTextColor());
+ btn->setFont(config.getPrefButtonFont());
+ file->setButton(btn);
+diff -Naur k9copy-work/src/main/k9main.cpp k9copy/src/main/k9main.cpp
+--- k9copy-work/src/main/k9main.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/main/k9main.cpp 2020-12-23 23:48:01.708471979 -0500
+@@ -436,7 +436,7 @@
+ execCopy.copyDVD();
+ break;
+ }
+- changeStatusbar ( i18n ( "Ready" ) ,sbMessage );
++ changeStatusbar ( i18n( "Ready" ) ,sbMessage );
+
+ }
+
+@@ -457,7 +457,7 @@
+ index=i;
+ }
+ QString res="";
+- if ( ( index==-1 ) || ( _combo->currentText() ==i18n ( "ISO Image" ) ) ) {
++ if ( ( index==-1 ) || ( _combo->currentText() ==i18n( "ISO Image" ) ) ) {
+ res=_combo->currentText();
+ } else {
+ k9CdDrive * drive= ( k9CdDrive* ) driveList.at ( index );
+@@ -512,12 +512,12 @@
+
+ dvd->scandvd ( sDevice,m_quickScan );
+ if ( dvd->geterror() ) {
+- k9Dialogs::error ( dvd->geterrMsg(), i18n ( "Open DVD" ) );
++ k9Dialogs::error ( dvd->geterrMsg(), i18n( "Open DVD" ) );
+ return;
+ }
+
+ m_parent->setDvdOpened(true);
+- if ( dvd->getDVDTitle() ==i18n ( "unknown" ) && sVolName!="" ) {
++ if ( dvd->getDVDTitle() ==i18n( "unknown" ) && sVolName!="" ) {
+ dvd->setDVDTitle ( sVolName );
+ }
+
+@@ -535,14 +535,14 @@
+ ckLvItem *tsItem = new ckLvItem ( root,this,TITLESET );
+ tsItem->setExpanded ( TRUE );
+ QString c;
+- c=i18n ( "Titleset %1").arg(i+1 );
++ c=i18n( "Titleset %1",i+1 );
+ tsItem->setText ( 0,c );
+ QFont font=tsItem->font ( 1 );
+ font.setWeight ( QFont::Bold );
+ tsItem->setFont ( 1,font );
+
+
+- tsItem->setText ( 1," "+dvd->gettitleset ( i )->getsize_mb() +" " +i18n ( "MB" ) );
++ tsItem->setText ( 1," "+dvd->gettitleset ( i )->getsize_mb() +" " +i18n( "MB" ) );
+ tsItem->setTextAlignment ( 1,Qt::AlignRight );
+ tsItem->obj=dvd->gettitleset ( i ) ;
+ tsItem->streamType=NONE;
+@@ -561,7 +561,7 @@
+ m_playbackOptions->fillTitleList();
+ m_langSelect->fillLvLanguages();
+ listView1->setSortingEnabled ( true );
+- changeStatusbar ( i18n ( "Ready" ),sbMessage );
++ changeStatusbar ( i18n( "Ready" ),sbMessage );
+ emit SelectionChanged ( dvd,withMenus() );
+ this->setEnabled ( true );
+
+@@ -606,18 +606,18 @@
+
+ void k9Main::addChapters ( QTreeWidgetItem *_parent,k9DVDTitle *_title ) {
+ LvItem *chapter = new LvItem ( _parent,CHAPTER );
+- chapter->setText ( 0, i18n ( "chapters" ) );
++ chapter->setText ( 0, i18n( "chapters" ) );
+ chapter->setExpanded ( false );
+ chapter->setIcon ( 0,pxChapter );
+
+ int ch=0;
+ for ( int i=0;i< _title->getchapterCount();i++ ) {
+ ckLvItem *it =new ckLvItem ( chapter,this,CHAPTER );
+- it->setText ( 0,i18n ( "chapter %1").arg(++ch ) );
++ it->setText ( 0,i18n( "chapter %1",++ch ) );
+ QString s;
+
+ s=QString ( "%1" ).arg ( ( double ) ( _title->getChapter ( i )->getsectors() ) /512,0,'f',2 );
+- it->setText ( 1,i18n ( "%1 MB").arg(s ) );
++ it->setText ( 1,i18n( "%1 MB",s ) );
+ it->setTextAlignment ( 1,Qt::AlignRight | Qt::AlignVCenter);
+ it->setTextAlignment ( 2,Qt::AlignRight | Qt::AlignVCenter);
+
+@@ -631,13 +631,13 @@
+ k9DVDTitle *title2=_title->getTitles().at ( j );
+ for ( int i=0;i< title2->getchapterCount();i++ ) {
+ ckLvItem *it =new ckLvItem ( chapter,this,CHAPTER );
+- it->setText ( 0,i18n ( "chapter %1").arg(++ch ) );
++ it->setText ( 0,i18n( "chapter %1",++ch ) );
+ it->streamType=CHAP;
+ it->obj=title2->getChapter ( i );
+ QString s;
+ s=QString ( "%1" ).arg ( ( double ) ( title2->getChapter ( i )->getsectors() ) /512,0,'f',2 );
+
+- it->setText ( 1,i18n ( "%1 MB").arg(s ) );
++ it->setText ( 1,i18n( "%1 MB",s ) );
+ it->setTextAlignment ( 1,Qt::AlignRight | Qt::AlignVCenter );
+ it->setTextAlignment ( 2,Qt::AlignRight | Qt::AlignVCenter );
+
+@@ -672,7 +672,7 @@
+ itemTrack->setIcon ( col1,SmallIcon ( "title" ) );
+ c.sprintf ( "%.2f ", track->gettotalsize_mb() );
+
+- itemTrack->setText ( col2,c+i18n ( "MB" ) );
++ itemTrack->setText ( col2,c+i18n( "MB" ) );
+ itemTrack->setText (col4,track->gettotallength().toString ( "h:mm:ss" ));
+ itemTrack->setTextAlignment ( col2,Qt::AlignRight|Qt::AlignVCenter );
+ itemTrack->setTextAlignment ( col4,Qt::AlignRight|Qt::AlignVCenter );
+@@ -690,20 +690,20 @@
+ video->setIcon ( 0,SmallIcon ( "video" ) );
+ addListItem ( track,video,VID );
+ video->setExpanded ( false );
+- c=i18n ( "video %1 ").arg(track->getformat() );
++ c=i18n( "video %1 ",track->getformat() );
+ c.append ( " - " + track->getaspectRatio() );
+
+ video->setText ( col1, c );
+ if ( track->gettotalvideosize_mb() ) {
+ c.sprintf ( "%.2f ", track->gettotalvideosize_mb() );
+- video->setText ( col2,c +i18n ( "MB" ) );
++ video->setText ( col2,c +i18n( "MB" ) );
+ video->setTextAlignment ( col2,Qt::AlignRight );
+ }
+ video->obj=track;
+
+ for ( i=0;i< track->getaudioStreamCount();i++ ) {
+ l_auds=track->getaudioStream ( i );
+- c=i18n ( "audio %1 ").arg(i+1 );
++ c=i18n( "audio %1 ",i+1 );
+ c.append ( l_auds->getlanguage() + " " +l_auds->getformat() +" " );
+ ch.sprintf ( "%dch ",l_auds->getchannels() );
+ c.append ( ch+l_auds->getfrequency() +" "+l_auds->getquantization() );
+@@ -717,7 +717,7 @@
+ item->setText ( col1, c );
+ if ( l_auds->getsize_mb() ) {
+ c.sprintf ( "%.2f ", l_auds->getsize_mb());
+- item->setText ( col2,c +i18n ( "MB" ) );
++ item->setText ( col2,c +i18n( "MB" ) );
+ item->setTextAlignment ( col2,Qt::AlignRight );
+ }
+ item->setText ( col3,l_auds->getcontent() );
+@@ -727,7 +727,7 @@
+ }
+ for ( i=0;i< track->getsubPictureCount();i++ ) {
+ l_sub=track->getsubtitle ( i );
+- c=i18n ( "subpicture %1 ").arg(i+1 );
++ c=i18n( "subpicture %1 ",i+1 );
+ c.append ( l_sub->getlanguage() );
+ ckLvItem * item = new ckLvItem ( itemTrack,this,STREAM );
+
+@@ -738,7 +738,7 @@
+ item->setText ( col1, c );
+ if ( l_sub->getsize_mb() ) {
+ c.sprintf ( "%.2f ", l_sub->getsize_mb());
+- item->setText ( col2,c +i18n ( "MB" ) );
++ item->setText ( col2,c +i18n( "MB" ) );
+ item->setTextAlignment ( col2,Qt::AlignRight );
+ }
+ item->setText ( col3, l_sub->getcontent() );
+@@ -1207,7 +1207,7 @@
+ execCopy.setDvd ( dvd );
+ execCopy.setPath(Ui_MainDlg.urOutput->url().path());
+ execCopy.CreateMP4();
+- changeStatusbar ( i18n ( "Ready" ) ,sbMessage );
++ changeStatusbar ( i18n( "Ready" ) ,sbMessage );
+
+ }
+
+@@ -1216,7 +1216,7 @@
+ execCopy.setDvd ( dvd );
+ execCopy.setPath(Ui_MainDlg.urOutput->url().path());
+ execCopy.extractAudio();
+- changeStatusbar ( i18n ( "Ready" ) ,sbMessage );
++ changeStatusbar ( i18n( "Ready" ) ,sbMessage );
+
+ }
+
+@@ -1226,7 +1226,7 @@
+ execCopy.setDvd ( dvd );
+ execCopy.setPath(Ui_MainDlg.urOutput->url().path());
+ execCopy.extractMPEG2();
+- changeStatusbar ( i18n ( "Ready" ) ,sbMessage );
++ changeStatusbar ( i18n( "Ready" ) ,sbMessage );
+
+
+ }
+@@ -1365,7 +1365,7 @@
+ if ( drive !=NULL ) {
+ QList <int>list=drive->getWriteSpeeds();
+ Ui_MainDlg.cbBurnSpeed->clear();
+- Ui_MainDlg.cbBurnSpeed->addItem ( i18n ( "default" ) );
++ Ui_MainDlg.cbBurnSpeed->addItem ( i18n( "default" ) );
+ foreach ( int speed,list ) {
+ Ui_MainDlg.cbBurnSpeed->addItem ( QString::number ( ( double ) ( speed ) /1385 ) );
+ }
+@@ -1389,7 +1389,7 @@
+
+
+ void k9Main::bInputOpenClick() {
+- QString result=k9Dialogs::getOpenFileName ( QDir::homePath(),"*.iso", 0,i18n ( "Open ISO Image" ) );
++ QString result=k9Dialogs::getOpenFileName ( QDir::homePath(),"*.iso", 0,i18n( "Open ISO Image" ) );
+ if ( result!="" ) {
+ k9Tools::setComboText ( Ui_MainDlg.cbInputDev,result );
+ Open();
+@@ -1482,7 +1482,7 @@
+ }
+ else {
+ changeStatusbar ( QString::number ( dbfactor,'f',2 ),sbFactor );
+- changeStatusbar ( i18n("%1 MB").arg(QString::number ((double)sizeSelected/512.,'f',2)),sbSelSize);
++ changeStatusbar ( i18n("%1 MB",QString::number ((double)sizeSelected/512.,'f',2)),sbSelSize);
+ }
+ emit SelectionChanged ( dvd,withMenus() );
+ m_mutex.unlock();
+diff -Naur k9copy-work/src/main/k9titlefactor.cpp k9copy/src/main/k9titlefactor.cpp
+--- k9copy-work/src/main/k9titlefactor.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/main/k9titlefactor.cpp 2020-12-23 23:51:35.909155787 -0500
+@@ -60,7 +60,7 @@
+ }
+ double size;
+ size =m_current->getChaptersSize_mb(true) / getFactor();
+- Ui_titleFactor.lTargetSize->setText(i18n("size : %1 MB").arg(size ));
++ Ui_titleFactor.lTargetSize->setText(i18n("size : %1 MB",size ));
+ }
+ }
+
+@@ -97,7 +97,7 @@
+ Ui_titleFactor.tFactor->setText(QString("%1").arg(getFactor(),4,'f',2));
+ size =m_current->getChaptersSize_mb(true) / getFactor();
+ }
+- Ui_titleFactor.lTargetSize->setText(i18n("size : %1 MB").arg(size ));
++ Ui_titleFactor.lTargetSize->setText(i18n("size : %1 MB",size ));
+
+
+ }
+@@ -118,7 +118,7 @@
+ Ui_titleFactor.gbTitle->setChecked(m_current->getforceFactor());
+ m_updating=false;
+
+- Ui_titleFactor.lbTitle->setText(i18n("Shrink Factor for %1").arg(m_current->getname()));
++ Ui_titleFactor.lbTitle->setText(i18n("Shrink Factor for %1",m_current->getname()));
+ double size;
+ if (m_current->getforceFactor()) {
+ Ui_titleFactor.slFactor->setValue(m_current->getfactor()*100.0);
+@@ -131,7 +131,7 @@
+ Ui_titleFactor.slFactor->setMinimum(100);
+ size =m_current->getChaptersSize_mb(true) / getFactor();
+ }
+- Ui_titleFactor.lTargetSize->setText(i18n("size : %1 MB").arg(size ));
++ Ui_titleFactor.lTargetSize->setText(i18n("size : %1 MB",size ));
+
+ }
+
+diff -Naur k9copy-work/src/mplayer/k9mplayer.cpp k9copy/src/mplayer/k9mplayer.cpp
+--- k9copy-work/src/mplayer/k9mplayer.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/mplayer/k9mplayer.cpp 2020-12-23 23:48:01.709471987 -0500
+@@ -174,7 +174,7 @@
+
+ qDebug() << m_process->debug();
+ if (!m_process->start()) {
+- k9Dialogs::error (i18n("Unable to run %1").arg("mplayer") , i18n("Preview"));
++ k9Dialogs::error (i18n("Unable to run %1","mplayer") , i18n("Preview"));
+ }
+
+ m_canwrite=TRUE;
+diff -Naur k9copy-work/src/player/k9play.cpp k9copy/src/player/k9play.cpp
+--- k9copy-work/src/player/k9play.cpp 2020-12-23 23:47:42.379321457 -0500
++++ k9copy/src/player/k9play.cpp 2020-12-23 23:48:01.709471987 -0500
+@@ -366,7 +366,7 @@
+ /* set read ahead cache usage */
+ if (dvdnav_set_readahead_flag(dvdnav, DVD_READ_CACHE) != DVDNAV_STATUS_OK) {
+ writeOutput( QString("ERR:Error on dvdnav_set_readahead_flag: %1\n").arg(dvdnav_err_to_string(dvdnav)));
+- emit sigError(i18n("Error on dvdnav_set_readahead_flag: %1").arg(dvdnav_err_to_string(dvdnav)));
++ emit sigError(i18n("Error on dvdnav_set_readahead_flag: %1",dvdnav_err_to_string(dvdnav)));
+ end();
+ return;
+ }
diff --git a/multimedia/k9copy-reloaded/patches/k9copy-installdirs.patch b/multimedia/k9copy-reloaded/patches/k9copy-installdirs.patch
new file mode 100644
index 0000000000..ec923d1706
--- /dev/null
+++ b/multimedia/k9copy-reloaded/patches/k9copy-installdirs.patch
@@ -0,0 +1,29 @@
+diff -Naur k9copy.orig/CMakeLists.txt k9copy/CMakeLists.txt
+--- k9copy.orig/CMakeLists.txt 2014-10-16 07:58:20.000000000 -0400
++++ k9copy/CMakeLists.txt 2020-12-24 10:48:11.088907284 -0500
+@@ -1,3 +1,4 @@
++cmake_minimum_required(VERSION 3.1)
+ project(k9copy)
+ set (VERSION 3.0.3)
+
+@@ -38,7 +38,7 @@ find_package(Qt5DBus REQUIRED)
+ find_package(Qt5Gui REQUIRED)
+ find_package(Qt5Widgets REQUIRED)
+
+-find_package(KF5 COMPONENTS REQUIRED I18n Config Su CoreAddons WidgetsAddons DocTools XmlGui Solid KIO IconThemes)
++find_package(KF5 COMPONENTS REQUIRED Auth I18n Config Su CoreAddons WidgetsAddons DocTools XmlGui Solid KIO IconThemes)
+
+ else()
+ SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
+@@ -568,7 +569,11 @@
+
+ install( FILES k9copy.desktop k9copy_assistant.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
+ #install( FILES k9copy.kcfg DESTINATION ${KCFG_INSTALL_DIR} )
++if(QT5_BUILD)
++install( FILES k9copyui.rc DESTINATION ${KXMLGUI_INSTALL_DIR}/k9copy )
++else()
+ install( FILES k9copyui.rc DESTINATION ${DATA_INSTALL_DIR}/k9copy )
++endif()
+
+ install(FILES k9copy_open.desktop DESTINATION ${DATA_INSTALL_DIR}/solid/actions)
+ install(FILES k9copy_assistant_open.desktop DESTINATION ${DATA_INSTALL_DIR}/solid/actions)
diff --git a/multimedia/k9copy-reloaded/patches/k9copy-mimetype.patch b/multimedia/k9copy-reloaded/patches/k9copy-mimetype.patch
deleted file mode 100644
index 1c156d6055..0000000000
--- a/multimedia/k9copy-reloaded/patches/k9copy-mimetype.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- k9copy.orig/k9copy_assistant.desktop 2014-09-29 16:00:12.000000000 +0100
-+++ k9copy/k9copy_assistant.desktop 2015-05-28 20:08:49.318602109 +0100
-@@ -14,9 +14,8 @@ GenericName[fr]=Backup de DVD Video
- GenericName[tr]=DVD Vidyo Yedekleme Aracı
- GenericName[ru]=Копирование Ñ Ð²Ð¸Ð´ÐµÐ¾-DVD
- GenericName[uk]=ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾-DVD
--MimeTypes=
- Terminal=false
- Icon=k9copy
- X-DocPath=k9copy/index.html
- Categories=Qt;KDE;AudioVideo;DiscBurning;
--X-KDE-StartupNotify=true
-\ No newline at end of file
-+X-KDE-StartupNotify=true
---- k9copy.orig/k9copy_assistant_open.desktop 2014-09-29 16:00:12.000000000 +0100
-+++ k9copy/k9copy_assistant_open.desktop 2015-05-28 20:06:11.140619453 +0100
-@@ -11,4 +11,4 @@ NAme[uk]=Копіювати за допÐ
- [Desktop Entry]
- X-KDE-Solid-Predicate=[[ StorageVolume.ignored == false AND OpticalDisc.availableContent == 'Data|VideoDvd' ] OR [ StorageVolume.ignored == false AND OpticalDisc.availableContent == 'Data|VideoDvd' ]]
- Type=Service
--Actions=open;
-\ No newline at end of file
-+Actions=open;
diff --git a/multimedia/k9copy-reloaded/patches/k9copy-missing-language-in-po-files.patch b/multimedia/k9copy-reloaded/patches/k9copy-missing-language-in-po-files.patch
new file mode 100644
index 0000000000..6db2f51708
--- /dev/null
+++ b/multimedia/k9copy-reloaded/patches/k9copy-missing-language-in-po-files.patch
@@ -0,0 +1,221 @@
+diff -Naur k9copy.orig/po/ca.po k9copy/po/ca.po
+--- k9copy.orig/po/ca.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/ca.po 2020-12-24 10:48:11.122907577 -0500
+@@ -12,6 +12,7 @@
+ "PO-Revision-Date: 2006-09-06 19:13+0200\n"
+ "Last-Translator: Daniel Balagué Guardia <bullet@k-demar.org>\n"
+ "Language-Team: Català <ca@li.org>\n"
++"Language: ca\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/cs.po k9copy/po/cs.po
+--- k9copy.orig/po/cs.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/cs.po 2020-12-24 10:48:11.123907586 -0500
+@@ -13,6 +13,7 @@
+ "PO-Revision-Date: 2004-01-01 00:36+0100\n"
+ "Last-Translator: \n"
+ "Language-Team: Czech <kde-i18n-doc@kde.org>\n"
++"Language: cs\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/da.po k9copy/po/da.po
+--- k9copy.orig/po/da.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/da.po 2020-12-24 10:48:11.125907603 -0500
+@@ -11,6 +11,7 @@
+ "PO-Revision-Date: 2010-05-12 14:26+0200\n"
+ "Last-Translator: Martin Schlander <mschlander@opensuse.org>\n"
+ "Language-Team: Danish <opensuse-translation@opensuse.org>\n"
++"Language: da\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/de.po k9copy/po/de.po
+--- k9copy.orig/po/de.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/de.po 2020-12-24 10:48:11.126907611 -0500
+@@ -11,6 +11,7 @@
+ "PO-Revision-Date: 2009-06-12 14:13+0200\n"
+ "Last-Translator: Jan Berndt <Jan.Berndt@gmx.de>\n"
+ "Language-Team: deutsch <de@li.org>\n"
++"Language: de\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/el.po k9copy/po/el.po
+--- k9copy.orig/po/el.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/el.po 2020-12-24 10:48:11.127907620 -0500
+@@ -13,6 +13,7 @@
+ "PO-Revision-Date: 2007-10-17 11:33+0300\n"
+ "Last-Translator: Spiros Georgaras <sng@hellug.gr>\n"
+ "Language-Team: Greek <i18ngr@lists.hellug.gr>\n"
++"Language: el\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/es.po k9copy/po/es.po
+--- k9copy.orig/po/es.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/es.po 2020-12-24 10:48:11.127907620 -0500
+@@ -12,6 +12,7 @@
+ "PO-Revision-Date: 2006-09-06 19:11+0200\n"
+ "Last-Translator: Daniel Balagué Guardia <bullet@k-demar.org>\n"
+ "Language-Team: Català <ca@li.org>\n"
++"Language: es\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/es_AR.po k9copy/po/es_AR.po
+--- k9copy.orig/po/es_AR.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/es_AR.po 2020-12-24 10:48:11.128907629 -0500
+@@ -10,6 +10,7 @@
+ "PO-Revision-Date: 2008-04-30 03:57-0300\n"
+ "Last-Translator: Fernando Toledo <ftoledo@docksud.com.ar>\n"
+ "Language-Team: Español (Argentina) <es@li.org>\n"
++"Language: es_AR\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/fr.po k9copy/po/fr.po
+--- k9copy.orig/po/fr.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/fr.po 2020-12-24 10:48:11.128907629 -0500
+@@ -9,6 +9,7 @@
+ "PO-Revision-Date: 2007-07-24 09:24+0200\n"
+ "Last-Translator: Jean-Michel Petit <k9copy@free.fr>\n"
+ "Language-Team: <fr@li.org>\n"
++"Language: fr\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/it.po k9copy/po/it.po
+--- k9copy.orig/po/it.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/it.po 2020-12-24 10:48:11.129907637 -0500
+@@ -15,6 +15,7 @@
+ "PO-Revision-Date: 2008-03-25 18:47+0100\n"
+ "Last-Translator: Leonardo Finetti <finex@finex.org>\n"
+ "Language-Team: italian <kde-i18n-it@kde.org>\n"
++"Language: it\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/ja.po k9copy/po/ja.po
+--- k9copy.orig/po/ja.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/ja.po 2020-12-24 10:48:11.129907637 -0500
+@@ -12,6 +12,7 @@
+ "PO-Revision-Date: 2010-07-11 10:17+0900\n"
+ "Last-Translator: Munehiro Yamamoto <munepixyz@gmail.com>\n"
+ "Language-Team: munepi <munepixyz@gmail.com>\n"
++"Language: ja\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: \n"
+diff -Naur k9copy.orig/po/k9copy.pot k9copy/po/k9copy.pot
+--- k9copy.orig/po/k9copy.pot 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/k9copy.pot 2020-12-24 10:48:11.130907646 -0500
+@@ -13,6 +13,7 @@
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL@li.org>\n"
++"Language: en\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=CHARSET\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/nl.po k9copy/po/nl.po
+--- k9copy.orig/po/nl.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/nl.po 2020-12-24 10:48:11.130907646 -0500
+@@ -11,6 +11,7 @@
+ "PO-Revision-Date: 2009-05-10 16:15+0200\n"
+ "Last-Translator: \n"
+ "Language-Team: Dutch <kde-i18n-doc@kde.org>\n"
++"Language: nl\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/pl.po k9copy/po/pl.po
+--- k9copy.orig/po/pl.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/pl.po 2020-12-24 10:48:11.130907646 -0500
+@@ -13,6 +13,7 @@
+ "PO-Revision-Date: 2006-09-27 11:51+0200\n"
+ "Last-Translator: Wojciech Nawrocki <wojtasin@o2.pl>\n"
+ "Language-Team: Polski <pl@li.org>\n"
++"Language: pl\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/pt_BR.po k9copy/po/pt_BR.po
+--- k9copy.orig/po/pt_BR.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/pt_BR.po 2020-12-24 10:48:11.131907655 -0500
+@@ -14,6 +14,7 @@
+ "PO-Revision-Date: 2010-02-08 21:04-0200\n"
+ "Last-Translator: Phantom X <megaphantomx at bol.com.br>\n"
+ "Language-Team: Português do Brasil <pt@li.org>\n"
++"Language: pt_BR\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/ru.po k9copy/po/ru.po
+--- k9copy.orig/po/ru.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/ru.po 2020-12-24 10:48:11.133907672 -0500
+@@ -11,6 +11,7 @@
+ "PO-Revision-Date: 2010-01-01 17:32+0000\n"
+ "Last-Translator: kostya_hm <kostya.hm@rambler.ru>\n"
+ "Language-Team: Russian <none>\n"
++"Language: ru\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/sr.po k9copy/po/sr.po
+--- k9copy.orig/po/sr.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/sr.po 2020-12-24 10:48:11.133907672 -0500
+@@ -14,6 +14,7 @@
+ "PO-Revision-Date: 2007-08-15 11:15+0100\n"
+ "Last-Translator: Милош Поповић <gpopac@gmail.com>\n"
+ "Language-Team: Serbian <gnom@prevod.org>\n"
++"Language: sr\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/sr@Latn.po k9copy/po/sr@Latn.po
+--- k9copy.orig/po/sr@Latn.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/sr@Latn.po 2020-12-24 10:48:11.135907689 -0500
+@@ -14,6 +14,7 @@
+ "PO-Revision-Date: 2007-08-15 11:15+0100\n"
+ "Last-Translator: Miloš Popović <gpopac@gmail.com>\n"
+ "Language-Team: Serbian <gnom@prevod.org>\n"
++"Language: sr@Latn\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/tr.po k9copy/po/tr.po
+--- k9copy.orig/po/tr.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/tr.po 2020-12-24 10:48:11.136907698 -0500
+@@ -14,6 +14,7 @@
+ "PO-Revision-Date: 2007-10-17 11:01+0300\n"
+ "Last-Translator: Murat Åženel <muratasenel@gmail.com>\n"
+ "Language-Team: <tr@li.org>\n"
++"Language: tr\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/uk.po k9copy/po/uk.po
+--- k9copy.orig/po/uk.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/uk.po 2020-12-24 10:48:11.137907707 -0500
+@@ -11,7 +11,7 @@
+ "PO-Revision-Date: 2011-07-24 12:18+0300\n"
+ "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+ "Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
+-"Language: \n"
++"Language: uk\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff -Naur k9copy.orig/po/zh_TW.po k9copy/po/zh_TW.po
+--- k9copy.orig/po/zh_TW.po 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/po/zh_TW.po 2020-12-24 10:48:11.137907707 -0500
+@@ -12,6 +12,7 @@
+ "PO-Revision-Date: 2007-10-24 19:43+0800\n"
+ "Last-Translator: 洪任諭 <pcman.tw@gmail.com>\n"
+ "Language-Team: Traditional Chinese <LL@li.org>\n"
++"Language: zh_TW\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=utf-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
diff --git a/multimedia/k9copy-reloaded/patches/k9copy-tempdir.patch b/multimedia/k9copy-reloaded/patches/k9copy-tempdir.patch
deleted file mode 100644
index e9376cf291..0000000000
--- a/multimedia/k9copy-reloaded/patches/k9copy-tempdir.patch
+++ /dev/null
@@ -1,63 +0,0 @@
---- src/core/k9tools.cpp.org 2014-09-29 17:00:12.000000000 +0200
-+++ src/core/k9tools.cpp 2015-12-19 19:18:40.474442195 +0100
-@@ -48,7 +48,7 @@
- const QString k9Tools::getTempPath() {
- QString sPath;
-
--sPath=QString("%1/%2/").arg(QDir::tempPath() + '/' + "k9copy/");
-+sPath=QString("%1/%2/").arg(QDir::tempPath(),"k9copy/");
-
- return sPath;
- }
---- src/vamps/k9fifo.cpp.org 2014-09-29 17:00:12.000000000 +0200
-+++ src/vamps/k9fifo.cpp 2015-12-19 19:04:18.616261661 +0100
-@@ -11,6 +11,8 @@
- //
- #include "k9fifo.h"
- #include <QDir>
-+#include <errno.h>
-+#include <KDebug>
-
- uint64_t k9MemoryFifo::count() {
- return m_count;
-@@ -134,12 +136,19 @@
- m_wait.wait(&m_mutex);
- }
- m_wfile->seek(m_fstart);
-- m_wfile->write((const char*)_buffer,_size);
-+ int rc=m_wfile->write((const char*)_buffer,_size) ;
-+ if (rc != (int) _size) {
-+ kFatal() << QString("error writing to tempfile (%1)").arg(strerror (errno));
-+ abort();
-+ }
- m_fstart=m_wfile->pos();
- if (m_fstart > MAX_FILE_SIZE) {
- m_wfile=new QTemporaryFile(QDir::cleanPath(m_output +"/k9b"));
- m_wfile->setAutoRemove(true);
-- m_wfile->open();
-+ if(m_wfile->open() == false) {
-+ kFatal() << QString("error creating tempfile in %1 (%1)").arg(QDir::cleanPath(m_output +"/k9b"), strerror (errno));
-+ abort();
-+ }
- m_queue.enqueue(m_wfile);
- m_fstart=0;
- }
-@@ -190,12 +199,17 @@
- if (m_rfile) {
- m_rfile->close();
- delete m_rfile;
-+ m_rfile=NULL;
- }
- qDeleteAll(m_queue);
-
-+
- m_fstart=m_fend=0;
- m_rfile=new QTemporaryFile(QDir::cleanPath(m_output +"/k9b"));
- m_rfile->setAutoRemove(true);
-- m_rfile->open();
-+ if(m_rfile->open() == false) {
-+ kFatal() << QString("error creating tempfile in %1 (%1)").arg(QDir::cleanPath(m_output +"/k9b"), strerror (errno));
-+ abort();
-+ }
- m_start=m_end=0;
- }
diff --git a/multimedia/k9copy-reloaded/patches/k9copy-uncheck-dvdauthor.patch b/multimedia/k9copy-reloaded/patches/k9copy-uncheck-dvdauthor.patch
new file mode 100644
index 0000000000..58814b7941
--- /dev/null
+++ b/multimedia/k9copy-reloaded/patches/k9copy-uncheck-dvdauthor.patch
@@ -0,0 +1,12 @@
+diff -Naur k9copy.orig/src/core/k9config.cpp k9copy/src/core/k9config.cpp
+--- k9copy.orig/src/core/k9config.cpp 2014-09-29 11:00:12.000000000 -0400
++++ k9copy/src/core/k9config.cpp 2020-12-26 12:17:00.538310987 -0500
+@@ -100,7 +100,7 @@
+ m_prefAutoBurn=group.readEntry("autoburn",false);
+ m_quickScan=group.readEntry("quickscan",true);
+ m_prefSize=group.readEntry("dvdsize",4400);
+- m_useDvdAuthor=group.readEntry("useDvdAuthor",true);
++ m_useDvdAuthor=group.readEntry("useDvdAuthor",false);
+ m_keepMenus=group.readEntry("keepMenus",true);
+ m_prefDelTmpFiles=group.readEntry("deltmpfiles",false);
+ m_prefReadAhead=group.readEntry("readahead",-1);
diff --git a/multimedia/kaffeine-mozilla/kaffeine-mozilla.SlackBuild b/multimedia/kaffeine-mozilla/kaffeine-mozilla.SlackBuild
index 07ef3764a5..644189ac09 100644
--- a/multimedia/kaffeine-mozilla/kaffeine-mozilla.SlackBuild
+++ b/multimedia/kaffeine-mozilla/kaffeine-mozilla.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for kaffeine-mozilla
# Copyright 2007-2009 Michiel van Wessem, Manchester, United Kingdom
@@ -23,26 +23,36 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=kaffeine-mozilla
VERSION=${VERSION:-0.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -84,4 +94,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/kaffeine/CMakeLists.patch b/multimedia/kaffeine/CMakeLists.patch
deleted file mode 100644
index d70973660e..0000000000
--- a/multimedia/kaffeine/CMakeLists.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 4a1a90ee1b2b4d13302046f043adf1c2a1de758d Mon Sep 17 00:00:00 2001
-From: Raphael Kubo da Costa <rakuco@FreeBSD.org>
-Date: Thu, 26 Nov 2015 15:36:26 +0100
-Subject: [PATCH] Explicitly include CheckIncludeFiles.
-
-This fixes the build with CMake 3.4.0. We were calling check_include_files()
-and implicitly relying on CheckIncludeFiles being included.
----
- CMakeLists.txt | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index d9be8db..b74b44d 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -21,6 +21,7 @@ if(STRICT_BUILD)
- -DQT_NO_URL_CAST_FROM_STRING -DQT_STRICT_ITERATORS)
- endif(STRICT_BUILD)
-
-+include(CheckIncludeFiles)
- check_include_files(${CMAKE_CURRENT_SOURCE_DIR}/include/frontend.h HAVE_DVB)
-
- if(NOT HAVE_DVB)
-
diff --git a/multimedia/kaffeine/README b/multimedia/kaffeine/README
index 8779f8987e..7b44c0eded 100644
--- a/multimedia/kaffeine/README
+++ b/multimedia/kaffeine/README
@@ -1,3 +1,11 @@
-Kaffeine is a full featured Multimedia-Player for KDE.
+Kaffeine is a media player. What makes it different from the others is
+its excellent support of digital TV (DVB). Kaffeine has user-friendly
+interface, so that even first time users can start immediately playing
+their movies: from DVD (including DVD menus, titles, chapters, etc.),
+VCD, or a file.
+
+Kaffeine is a KDE Application
+Kaffeine requires KDE Frameworks packages provided by Slackware
+
Kaffeine is free software distributed under the terms of the
GNU General Public Licence.
diff --git a/multimedia/kaffeine/kaffeine.SlackBuild b/multimedia/kaffeine/kaffeine.SlackBuild
index 3bb4a2f908..68e42ef000 100644
--- a/multimedia/kaffeine/kaffeine.SlackBuild
+++ b/multimedia/kaffeine/kaffeine.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for kaffeine
# Copyright 2008-2011 Michiel van Wessem, Manchester, United Kingdom.
@@ -22,28 +22,38 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=kaffeine
-VERSION=${VERSION:-1.3.1}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-2.0.18}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
SRC_VERSION=$(echo $VERSION | tr _ -)
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -62,7 +72,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$SRC_VERSION
-tar xvf $CWD/$PRGNAM-$SRC_VERSION.tar.gz
+tar xvf $CWD/$PRGNAM-$SRC_VERSION.tar.xz
cd $PRGNAM-$SRC_VERSION
chown -R root:root .
find -L . \
@@ -71,7 +81,6 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-patch -p1 < $CWD/CMakeLists.patch
mkdir -p build
cd build
cmake \
@@ -89,8 +98,11 @@ cd -
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a COPYING* Changelog NOTES README $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING* Changelog NOTES README.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -98,4 +110,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/kaffeine/kaffeine.info b/multimedia/kaffeine/kaffeine.info
index 19dc2ca843..183134592f 100644
--- a/multimedia/kaffeine/kaffeine.info
+++ b/multimedia/kaffeine/kaffeine.info
@@ -1,8 +1,8 @@
PRGNAM="kaffeine"
-VERSION="1.3.1"
-HOMEPAGE="http://kaffeine.sourceforge.net"
-DOWNLOAD="http://downloads.sourceforge.net/kaffeine/kaffeine-1.3.1.tar.gz"
-MD5SUM="f2308cf7abf5ec7ad5c724593594c198"
+VERSION="2.0.18"
+HOMEPAGE="https://apps.kde.org/kaffeine/"
+DOWNLOAD="https://download.kde.org/stable/kaffeine/kaffeine-2.0.18.tar.xz"
+MD5SUM="185cd114e1ebcf15b98674e872a53556"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="vlc"
diff --git a/multimedia/kaffeine/slack-desc b/multimedia/kaffeine/slack-desc
index e4bfa3435d..d47926bcf8 100644
--- a/multimedia/kaffeine/slack-desc
+++ b/multimedia/kaffeine/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-kaffeine: kaffeine (multimedia player for kde)
+kaffeine: kaffeine (Multimedia player for KDE)
kaffeine:
-kaffeine: Kaffeine is a full featured Multimedia-Player for KDE.
+kaffeine: Kaffeine is a media player. What makes it different from the others is
+kaffeine: its excellent support of digital TV (DVB). Kaffeine has user-friendly
+kaffeine: interface, so that even first time users can start immediately playing
+kaffeine: their movies: from DVD (including DVD menus, titles, chapters, etc.),
+kaffeine: VCD, or a file.
kaffeine: Kaffeine is free software distributed under the terms of the
kaffeine: GNU General Public Licence.
kaffeine:
-kaffeine: Homepage: http://kaffeine.sourceforge.net
-kaffeine:
-kaffeine:
-kaffeine:
-kaffeine:
+kaffeine: homepage: https://apps.kde.org/kaffeine/
diff --git a/multimedia/kdenlive/README b/multimedia/kdenlive/README
deleted file mode 100644
index 067bb89104..0000000000
--- a/multimedia/kdenlive/README
+++ /dev/null
@@ -1,18 +0,0 @@
-kdenlive (KDE Non Linear Video Editor)
-
-Kdenlive is an intuitive and powerful non-linear multi-track video
-editor which supports DV, AVCHD and HDV editing, using many of the latest
-video technologies.
-
-Currently under development and using the MLT video framework,
-Kdenlive provides dual video monitors, a multi-track timeline and clip
-list. Features include customizable layout support, basic effects and
-transitions, in-program access to online resources from Freesound,
-Archive.org, and Open Clip Art. Kdenlive also features integrated basic
-DVD authoring capability.
-
-If you do not have the KDE desktop installed, you will need at least:
-kdelibs, kdebase
-
-NOTE:
-This requires recordmydesktop from Slackware's extra directory.
diff --git a/multimedia/kdenlive/kdenlive.info b/multimedia/kdenlive/kdenlive.info
deleted file mode 100644
index f95ca6275f..0000000000
--- a/multimedia/kdenlive/kdenlive.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="kdenlive"
-VERSION="0.9.10"
-HOMEPAGE="http://www.kdenlive.org/"
-DOWNLOAD="http://download.kde.org/stable/kdenlive/0.9.10/src/kdenlive-0.9.10.tar.bz2"
-MD5SUM="40d7ee8e388cb084f5eb1ad1596a14b2"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="amrnb dvdauthor dvgrab faac faad2 gsm lame mlt schroedinger x264 xvidcore"
-MAINTAINER="Edward W. Koenig"
-EMAIL="kingbeowulf@gmail.com"
diff --git a/multimedia/kdenlive/slack-desc b/multimedia/kdenlive/slack-desc
deleted file mode 100644
index 37f69e544e..0000000000
--- a/multimedia/kdenlive/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-kdenlive: kdenlive (KDE Non Linear Video Editor)
-kdenlive:
-kdenlive: Using the MLT video framework. It is currently under development
-kdenlive: Kdenlive provides dual video monitors, a multi-track timeline and
-kdenlive: clip list. Other features include customizable layout support, basic
-kdenlive: effects and transition, direct import from online resources such as
-kdenlive: Freesound, Archive.org, and Open Clip Art. Integrated DVD authoring.
-kdenlive:
-kdenlive: http://kdenlive.sourceforge.net
-kdenlive:
-kdenlive:
diff --git a/multimedia/kodi/README b/multimedia/kodi/README
index d13c4486ee..44352744a8 100644
--- a/multimedia/kodi/README
+++ b/multimedia/kodi/README
@@ -5,24 +5,31 @@ viewing and playing a vast library of audio, video and image formats.
Kodi has a sophisticated library management system that allows you to
organize all your media to give you quick and immediate access.
-Optional dependencies: libcec, libbluray, libnfs, lirc, cwiid, pybluez,
-avahi, shairplay and openjdk
-
-Optional: libcrystalhd (not available at slackbuilds.org)
-
-Below are some paramaters that can be passed to the slackbuild to turn
-on some optional components.
-
-WII=yes|no (Default is no), requires cwiid and pybluez
-WEBSERVER=yes|no (Default is yes), requires libmicrohttpd
+Optional autodetected dependencies:
+avahi - Network discovery
+cwiid - Controller support
+dav1d - AV1 codec support
+libcec - CEC support
+libmicrohttpd - Web interface support
+libnfs - Browse NFS shares
+libudfread - Universal Disk Format (UDF) support
+lirc - Remote support
+shairplay - Airplay Support
+sndio - Alternative audio backend
+waylandpp - Early wayland support
NOTE:
-Kodi can be compiled with openjdk instead of jdk.
+Kodi can be compiled with jdk11 instead of zulu-openjdk11.
-Please remove or rename /etc/oss.conf if it exists on your system
-prior to building this package or it will fail to build.
+ADDITIONAL NOTE:
+If you are having issues with addons crashing, please ensure you're
+upgraded to at least python3-3.9.14 or later from the patches/
+directory on your favorite mirror. 3.9.12 and earlier had issues.
-Using the system ffmpeg in the Kodi slackbuild is currently not
-supported. The option to build Kodi with system ffmpeg is still
-available in the slackbuild but it won't be supported by the
-maintainer.
+FINAL NOTE:
+FFMPEG on 15.0 is too old to be used in kodi v21, so it is using an
+internal version of 6.0.1. If you have FFMPEG v6+ installed (probably
+mainly -current users), you can have kodi build against the system
+version by passing FFMPEG=external when building. System versions of
+FFMPEG may need to be recompiled to enable certain functionality like
+AV1 after installing dav1d.
diff --git a/multimedia/kodi/kodi.SlackBuild b/multimedia/kodi/kodi.SlackBuild
index 33ff6e8af9..138bd4d8c6 100644
--- a/multimedia/kodi/kodi.SlackBuild
+++ b/multimedia/kodi/kodi.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for kodi
# Copyright 2009-2018 Larry Hajali <larryhaja[at]gmail[dot]com>
+# Copyright 2022-2024 Jeremy Hansen <jebrhansen+SBo@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,13 +23,28 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=kodi
SRCNAM=xbmc
-CODNAM=Krypton
-VERSION=${VERSION:-17.6}
-FFMPEGVER=${FFMPEGVER:-3.1.11}
+CODNAM=Omega
+VERSION=${VERSION:-21.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+# Versions used below
+crossguidVER=${crossguiVER:-ca1bf4b810e2d188d04cb6286f957008ee1b7681}
+fmtVER=${fmtVER:-9.1.0}
+libdvdcssVER=${libdvdcssVER:-1.4.3-Next-Nexus-Alpha2-2}
+libdvdnavVER=${libdvdnavVER:-6.1.1-Next-Nexus-Alpha2-2}
+libdvdreadVER=${libdvdreadVER:-6.1.3-Next-Nexus-Alpha2-2}
+rapidjsonVER=${rapidjsonVER:-1.1.0}
+spdlogVER=${spdlogVER:-1.10.0}
+groovyVER=${groovyVER:-4.0.16}
+comLangVER=${comLangVER:-3.14.0}
+comTextVER=${comTextVER:-1.11.0}
+ffmpegVER=${ffmpegVER:-6.0.1}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -38,23 +54,23 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
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 -fPIC"
- LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
set -e
@@ -62,12 +78,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $SRCNAM-$VERSION-$CODNAM
+rm -rf $SRCNAM-$VERSION-$CODNAM $PRGNAM-build
tar xvf $CWD/$SRCNAM-$VERSION-$CODNAM.tar.gz
cd $SRCNAM-$VERSION-$CODNAM
-# Don't have the Makefile download ffmpeg during install.
-ln -s $CWD/FFmpeg-${FFMPEGVER}-${CODNAM}.tar.gz \
- tools/depends/target/ffmpeg/ffmpeg-${FFMPEGVER}-${CODNAM}-17.5.tar.gz
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -75,93 +88,122 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# No need to show Git: "Version" in a release build.
-sed -i '/Git:/s|.*| return GetVersionShort();|' $SRCNAM/utils/SystemInfo.cpp
-
-# Patch for Samba 4.0.
-patch -p1 < $CWD/patches/xbmc-Krypton-samba-4.0.patch
-
-# Fix static linking for Texturepacker. Thanks to Gentoo.
-# Issue: http://forum.kodi.tv/showthread.php?tid=220407
-patch -p0 < $CWD/patches/kodi-texturepacker.patch
-
-# The version of ffmpeg on SBo is too old to compile kodi.
-# Optional ffmpeg is still available but not turned on by
-# default.
-if [ "${FFMPEG:-no}" == "yes" ]; then
- OPT_DEPS="--with-ffmpeg=shared"
+# Autodetection of "optional" dependencies sucks. It does not work and
+# compilation will fail on each of these if not explicitly disabled.
+# Figured I'd implement my own autodetection instead of requiring
+# passing a bunch of annoying flags :)
+if pkg-config --exists avahi-core ; then AVAHI=ON; else AVAHI=OFF; fi
+if pkg-config --exists cwiid ; then CWIID=ON; else CWIID=OFF; fi
+if pkg-config --exists dav1d ; then DAV1D=ON; else DAV1D=OFF; fi
+if pkg-config --exists libmicrohttpd ; then WEBSERVER=ON; else WEBSERVER=OFF; fi
+if pkg-config --exists libcec ; then CEC=ON; else CEC=OFF; fi
+if pkg-config --exists libnfs ; then NFS=ON; else NFS=OFF; fi
+if pkg-config --exists lirc ; then LIRC=ON; else LIRC=OFF; fi
+if pkg-config --exists libudfread ; then UDFREAD=ON; else UDFREAD=OFF; fi
+if [ -f /usr/bin/shairplay ] ; then AIRPLAY=ON; else AIRPLAY=OFF; fi
+
+# Adding early support for wayland. Needs libraries/waylandpp from SBo.
+PLATFORM="x11 gbm"
+if pkg-config --exists wayland-client++; then PLATFORM="$PLATFORM wayland"; fi
+
+mkdir -p $TMP/$PRGNAM-build
+cd $TMP/$PRGNAM-build
+
+# 15.0's ffmpeg is not supported in Omega, you need at least ffmpeg 6.0
+# Default to using the internal version, but allow switching to external
+# for -current users or people who upgrade their stock ffmpeg.
+# Pass FFMPEG=external to enable external support.
+if [ "${FFMPEG}" == "external" ]; then
+ FFMPEG="OFF"
+ FFMPEGURL=""
else
- OPT_DEPS=""
+ FFMPEG="ON"
+ FFMPEGURL="-DFFMPEG_URL=$CWD/ffmpeg-$ffmpegVER.tar.gz"
fi
-# Build webserver. Requires libmicrohttpd.
-if [ "${WEBSERVER:-yes}" == "yes" ]; then
- OPT_DEPS="$OPT_DEPS --enable-webserver"
-else
- OPT_DEPS="$OPT_DEPS --disable-webserver"
-fi
-
-export PATH="$PATH:$PWD/tools/depends/native/JsonSchemaBuilder/bin"
-
-./bootstrap
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --disable-silent-rules \
- --enable-static=no \
- --disable-debug \
- --enable-gl \
- --enable-mid \
- --enable-alsa \
- --enable-texturepacker \
- --enable-pulse \
- $OPT_DEPS \
- --build=$ARCH-slackware-linux
-
-make VERBOSE=1
-
-# Wii controller usage. Default is no.
-if ! [ "${WII:-no}" = "no" ]; then
- make eventclients DESTDIR=$PKG WII_EXTRA_OPTS="-DCWIID_OLD"
- find $PKG/usr/lib${LIBDIRSUFFIX}/python* -iname "*\.py" -exec chmod 0644 '{}' \;
- # Create byte-compiled python files.
- python -m compileall $PKG/usr/lib${LIBDIRSUFFIX}/python*/site-packages/$PRGNAM 2>/dev/null
-fi
-
-make install DESTDIR=$PKG
-python -m compileall $PKG/usr/share/$PRGNAM/addons/service.xbmc.versioncheck
-
-install -m 0755 tools/TexturePacker/TexturePacker $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM
+# There doesn't seem to be a way to specify the url of these files
+# (eg -DGROOVY_URL didn't work for the first one). But if you place them
+# in the expected location, it won't try and download them.
+mkdir -p build/download
+cp -a $CWD/apache-groovy-binary-$groovyVER.zip \
+ $CWD/commons-lang3-$comLangVER-bin.tar.gz \
+ $CWD/commons-text-$comTextVER-bin.tar.gz \
+ build/download
+
+# Reasons for internal programs
+# (so I can remember in the future why we're using them)
+
+# Internal crossguid & rapidjson is recommended by upstream
+# Internal ffmpeg since 15.0's is too old
+# Internal fmt & spdlog to prevent issues if spdlog was built without
+# optional fmt dependency
+
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_DOCDIR=/usr/doc/$PRGNAM-$VERSION \
+ -DAPP_RENDER_SYSTEM=gl \
+ -DCORE_PLATFORM_NAME="$PLATFORM" \
+ -DENABLE_INTERNAL_CROSSGUID=ON \
+ -DENABLE_INTERNAL_RapidJSON=ON \
+ -DENABLE_INTERNAL_FMT=ON \
+ -DENABLE_INTERNAL_SPDLOG=ON \
+ -DENABLE_INTERNAL_FFMPEG=$FFMPEG \
+ -DENABLE_AIRTUNES=$AIRPLAY \
+ -DENABLE_AVAHI=$AVAHI \
+ -DENABLE_CEC=$CEC \
+ -DENABLE_DAV1D=$DAV1D \
+ -DENABLE_EVENTCLIENTS=$CWIID \
+ -DENABLE_LIRCCLIENT=$LIRC \
+ -DENABLE_MICROHTTPD=$WEBSERVER \
+ -DENABLE_NFS=$NFS \
+ -DENABLE_UDFREAD=$UDFREAD \
+ -DCROSSGUID_URL=$CWD/crossguid-$crossguidVER.tar.gz \
+ -DFMT_URL=$CWD/fmt-$fmtVER.tar.gz \
+ -Dlibdvdcss_URL=$CWD/libdvdcss-$libdvdcssVER.tar.gz \
+ -Dlibdvdnav_URL=$CWD/libdvdnav-$libdvdnavVER.tar.gz \
+ -Dlibdvdread_URL=$CWD/libdvdread-$libdvdreadVER.tar.gz \
+ -DRAPIDJSON_URL=$CWD/rapidjson-$rapidjsonVER.tar.gz \
+ -DSPDLOG_URL=$CWD/spdlog-$spdlogVER.tar.gz \
+ $FFMPEGURL \
+ -DCMAKE_BUILD_TYPE=Release ../$SRCNAM-$VERSION-$CODNAM
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-# Install manpages.
+# Install manpages
mkdir -p $PKG/usr/man/man1
-for i in $PRGNAM.bin.1 $PRGNAM.1 $PRGNAM-standalone.1; do
- install -m 0644 docs/manpages/$i $PKG/usr/man/man1/$i
+for i in $PRGNAM{,.bin,-standalone,-TexturePacker}.1; do
+ install -m 0644 $SRCNAM-$VERSION-$CODNAM/docs/manpages/$i $PKG/usr/man/man1/$i
done
-if ! [ "${WII:-no}" = "no" ]; then
- for i in $PRGNAM-ps3remote.1 $PRGNAM-send.1 $PRGNAM-wiiremote.1; do
- install -m 0644 docs/manpages/$i $PKG/usr/man/man1/$i
+# Install Event Control manpages if enabled
+if [ $CWIID == "ON" ]; then
+ for i in $PRGNAM{-ps3remote,-wiiremote,-send}.1; do
+ install -m 0644 $SRCNAM-$VERSION-$CODNAM/docs/manpages/$i $PKG/usr/man/man1/$i
done
fi
-gzip -9 $PKG/usr/man/man?/*.?
-cp -a tools/EventClients/README.txt $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-# Final clean up.
-find $PKG \( -name "Makefile*" -o -name "*cmake*" -o -name "*\.in" \) -exec rm -f '{}' \;
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+(
+ cd $SRCNAM-$VERSION-$CODNAM
+ cp -a README.md privacy-policy.txt version.txt docs/MANIFESTO.md $PKG/usr/doc/$PRGNAM-$VERSION
+ if [ $CWIID == "ON" ]; then
+ cat tools/EventClients/README.txt > $PKG/usr/doc/$PRGNAM-$VERSION/Event-Client-README.txt
+ fi
+ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+)
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/kodi/kodi.info b/multimedia/kodi/kodi.info
index 0124fc7167..8ea284404e 100644
--- a/multimedia/kodi/kodi.info
+++ b/multimedia/kodi/kodi.info
@@ -1,12 +1,32 @@
PRGNAM="kodi"
-VERSION="17.6"
+VERSION="21.0"
HOMEPAGE="https://kodi.tv/"
-DOWNLOAD="https://github.com/xbmc/xbmc/archive/17.6-Krypton/xbmc-17.6-Krypton.tar.gz \
- https://github.com/xbmc/FFmpeg/archive/3.1.11-Krypton-17.5/FFmpeg-3.1.11-Krypton.tar.gz"
-MD5SUM="a64c2fc56ddc41b9b0dded55eaabf170 \
- 6cf2d25e2a38fd274d9fb37a7bb4f953"
+DOWNLOAD="https://github.com/xbmc/xbmc/archive/21.0-Omega/xbmc-21.0-Omega.tar.gz \
+ https://github.com/xbmc/crossguid/archive/ca1bf4b/crossguid-ca1bf4b810e2d188d04cb6286f957008ee1b7681.tar.gz \
+ https://github.com/xbmc/libdvdcss/archive/refs/tags/1.4.3-Next-Nexus-Alpha2-2/libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz \
+ https://github.com/xbmc/libdvdnav/archive/refs/tags/6.1.1-Next-Nexus-Alpha2-2/libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz \
+ https://github.com/xbmc/libdvdread/archive/refs/tags/6.1.3-Next-Nexus-Alpha2-2/libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz \
+ https://github.com/fmtlib/fmt/archive/refs/tags/9.1.0/fmt-9.1.0.tar.gz \
+ https://github.com/gabime/spdlog/archive/refs/tags/v1.10.0/spdlog-1.10.0.tar.gz \
+ https://github.com/miloyip/rapidjson/archive/v1.1.0/rapidjson-1.1.0.tar.gz \
+ http://mirrors.kodi.tv/build-deps/sources/apache-groovy-binary-4.0.16.zip \
+ http://mirrors.kodi.tv/build-deps/sources/commons-lang3-3.14.0-bin.tar.gz \
+ http://mirrors.kodi.tv/build-deps/sources/commons-text-1.11.0-bin.tar.gz \
+ http://mirrors.kodi.tv/build-deps/sources/ffmpeg-6.0.1.tar.gz"
+MD5SUM="74501a89f0ea23d2908a9b983ab3d6f8 \
+ d4a8d62f3f8d6d946be75cf5bfa92687 \
+ 42dc3770ae928103e8033a18b007e79d \
+ 2349cde54d950af21fa4936371ad3349 \
+ 0d24c950abfef9dc02e231dda56912ac \
+ 21fac48cae8f3b4a5783ae06b443973a \
+ effea813cd81cfb5588806c5754e14f1 \
+ badd12c511e081fec6c89c43a7027bce \
+ bd9eb761a11372dd659da8c2cf1ae692 \
+ 88c83b3fa007ae35d4f82a2466cad423 \
+ ae1f7607159b192e12f9c8eaaaf3d927 \
+ ab9c27629c2a43689c63ff55fd7cbf67"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="jdk libass crossguid yajl tinyxml libmicrohttpd"
-MAINTAINER="Larry Hajali"
-EMAIL="larryhaja[at]gmail[dot]com"
+REQUIRES="zulu-openjdk11 libass flatbuffers tinyxml gtest fmt fstrcmp spdlog tinyxml2 libdisplay-info"
+MAINTAINER="Jeremy Hansen"
+EMAIL="jebrhansen+SBo@gmail.com"
diff --git a/multimedia/kodi/patches/kodi-texturepacker.patch b/multimedia/kodi/patches/kodi-texturepacker.patch
deleted file mode 100644
index fe3dcdcf7a..0000000000
--- a/multimedia/kodi/patches/kodi-texturepacker.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- tools/depends/native/TexturePacker/Makefile.old 2015-03-17 22:29:18.880029509 +0100
-+++ tools/depends/native/TexturePacker/Makefile 2015-03-17 22:29:41.459671679 +0100
-@@ -9,14 +9,10 @@
-
- ifeq ($(NATIVEPLATFORM),)
- PLATFORM = native
-- EXTRA_CONFIGURE = --enable-static
- else
- PLATFORM = $(NATIVEPLATFORM)
- endif
-
--ifeq ($(NATIVE_OS), linux)
-- EXTRA_CONFIGURE = --enable-static
--endif
- ifeq ($(NATIVE_OS), android)
- EXTRA_CONFIGURE = --enable-static
- endif
diff --git a/multimedia/kodi/patches/xbmc-Krypton-samba-4.0.patch b/multimedia/kodi/patches/xbmc-Krypton-samba-4.0.patch
deleted file mode 100644
index 6916ead2ce..0000000000
--- a/multimedia/kodi/patches/xbmc-Krypton-samba-4.0.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -Naur xbmc-17.1-Krypton.orig/xbmc/filesystem/SMBDirectory.cpp xbmc-17.1-Krypton/xbmc/filesystem/SMBDirectory.cpp
---- xbmc-17.1-Krypton.orig/xbmc/filesystem/SMBDirectory.cpp 2017-03-20 16:17:49.000000000 +0000
-+++ xbmc-17.1-Krypton/xbmc/filesystem/SMBDirectory.cpp 2017-03-20 23:01:52.444160749 +0000
-@@ -45,7 +45,7 @@
- #include "linux/XTimeUtils.h"
- #endif
-
--#include <libsmbclient.h>
-+#include <samba-4.0/libsmbclient.h>
-
- struct CachedDirEntry
- {
-diff -Naur xbmc-17.1-Krypton.orig/xbmc/filesystem/SMBFile.cpp xbmc-17.1-Krypton/xbmc/filesystem/SMBFile.cpp
---- xbmc-17.1-Krypton.orig/xbmc/filesystem/SMBFile.cpp 2017-03-20 16:17:49.000000000 +0000
-+++ xbmc-17.1-Krypton/xbmc/filesystem/SMBFile.cpp 2017-03-20 23:00:17.355154034 +0000
-@@ -26,7 +26,7 @@
- #include "SMBFile.h"
- #include "PasswordManager.h"
- #include "SMBDirectory.h"
--#include <libsmbclient.h>
-+#include <samba-4.0/libsmbclient.h>
- #include "filesystem/SpecialProtocol.h"
- #include "settings/AdvancedSettings.h"
- #include "settings/Settings.h"
diff --git a/multimedia/kvazaar/README b/multimedia/kvazaar/README
new file mode 100644
index 0000000000..c946e1fc21
--- /dev/null
+++ b/multimedia/kvazaar/README
@@ -0,0 +1,6 @@
+Kvazaar is an open source HEVC encoder. It is still
+under development and does not implement all the
+features of HEVC. Performance will increase as more coding
+tools are added.
+
+This is an optional dependency of FFmpeg.
diff --git a/multimedia/kvazaar/changelog b/multimedia/kvazaar/changelog
new file mode 100644
index 0000000000..0816e3f5a5
--- /dev/null
+++ b/multimedia/kvazaar/changelog
@@ -0,0 +1,18 @@
+Changelog for kvazaar SlackBuild Script
+--------------------------------------------------------------------
+
+27/08/2022:
+
+Added to slackbuilds.org
+
+15/05/2023:
+
+updated to version 2.2.0
+
+08/02/2024:
+
+updated to version 2.3.0
+
+23/04/2024:
+
+updated to version 2.3.1
diff --git a/multimedia/kvazaar/kvazaar.SlackBuild b/multimedia/kvazaar/kvazaar.SlackBuild
new file mode 100644
index 0000000000..c6e432de90
--- /dev/null
+++ b/multimedia/kvazaar/kvazaar.SlackBuild
@@ -0,0 +1,119 @@
+#!/bin/bash
+
+# Slackware build script for kvazaar
+
+# Copyright 2022-2024 Vijay Marcel
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=kvazaar
+VERSION=${VERSION:-2.3.1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-march=i586 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-march=i686 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-march=x86-64 -mtune=generic -pipe -O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+autoreconf -fiv
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --enable-shared=yes \
+ --disable-static \
+ --with-gnu-ld \
+ --build=$ARCH-slackware-linux
+
+make
+make install DESTDIR=$PKG
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+find $PKG -name perllocal.pod \
+ -o -name ".packlist" -o -name "*.bs" \
+ | xargs rm -f
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a CREDITS LICENSE LICENSE.EXT.greatest README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/kvazaar/kvazaar.info b/multimedia/kvazaar/kvazaar.info
new file mode 100644
index 0000000000..1f2a908be9
--- /dev/null
+++ b/multimedia/kvazaar/kvazaar.info
@@ -0,0 +1,10 @@
+PRGNAM="kvazaar"
+VERSION="2.3.1"
+HOMEPAGE="https://github.com/ultravideo/kvazaar"
+DOWNLOAD="https://github.com/ultravideo/kvazaar/archive/v2.3.1/kvazaar-2.3.1.tar.gz"
+MD5SUM="4ee30f43efea54bee14757f108c1da55"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/ffmpeg4/slack-desc b/multimedia/kvazaar/slack-desc
index 838032d34c..889da3154d 100644
--- a/multimedia/ffmpeg4/slack-desc
+++ b/multimedia/kvazaar/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-ffmpeg4: ffmpeg4 (Software to record, convert and stream audio and video)
-ffmpeg4:
-ffmpeg4: ffmpeg4 should be installable alongside ffmpeg 3.x without conflict.
-ffmpeg4:
-ffmpeg4: FFmpeg is a complete solution to record, convert and stream audio and
-ffmpeg4: video. It includes libavcodec, the leading audio/video codec library.
-ffmpeg4:
-ffmpeg4: Homepage: https://ffmpeg.org/
-ffmpeg4:
-ffmpeg4:
-ffmpeg4:
+kvazaar: kvazaar (Open Source HEVC Encoder)
+kvazaar:
+kvazaar: Kvazaar is an open source HEVC encoder. It is still
+kvazaar: under development and does not implement all the
+kvazaar: features of HEVC. Performance will increase as more coding
+kvazaar: tools are added.
+kvazaar:
+kvazaar: Homepage: https://github.com/ultravideo/kvazaar
+kvazaar:
+kvazaar:
+kvazaar:
diff --git a/multimedia/l-smash/README b/multimedia/l-smash/README
index 9c0a641d7a..82d053c024 100644
--- a/multimedia/l-smash/README
+++ b/multimedia/l-smash/README
@@ -1,3 +1,9 @@
-l-smash is an OpenSource simple tool for the mp4 container. It rivals
-Mp4Box from GPAC in muxing, demuxing and tagging mp4, mov, 3gp, 3g2,
-m4a and m4v files.
+l-smash (open source mp4 handler)
+
+l-smash is a set of simple open source tools for the mp4 container. It
+rivals Mp4Box from GPAC in muxing, demuxing and tagging mp4, mov, 3gp,
+3g2, m4a and m4v files.
+
+Included in the package are four executables: boxdumper, muxer,
+remuxer, and timelineeditor. There are no man pages for these, but
+each one can be run with --help to see usage information.
diff --git a/multimedia/l-smash/l-smash.SlackBuild b/multimedia/l-smash/l-smash.SlackBuild
index 0e5686e5d2..bd6629af53 100644
--- a/multimedia/l-smash/l-smash.SlackBuild
+++ b/multimedia/l-smash/l-smash.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for l-smash
@@ -22,10 +22,12 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# Now maintained by B. Watson <yalhcru@gmail.com>
+# Now maintained by B. Watson <urchlay@slackware.uk>
+# 20230708 bkw: BUILD=4, install shared lib +x.
+# 20220411 bkw: BUILD=3, put README in right place (not /install!)
+# 20210910 bkw: include our own README since there are no docs
# 20180215 bkw: update for 2.14.5
-
# 20170302 bkw: use long-format github URL
# 20160817 bkw:
@@ -34,10 +36,13 @@
# - actually use SLKCFLAGS
# - i486 => i586
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=l-smash
VERSION=${VERSION:-2.14.5}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-4}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -47,7 +52,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -75,11 +84,8 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
# -Wl,-s = strip binaries at link time.
./configure \
@@ -92,13 +98,20 @@ find -L . \
make
make install DESTDIR=$PKG
+chmod 755 $PKG/usr/lib*/*.so.*
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a LICENSE $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+# 20210910 bkw: upstream didn't bother with any docs other than --help
+# messages. Include our own README, which at least tells the user the
+# names of the binaries (hint: none of them are called l-smash!), and
+# tells him to use the --help option.
+cat $CWD/README > $PKG/usr/doc/$PRGNAM-$VERSION/README
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/l-smash/l-smash.info b/multimedia/l-smash/l-smash.info
index 1743bbac6d..c10a5715a1 100644
--- a/multimedia/l-smash/l-smash.info
+++ b/multimedia/l-smash/l-smash.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/l-smash/slack-desc b/multimedia/l-smash/slack-desc
index 96deed283e..6fbfbd1431 100644
--- a/multimedia/l-smash/slack-desc
+++ b/multimedia/l-smash/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-l-smash: l-smash (Yet another OpenSource mp4 handler)
-l-smash: l-smash is an OpenSource simple tool for the mp4 container. It rivals
-l-smash: Mp4Box from GPAC in muxing, demuxing and tagging mp4, mov, 3gp, 3g2,
-l-smash: m4a and m4v files.
-l-smash:
-l-smash:
-l-smash: https://github.com/l-smash/l-smash
+l-smash: l-smash (open source mp4 handler)
l-smash:
+l-smash: l-smash is a set of simple open source tools for the mp4 container. It
+l-smash: rivals Mp4Box from GPAC in muxing, demuxing and tagging mp4, mov, 3gp,
+l-smash: 3g2, m4a and m4v files.
l-smash:
+l-smash: Included in the package are four executables: boxdumper, muxer,
+l-smash: remuxer, and timelineeditor. There are no man pages for these, but
+l-smash: each one can be run with --help to see usage information.
l-smash:
l-smash:
diff --git a/multimedia/lightspark/README b/multimedia/lightspark/README
index 5d48aaefc4..10cddcc59b 100644
--- a/multimedia/lightspark/README
+++ b/multimedia/lightspark/README
@@ -1,11 +1,9 @@
Lightspark is an open source Flash player implementation for playing
-files in SWF format. Lightspark can run as a web browser plugin or as
-a standalone application.
+files in the SWF format. Lightspark can run as a web browser plugin or
+as a standalone application.
-Lightspark supports SWF files written on the newest version of the
-ActionScript language, ActionScript 3.0, which was introduced at the
-same time as Flash player 9.
-
-Optional Dependency
+Lightspark supports SWF files written on all versions of the
+ActionScript language.
+Optional Dependency:
gnash can optionally be used as fallback support.
diff --git a/multimedia/lightspark/lightspark.SlackBuild b/multimedia/lightspark/lightspark.SlackBuild
index 1c63d41310..a4f0e26e7c 100644
--- a/multimedia/lightspark/lightspark.SlackBuild
+++ b/multimedia/lightspark/lightspark.SlackBuild
@@ -1,8 +1,10 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for lightspark
-# Copyright 2016-2019 Hunter Sezen California, USA
+# Copyright 2016-2021 Hunter Sezen California, USA
+# All rights reserved.
+# Copyright 2024 Bloyburt
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +24,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=lightspark
-VERSION=${VERSION:-0.8.2}
+VERSION=${VERSION:-0.8.7}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +40,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -83,7 +95,10 @@ cd build
make install DESTDIR=$PKG
cd ..
-mv $PKG/etc/xdg/lightspark.conf $PKG/etc/xdg/lightspark.conf.new
+# lightspark depends on the rpath
+# -DCMAKE_SKIP_RPATH=TRUE \
+
+mv -- $PKG/etc/xdg/lightspark.conf $PKG/etc/xdg/lightspark.conf.new
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" |
grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
@@ -100,4 +115,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/lightspark/lightspark.info b/multimedia/lightspark/lightspark.info
index 97dc5b2655..802c8af91a 100644
--- a/multimedia/lightspark/lightspark.info
+++ b/multimedia/lightspark/lightspark.info
@@ -1,10 +1,10 @@
PRGNAM="lightspark"
-VERSION="0.8.2"
+VERSION="0.8.7"
HOMEPAGE="https://lightspark.github.io/"
-DOWNLOAD="https://github.com/lightspark/lightspark/archive/0.8.2/lightspark-0.8.2.tar.gz"
-MD5SUM="297f20078ca7f14b85ece994910a937b"
+DOWNLOAD="https://github.com/lightspark/lightspark/archive/0.8.7/lightspark-0.8.7.tar.gz"
+MD5SUM="80a668a9ae6b36a6e05701d2ecab8050"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg rtmpdump SDL2_mixer"
-MAINTAINER="Hunter Sezen"
-EMAIL="orbea@riseup.net"
+REQUIRES="rtmpdump"
+MAINTAINER="Bloyburt"
+EMAIL="alexpen@startmail.com"
diff --git a/multimedia/lircaile/README b/multimedia/lircaile/README
deleted file mode 100644
index 73bc00c601..0000000000
--- a/multimedia/lircaile/README
+++ /dev/null
@@ -1 +0,0 @@
-A LIRC (Linux Infrared Control) plugin for the Exaile media player.
diff --git a/multimedia/lircaile/lircaile.SlackBuild b/multimedia/lircaile/lircaile.SlackBuild
deleted file mode 100644
index d62c998866..0000000000
--- a/multimedia/lircaile/lircaile.SlackBuild
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for Pablo Santamaria
-
-# Written by Pablo Santamaria (pablosantamaria@gmail.com)
-
-PRGNAM=lircaile
-VERSION=${VERSION:-0.3.0}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM
-tar xvf $CWD/$PRGNAM.exz # Is a tar.gz ;)
-cd $PRGNAM
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-python -m compileall -q .
-python -O -m compileall -q .
-
-mkdir -p $PKG/usr/share/exaile/plugins/lircaile
-cp PLUGININFO *py* $PKG/usr/share/exaile/plugins/lircaile
-chmod 644 $PKG/usr/share/exaile/plugins/lircaile/*
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a "Example .lircrc" COPYING $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/lircaile/lircaile.info b/multimedia/lircaile/lircaile.info
deleted file mode 100644
index a47c48ab3a..0000000000
--- a/multimedia/lircaile/lircaile.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="lircaile"
-VERSION="0.3.0"
-HOMEPAGE="http://smormedia.gavagai.nl/dist/lircaile/"
-DOWNLOAD="http://smormedia.gavagai.nl/dist/lircaile/lircaile-0.3.0/lircaile.exz"
-MD5SUM="a411e2b9e52e91bc61f7d696d21937f9"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="exaile pylirc"
-MAINTAINER="Pablo Santamaria"
-EMAIL="pablosantamaria@gmail.com"
diff --git a/multimedia/lives/README b/multimedia/lives/README
index a0296a8354..c71419c5a6 100644
--- a/multimedia/lives/README
+++ b/multimedia/lives/README
@@ -20,7 +20,11 @@ performances, and as a video editor is capable of creating dazzling
clips in a huge variety of formats.
Optional dependencies:
-ffmpeg mjpegtools ladspa_sdk libunicap libdv schroedinger frei0r libavc1394
+mjpegtools ladspa_sdk libunicap libdv schroedinger libavc1394
+
+To build with opencv support, pass OPENCV=yes to the script.
+
+To disable building with pulseaudio, pass PULSE=no to the script.
This package uses POSIX filesystem capabilities to execute with
elevated privileges (required for realtime audio processing). This
diff --git a/multimedia/lives/lives.SlackBuild b/multimedia/lives/lives.SlackBuild
index 862aa7da36..f4f7d3ce94 100644
--- a/multimedia/lives/lives.SlackBuild
+++ b/multimedia/lives/lives.SlackBuild
@@ -1,9 +1,10 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for "lives".
# Copyright 2014-2015 Yanes Checcacci Balod <yanes@pobox.com>, Brazil
# Copyright 2015-2016 Marcel Saegebarth <marc@mos6581.de>
+# Copyright 2020 Lenard Spencer, Orlando,Florida, USA
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -25,11 +26,17 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230630 bkw: Modified by SlackBuilds.org, BUILD=4:
+# - move docs from /usr/share/doc to /usr/doc/$PRGNAM-$VERSION
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=lives
SRCNAM=LiVES
-VERSION=${VERSION:-3.0.2}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-3.2.0}
+BUILD=${BUILD:-4}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -39,7 +46,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -58,11 +69,17 @@ else
LIBDIRSUFFIX=""
fi
+# Check for a previous LiVES installation:
+if [ -e /usr/bin/lives ]; then
+ echo "ERROR: A previous LiVES installation is detected!"
+ echo "Please remove it before running this script."
+ exit 1
+fi
+
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
-
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$SRCNAM-$VERSION.tar.bz2
@@ -70,17 +87,14 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} + -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
-# Don't build toonz plugin (build failure when opencv is present)
-# https://sourceforge.net/p/lives/bugs/217/
-sed -i -e '/toonz/d' lives-plugins/weed-plugins/Makefile.am
-autoreconf -fi
-automake
+CV="--disable-opencv" ; [ "${OPENCV:-no}" = "yes" ] && CV=""
+PA="--disable-pulse" ; [ "${PULSE:-yes}" = "yes" ] && PA=""
-CFLAGS="$SLKCFLAGS" \
+CFLAGS="$SLKCFLAGS -I/usr/include/tirpc -Wl,-ltirpc" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
@@ -89,24 +103,26 @@ CXXFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
+ $PA \
+ $CV \
--build=$ARCH-slackware-linux
-# Parallel builds break, so we make sure MAKEFLAGS is clear:
-unset MAKEFLAGS
-make
-make install-strip DESTDIR=$PKG
+make -j1
+make -j1 install-strip DESTDIR=$PKG
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- ABOUT-NLS AUTHORS COPYING* ChangeLog FEATURES GETTING.STARTED INSTALL \
- NEWS README \
- $PKG/usr/doc/$PRGNAM-$VERSION || true
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+mv $PKG/usr/share/doc/$PRGNAM/* $PKGDOC
+rm -rf $PKG/usr/share/doc
+cp -a COPYING NEWS $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
(
cd $PKG/usr/bin && rm -f lives && ln -s lives-exe lives
)
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
@@ -120,4 +136,4 @@ if [ "${SETCAP:-yes}" = "yes" ]; then
fi
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/lives/lives.info b/multimedia/lives/lives.info
index 75cf5bdf82..027b93b218 100644
--- a/multimedia/lives/lives.info
+++ b/multimedia/lives/lives.info
@@ -1,8 +1,8 @@
PRGNAM="lives"
-VERSION="3.0.2"
+VERSION="3.2.0"
HOMEPAGE="http://lives-video.com/"
-DOWNLOAD="http://lives-video.com/releases/LiVES-3.0.2.tar.bz2"
-MD5SUM="70197ae4af2b34ee24a6a66bf1026aff"
+DOWNLOAD="http://lives-video.com/releases/LiVES-3.2.0.tar.bz2"
+MD5SUM="5d7bd0ad41d3189b62c002e518fb94c8"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="jack"
diff --git a/multimedia/lives/slack-desc b/multimedia/lives/slack-desc
index f156f9040e..00576dd9d0 100644
--- a/multimedia/lives/slack-desc
+++ b/multimedia/lives/slack-desc
@@ -11,9 +11,9 @@ lives:
lives: LiVES is a Video Editing System. It is designed to be simple to use,
lives: yet powerful. It is small in size, yet it has many advanced features.
lives:
-lives: Homepage: http://lives-video.com/
-lives:
-lives:
-lives:
+lives: LiVES is good enough to be used as a VJ tool for professional
+lives: performances, and as a video editor is capable of creating dazzling
+lives: clips in a huge variety of formats.
lives:
+lives: Homepage: http://lives.sourceforge.net/
lives:
diff --git a/multimedia/lsdvd/lsdvd.SlackBuild b/multimedia/lsdvd/lsdvd.SlackBuild
index 3da2a6687f..e72f2caa01 100644
--- a/multimedia/lsdvd/lsdvd.SlackBuild
+++ b/multimedia/lsdvd/lsdvd.SlackBuild
@@ -1,15 +1,20 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for lsdvd
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20230103 bkw: BUILD=2, remove useless INSTALL from doc dir.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=lsdvd
VERSION=${VERSION:-0.17}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -19,7 +24,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -47,11 +56,8 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -67,12 +73,13 @@ make install-strip DESTDIR=$PKG
gzip -9 $PKG/usr/man/man1/$PRGNAM.1
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp ChangeLog AUTHORS COPYING INSTALL README $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp ChangeLog AUTHORS COPYING README $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/lsdvd/lsdvd.info b/multimedia/lsdvd/lsdvd.info
index 816dc24d8e..8abfa26d91 100644
--- a/multimedia/lsdvd/lsdvd.info
+++ b/multimedia/lsdvd/lsdvd.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/lwks/README b/multimedia/lwks/README
deleted file mode 100644
index dc1dc94403..0000000000
--- a/multimedia/lwks/README
+++ /dev/null
@@ -1,39 +0,0 @@
-lightworks (professional non-linear editing system)
-
-Lightworks is a cross-platform industry-grade NLE, having been used
-for films including Pulp Fiction, Hugo, and The King's Speech. It is
-free to use, but for additional codec support and technical support,
-you can purchase a variety of licenses from http://lwks.com
-
-Using Lightworks requires registration on lwks.com. It is free, but
-you must register in order to use the application. You can register in
-advance or after you launch Lightworks.
-
-Lightworks will work with Nvidia or AMD graphic cards, but Nvidia is
-recommended. Lightworks requires proprietary Nvidia drivers.
-
-Lightworks is 64bit only.
-
-System Recommendations:
------------------------
-
-From lwks.com:
-
-- Intel i7 chipset or faster, fast AMD chipset
-- 3GB RAM or higher
-- Two high-resolution displays (1920 x1080) or above
-- PCI Express graphics card (NVIDIA or ATI) with 1GB or higher
-- Separate media and system drives (these can be internal or external
- as long as the the interface is suitably fast)
-- Compatible sound card
-- 200MB Disk space for Lightworks installation
-- (Optional) a Lightworks Console.
-- (Optional) a Lightworks keyboard.
-
-From Klaatu:
-
-I run this on two machines:
-- AMD FX-6300 / 8gb RAM / Nvidia GeForce GT 630 (proprietary drivers)
-- Intel i7 / 16gb RAM / Intel HD Mobile 4000 (laptop)
-
-Both edit HD footage without a problem. Your mileage may vary.
diff --git a/multimedia/lwks/doinst.sh b/multimedia/lwks/doinst.sh
deleted file mode 100644
index 5fb28930db..0000000000
--- a/multimedia/lwks/doinst.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
-fi
diff --git a/multimedia/lwks/lwks.SlackBuild b/multimedia/lwks/lwks.SlackBuild
deleted file mode 100644
index ced82cca3c..0000000000
--- a/multimedia/lwks/lwks.SlackBuild
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/sh
-# Slackware build script for lwks
-
-# Copyright 2015 Klaatu Wellington NZ
-# GNU All-Permissive License
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved. This file is offered as-is,
-# without any warranty.
-
-PRGNAM=lwks
-VERSION=${VERSION:-14.0.0}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-ARCH=amd64
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf data.tar.xz
-ar -p $CWD/$PRGNAM-$VERSION-$ARCH.deb data.tar.xz > lwks.tar.xz
-tar xvf $PRGNAM.tar.xz -C $TMP
-cd usr/
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-## install
-mkdir -p $PKG/usr/bin $PKG/usr/lib64 $PKG/usr/share/fonts/TTF
-cp -v $TMP/usr/bin/lightworks $PKG/usr/bin/
-cp -rv $TMP/usr/lib/* $PKG/usr/lib64/
-cp -rv $TMP/usr/share/applications $PKG/usr/share/
-cp -rv $TMP/usr/share/fonts/truetype/lw3.ttf $PKG/usr/share/fonts/TTF/
-cp -rv $TMP/usr/share/lightworks $PKG/usr/share/
-
-# patch thanks to Christoph Willing
-sed -i 's|/usr/lib/lightworks/ntcardvt|/usr/lib64/lightworks/ntcardvt|' \
- $PKG/usr/bin/lightworks
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-# editshare controller udev rules.
-# more thanks to Christoph Willing
-mkdir -p $PKG/etc/udev/rules.d
-cp -rv $TMP/lib/udev/rules.d/* $PKG/etc/udev/rules.d/
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-x86_64-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/lwks/lwks.info b/multimedia/lwks/lwks.info
deleted file mode 100644
index 3a1a0bbf29..0000000000
--- a/multimedia/lwks/lwks.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="lwks"
-VERSION="14.0.0"
-HOMEPAGE="http://lwks.com"
-DOWNLOAD="UNSUPPORTED"
-MD5SUM=""
-DOWNLOAD_x86_64="http://downloads.lwks.com/v14/lwks-14.0.0-amd64.deb"
-MD5SUM_x86_64="17a60e8c2956f65dd578a14cf673b0d4"
-REQUIRES="nvidia-cg-toolkit"
-MAINTAINER="klaatu"
-EMAIL="klaatu@member.fsf.org"
diff --git a/multimedia/lwks/slack-desc b/multimedia/lwks/slack-desc
deleted file mode 100644
index 78799e7893..0000000000
--- a/multimedia/lwks/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-lwks: lwks (professional NLE)
-lwks:
-lwks: Professional video editor used for films LA Confidential,
-lwks: Pulp Fiction, Heat, Road to Perdition, Hugo, The King's Speech,
-lwks: and many more. Features include reliable and efficient editing,
-lwks: titling, effects, basic compositing, colour correction, and much
-lwks: more.
-lwks:
-lwks: Purchase a Pro License from lwks.com for additional codec and
-lwks: technical support.
-lwks:
diff --git a/multimedia/makemkv/README.issues b/multimedia/makemkv/README.issues
index 1c287f5ad9..95a843d76a 100644
--- a/multimedia/makemkv/README.issues
+++ b/multimedia/makemkv/README.issues
@@ -31,3 +31,5 @@ Note that usually new registration keys are posted in the official
MakeMKV forums so that old time-expired MakeMKV versions will still
work during the beta (so you won't need to immediately upgrade to a
newer version).
+
+Optional dependency: ccextractor
diff --git a/multimedia/makemkv/makemkv.SlackBuild b/multimedia/makemkv/makemkv.SlackBuild
index 979c365d0a..62e131e9b1 100644
--- a/multimedia/makemkv/makemkv.SlackBuild
+++ b/multimedia/makemkv/makemkv.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for MakeMKV
# Copyright 2019 T3slider <t3slider@gmail.com>
+# Copyright 2023 Matt Dinslage <matthhewdinslage@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +23,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=makemkv
-VERSION=${VERSION:-1.14.4}
+VERSION=${VERSION:-1.17.6}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -139,4 +150,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/makemkv/makemkv.info b/multimedia/makemkv/makemkv.info
index 0cfdf756d4..4aecb49fd1 100644
--- a/multimedia/makemkv/makemkv.info
+++ b/multimedia/makemkv/makemkv.info
@@ -1,12 +1,12 @@
PRGNAM="makemkv"
-VERSION="1.14.4"
+VERSION="1.17.6"
HOMEPAGE="http://www.makemkv.com/"
-DOWNLOAD="http://www.makemkv.com/download/makemkv-oss-1.14.4.tar.gz \
- http://www.makemkv.com/download/makemkv-bin-1.14.4.tar.gz"
-MD5SUM="e738e5e2e0ff2d556f00002699253271 \
- b7ec3c40359a9b5b5adb1a48dba36f30"
+DOWNLOAD="https://www.makemkv.com/download/makemkv-oss-1.17.6.tar.gz \
+ https://www.makemkv.com/download/makemkv-bin-1.17.6.tar.gz"
+MD5SUM="081076450f7b2d81505aa0437100b76c \
+ f42b8574b2b2e2e7ace837eed6fab9f7"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg"
-MAINTAINER="T3slider"
-EMAIL="t3slider@gmail.com"
+REQUIRES=""
+MAINTAINER="M.Dinslage"
+EMAIL="matthewdinslage@gmail.com"
diff --git a/multimedia/mediainfo/README b/multimedia/mediainfo/README
index e92ee86ae6..34238807ad 100644
--- a/multimedia/mediainfo/README
+++ b/multimedia/mediainfo/README
@@ -1,9 +1,9 @@
MediaInfo supplies technical and tag information about a video or
audio file.
-It will build the CLI version by default, however, you can optionally
-build mediainfo-gui by passing GUI=yes to the SlackBuild script, or
-you can disable the CLI version by passing CLI=no. Either the CLI
-or GUI verison must be enabled.
+The CLI version is built by default and the GUI version will be built
+automatically if wxGTK3 is installed. Either can be manually disabled
+by passing GUI=no or CLI=no to the SlackBuild script, but at least one
+must be enabled to build the program.
-GUI=yes requires wxPython.
+wxGTK3 is an optional, autodetected dependency required for the GUI.
diff --git a/multimedia/mediainfo/mediainfo.SlackBuild b/multimedia/mediainfo/mediainfo.SlackBuild
index f196f7aa7d..e414e49f83 100644
--- a/multimedia/mediainfo/mediainfo.SlackBuild
+++ b/multimedia/mediainfo/mediainfo.SlackBuild
@@ -1,10 +1,10 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mediainfo
# Copyright 2010-2012 Binh Nguyen <binhvng@gmail.com>
# Copyright 2012-2017 Ryan P.C. McQuen | Everett, WA | ryanpcmcquen@member.fsf.org
-# Copyright 2017-2019 Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
+# Copyright 2017-2024 Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,15 +24,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mediainfo
-VERSION=${VERSION:-19.09}
+VERSION=${VERSION:-24.04}
SRCNAM=MediaInfo
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
-# CLI is built by default, GUI is optional
+# CLI is built by default, GUI is autodetected
+# Either can be disabled by passing the variable with "no"
CLI=${CLI:-yes}
-GUI=${GUI:-no}
+if [ -e /usr/bin/wx-config ]; then GUI=${GUI:-yes}; else GUI=${GUI:-no}; fi
# Clear the document variables to make sure it works
CLIDOC=""
@@ -54,7 +58,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -171,4 +179,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mediainfo/mediainfo.info b/multimedia/mediainfo/mediainfo.info
index c0b4bb3ad7..cb639f0002 100644
--- a/multimedia/mediainfo/mediainfo.info
+++ b/multimedia/mediainfo/mediainfo.info
@@ -1,8 +1,8 @@
PRGNAM="mediainfo"
-VERSION="19.09"
+VERSION="24.04"
HOMEPAGE="https://mediaarea.net/MediaInfo/"
-DOWNLOAD="https://github.com/MediaArea/MediaInfo/archive/v19.09/MediaInfo-19.09.tar.gz"
-MD5SUM="b15f687a32f40bf383b8a8466ac2205c"
+DOWNLOAD="https://github.com/MediaArea/MediaInfo/archive/v24.04/MediaInfo-24.04.tar.gz"
+MD5SUM="2a33bd893c819bb7050154e0c4f9ca6a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="libmediainfo"
diff --git a/multimedia/mediainfo/remove-internal-libzen-support.patch b/multimedia/mediainfo/remove-internal-libzen-support.patch
index e4e827f4b2..37c2afc0f1 100644
--- a/multimedia/mediainfo/remove-internal-libzen-support.patch
+++ b/multimedia/mediainfo/remove-internal-libzen-support.patch
@@ -1,8 +1,8 @@
diff --git a/Project/GNU/CLI/configure.ac b/Project/GNU/CLI/configure.ac
-index 275c349..1ddeec0 100644
+index 062688e..6b0d3dd 100644
--- a/Project/GNU/CLI/configure.ac
+++ b/Project/GNU/CLI/configure.ac
-@@ -65,16 +65,10 @@ dnl #########################################################################
+@@ -66,16 +66,10 @@ dnl #########################################################################
dnl -------------------------------------------------------------------------
dnl Unicode
dnl
@@ -13,8 +13,8 @@ index 275c349..1ddeec0 100644
+if pkg-config --exists libzen; then
+ enable_unicode="$(pkg-config --variable=Unicode libzen)"
else
-- if pkg-config --exists libzen; then
-- enable_unicode="$(pkg-config --variable=Unicode libzen)"
+- if ${PKG_CONFIG:-pkg-config} --exists libzen; then
+- enable_unicode="$(${PKG_CONFIG:-pkg-config} --variable=Unicode libzen)"
- else
- AC_MSG_ERROR([libzen configuration is not found])
- fi
@@ -22,7 +22,7 @@ index 275c349..1ddeec0 100644
fi
dnl #########################################################################
-@@ -198,41 +192,19 @@ fi
+@@ -199,41 +193,18 @@ fi
dnl -------------------------------------------------------------------------
dnl ZenLib
dnl
@@ -39,7 +39,6 @@ index 275c349..1ddeec0 100644
-elif test "$(libzen-config Exists)" = "yes" ; then
- CXXFLAGS="$CXXFLAGS $(libzen-config CXXFLAGS)"
- MediaInfoLib_CXXFLAGS="$MediaInfoLib_CXXFLAGS $(libzen-config CXXFLAGS)"
-+
+if pkg-config --exists libzen; then
+ CXXFLAGS="$CXXFLAGS $(pkg-config --cflags libzen)"
+ MediaInfoLib_CXXFLAGS="$MediaInfoLib_CXXFLAGS $(pkg-config --cflags libzen)"
@@ -53,16 +52,16 @@ index 275c349..1ddeec0 100644
+ LIBS="$LIBS $(pkg-config --libs libzen)"
fi
else
-- if pkg-config --exists libzen; then
-- CXXFLAGS="$CXXFLAGS $(pkg-config --cflags libzen)"
-- MediaInfoLib_CXXFLAGS="$MediaInfoLib_CXXFLAGS $(pkg-config --cflags libzen)"
+- if ${PKG_CONFIG:-pkg-config} --exists libzen; then
+- CXXFLAGS="$CXXFLAGS $(${PKG_CONFIG:-pkg-config} --cflags libzen)"
+- MediaInfoLib_CXXFLAGS="$MediaInfoLib_CXXFLAGS $(${PKG_CONFIG:-pkg-config} --cflags libzen)"
- if test "$enable_staticlibs" = "yes"; then
- with_zenlib="system (static)"
-- LIBS="$LIBS $(pkg-config --variable=Libs_Static libzen)"
-- LIBS="$LIBS $(pkg-config --static --libs libzen)"
+- LIBS="$LIBS $(${PKG_CONFIG:-pkg-config} --variable=Libs_Static libzen)"
+- LIBS="$LIBS $(${PKG_CONFIG:-pkg-config} --static --libs libzen)"
- else
- with_zenlib="system"
-- LIBS="$LIBS $(pkg-config --libs libzen)"
+- LIBS="$LIBS $(${PKG_CONFIG:-pkg-config} --libs libzen)"
- fi
- else
- AC_MSG_ERROR([libzen configuration is not found])
@@ -71,11 +70,18 @@ index 275c349..1ddeec0 100644
fi
dnl #########################################################################
+@@ -317,4 +288,4 @@ echo " Using libzen? $with_zenlib"
+ echo " Using libmediainfo? $with_mediainfolib"
+ echo ""
+ echo " CXXFLAGS: $CXXFLAGS"
+-echo " LIBS: $LIBS"
+\ No newline at end of file
++echo " LIBS: $LIBS"
diff --git a/Project/GNU/GUI/configure.ac b/Project/GNU/GUI/configure.ac
-index 78bdeff..ea9203d 100644
+index eaf7ebb..62833ca 100644
--- a/Project/GNU/GUI/configure.ac
+++ b/Project/GNU/GUI/configure.ac
-@@ -79,14 +79,10 @@ dnl #########################################################################
+@@ -80,14 +80,10 @@ dnl #########################################################################
dnl -------------------------------------------------------------------------
dnl Unicode
dnl
@@ -93,7 +99,7 @@ index 78bdeff..ea9203d 100644
fi
dnl #########################################################################
-@@ -313,31 +309,19 @@ fi
+@@ -314,31 +310,19 @@ fi
dnl -------------------------------------------------------------------------
dnl ZenLib
dnl
diff --git a/multimedia/mediatomb/README b/multimedia/mediatomb/README
deleted file mode 100644
index 8faecd79d0..0000000000
--- a/multimedia/mediatomb/README
+++ /dev/null
@@ -1,7 +0,0 @@
-MediaTomb is an open source (GPL) UPnP MediaServer with a nice
-web user interface, it allows you to stream your digital media
-through your home network and listen to/watch it on a variety
-of UPnP compatible devices.
-
-mediatomb optionally depends on ffmpeg, libmp4v2, lastfmlib,
-and ffmpegthumbnailer.
diff --git a/multimedia/mediatomb/config.xml b/multimedia/mediatomb/config.xml
deleted file mode 100644
index 71f37bb039..0000000000
--- a/multimedia/mediatomb/config.xml
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<config version="2" xmlns="http://mediatomb.cc/config/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/2 http://mediatomb.cc/config/2.xsd">
- <server>
- <ui enabled="yes" show-tooltips="yes">
- <accounts enabled="no" session-timeout="30">
- <account user="mediatomb" password="mediatomb"/>
- </accounts>
- </ui>
- <name>MediaTomb</name>
- <udn></udn>
- <home>/var/lib/mediatomb</home>
- <webroot>/usr/share/mediatomb/web</webroot>
- <storage>
- <sqlite3 enabled="yes">
- <database-file>mediatomb.db</database-file>
- </sqlite3>
- <mysql enabled="no">
- <host>localhost</host>
- <username>mediatomb</username>
- <database>mediatomb</database>
- </mysql>
- </storage>
- <protocolInfo extend="no"/><!-- For PS3 support change to "yes" -->
- <!--
- Uncomment the lines below to get rid of jerky avi playback on the
- DSM320 or to enable subtitles support on the DSM units
- -->
- <!--
- <custom-http-headers>
- <add header="X-User-Agent: redsonic"/>
- </custom-http-headers>
-
- <manufacturerURL>redsonic.com</manufacturerURL>
- <modelNumber>105</modelNumber>
- -->
- <!-- Uncomment the line below if you have a Telegent TG100 -->
- <!--
- <upnp-string-limit>101</upnp-string-limit>
- -->
- <extended-runtime-options>
- <ffmpegthumbnailer enabled="no">
- <thumbnail-size>128</thumbnail-size>
- <seek-percentage>5</seek-percentage>
- <filmstrip-overlay>yes</filmstrip-overlay>
- <workaround-bugs>no</workaround-bugs>
- <image-quality>8</image-quality>
- </ffmpegthumbnailer>
- <mark-played-items enabled="no" suppress-cds-updates="yes">
- <string mode="prepend">*</string>
- <mark>
- <content>video</content>
- </mark>
- </mark-played-items>
- <lastfm enabled="no">
- <username>lastfmuser</username>
- <password>lastfmpass</password>
- </lastfm>
- </extended-runtime-options>
- </server>
- <import hidden-files="no">
- <scripting script-charset="UTF-8">
- <common-script>/usr/share/mediatomb/js/common.js</common-script>
- <playlist-script>/usr/share/mediatomb/js/playlists.js</playlist-script>
- <virtual-layout type="builtin">
- <import-script>/usr/share/mediatomb/js/import.js</import-script>
- </virtual-layout>
- </scripting>
- <mappings>
- <extension-mimetype ignore-unknown="no">
- <map from="mp3" to="audio/mpeg"/>
- <map from="ogx" to="application/ogg"/>
- <map from="ogv" to="video/ogg"/>
- <map from="oga" to="audio/ogg"/>
- <map from="ogg" to="audio/ogg"/>
- <map from="ogm" to="video/ogg"/>
- <map from="asf" to="video/x-ms-asf"/>
- <map from="asx" to="video/x-ms-asf"/>
- <map from="wma" to="audio/x-ms-wma"/>
- <map from="wax" to="audio/x-ms-wax"/>
- <map from="wmv" to="video/x-ms-wmv"/>
- <map from="wvx" to="video/x-ms-wvx"/>
- <map from="wm" to="video/x-ms-wm"/>
- <map from="wmx" to="video/x-ms-wmx"/>
- <map from="m3u" to="audio/x-mpegurl"/>
- <map from="pls" to="audio/x-scpls"/>
- <map from="flv" to="video/x-flv"/>
- <map from="mkv" to="video/x-matroska"/>
- <map from="mka" to="audio/x-matroska"/>
- <!-- Uncomment the line below for PS3 divx support -->
- <!-- <map from="avi" to="video/divx"/> -->
- <!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 -->
- <!-- <map from="avi" to="video/avi"/> -->
- </extension-mimetype>
- <mimetype-upnpclass>
- <map from="audio/*" to="object.item.audioItem.musicTrack"/>
- <map from="video/*" to="object.item.videoItem"/>
- <map from="image/*" to="object.item.imageItem"/>
- </mimetype-upnpclass>
- <mimetype-contenttype>
- <treat mimetype="audio/mpeg" as="mp3"/>
- <treat mimetype="application/ogg" as="ogg"/>
- <treat mimetype="audio/x-flac" as="flac"/>
- <treat mimetype="image/jpeg" as="jpg"/>
- <treat mimetype="audio/x-mpegurl" as="playlist"/>
- <treat mimetype="audio/x-scpls" as="playlist"/>
- <treat mimetype="audio/x-wav" as="pcm"/>
- <treat mimetype="audio/L16" as="pcm"/>
- <treat mimetype="video/x-msvideo" as="avi"/>
- <treat mimetype="video/mp4" as="mp4"/>
- <treat mimetype="audio/mp4" as="mp4"/>
- <treat mimetype="application/x-iso9660" as="dvd"/>
- <treat mimetype="application/x-iso9660-image" as="dvd"/>
- </mimetype-contenttype>
- </mappings>
- <online-content>
- <YouTube enabled="no" refresh="28800" update-at-start="no" purge-after="604800" racy-content="exclude" format="mp4" hd="no">
- <favorites user="mediatomb"/>
- <standardfeed feed="most_viewed" time-range="today"/>
- <playlists user="mediatomb"/>
- <uploads user="mediatomb"/>
- <standardfeed feed="recently_featured" time-range="today"/>
- </YouTube>
- </online-content>
- </import>
- <transcoding enabled="no">
- <mimetype-profile-mappings>
- <transcode mimetype="video/x-flv" using="vlcmpeg"/>
- <transcode mimetype="application/ogg" using="vlcmpeg"/>
- <transcode mimetype="application/ogg" using="oggflac2raw"/>
- <transcode mimetype="audio/x-flac" using="oggflac2raw"/>
- </mimetype-profile-mappings>
- <profiles>
- <profile name="oggflac2raw" enabled="no" type="external">
- <mimetype>audio/L16</mimetype>
- <accept-url>no</accept-url>
- <first-resource>yes</first-resource>
- <accept-ogg-theora>no</accept-ogg-theora>
- <agent command="ogg123" arguments="-d raw -o byteorder:big -f %out %in"/>
- <buffer size="1048576" chunk-size="131072" fill-size="262144"/>
- </profile>
- <profile name="vlcmpeg" enabled="no" type="external">
- <mimetype>video/mpeg</mimetype>
- <accept-url>yes</accept-url>
- <first-resource>yes</first-resource>
- <accept-ogg-theora>yes</accept-ogg-theora>
- <agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/>
- <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
- </profile>
- </profiles>
- </transcoding>
-</config>
diff --git a/multimedia/mediatomb/mediatomb-0.12.1-libmp4v2_191_p479.patch b/multimedia/mediatomb/mediatomb-0.12.1-libmp4v2_191_p479.patch
deleted file mode 100644
index 6a6b51e1e0..0000000000
--- a/multimedia/mediatomb/mediatomb-0.12.1-libmp4v2_191_p479.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-diff -urN old/src/metadata/libmp4v2_handler.cc new/src/metadata/libmp4v2_handler.cc
---- old/src/metadata/libmp4v2_handler.cc 2012-04-05 01:46:26.000000000 +0200
-+++ new/src/metadata/libmp4v2_handler.cc 2012-04-05 02:01:24.000000000 +0200
-@@ -65,29 +65,28 @@
- static void addMetaField(metadata_fields_t field, MP4FileHandle mp4, Ref<CdsItem> item)
- {
- String value;
-- char* mp4_retval = NULL;
-- u_int16_t track;
-- u_int16_t total_tracks;
--
- Ref<StringConverter> sc = StringConverter::i2i();
-
-+ const MP4Tags* new_tags = MP4TagsAlloc();
-+
-+ if (!MP4TagsFetch(new_tags, mp4))
-+ return;
-+
- switch (field)
- {
- case M_TITLE:
-- MP4GetMetadataName(mp4, &mp4_retval);
-+ value = new_tags->name;
- break;
- case M_ARTIST:
-- MP4GetMetadataArtist(mp4, &mp4_retval);
-+ value = new_tags->artist;
- break;
- case M_ALBUM:
-- MP4GetMetadataAlbum(mp4, &mp4_retval);
-+ value = new_tags->album;
- break;
- case M_DATE:
-- MP4GetMetadataYear(mp4, &mp4_retval);
-- if (mp4_retval)
-+ value = new_tags->releaseDate;
-+ if (value.length() > 0)
- {
-- value = mp4_retval;
-- free(mp4_retval);
- if (string_ok(value))
- value = value + "-01-01";
- else
-@@ -95,34 +94,31 @@
- }
- break;
- case M_GENRE:
-- MP4GetMetadataGenre(mp4, &mp4_retval);
-+ value = new_tags->genre;
- break;
- case M_DESCRIPTION:
-- MP4GetMetadataComment(mp4, &mp4_retval);
-+ value = new_tags->comments;
- break;
- case M_TRACKNUMBER:
-- MP4GetMetadataTrack(mp4, &track, &total_tracks);
-- if (track > 0)
-+ if (new_tags->track)
- {
-- value = String::from(track);
-- item->setTrackNumber((int)track);
-+ value = String::from(new_tags->track->index);
-+ item->setTrackNumber((int)new_tags->track->index);
- }
- else
-+ {
-+ MP4TagsFree( new_tags );
- return;
-+ }
- break;
- default:
-+ MP4TagsFree( new_tags );
- return;
- }
-
-- if ((field != M_DATE) && (field != M_TRACKNUMBER) &&
-- (mp4_retval))
-- {
-- value = mp4_retval;
-- free(mp4_retval);
-- }
--
-+ MP4TagsFree( new_tags );
- value = trim_string(value);
--
-+
- if (string_ok(value))
- {
- item->setMetadata(MT_KEYS[field].upnp, sc->convert(value));
-@@ -190,14 +186,19 @@
- }
-
- #if defined(HAVE_MAGIC)
-- u_int8_t *art_data;
-- u_int32_t art_data_len;
-+ void *art_data = 0;
-+ u_int32_t art_data_len = 0;
- String art_mimetype;
-+
-+ const MP4Tags* new_tags = MP4TagsAlloc();
-+ MP4TagsFetch(new_tags, mp4);
-+ if (new_tags->artworkCount)
-+ {
-+ art_data = new_tags->artwork->data;
-+ art_data_len = new_tags->artwork->size;
-+ }
- #ifdef HAVE_MP4_GET_METADATA_COVER_ART_COUNT
-- if (MP4GetMetadataCoverArtCount(mp4) &&
-- MP4GetMetadataCoverArt(mp4, &art_data, &art_data_len))
--#else
-- MP4GetMetadataCoverArt(mp4, &art_data, &art_data_len);
-+ if (new_tags->artworkCount && art_data_len > 0)
- #endif
- {
- if (art_data)
-@@ -211,11 +212,10 @@
- }
- catch (Exception ex)
- {
-- free(art_data);
-+ MP4TagsFree(new_tags);
- throw ex;
- }
-
-- free(art_data);
- if (art_mimetype != _(MIMETYPE_DEFAULT))
- {
- Ref<CdsResource> resource(new CdsResource(CH_MP4));
-@@ -225,6 +225,7 @@
- }
- }
- }
-+ MP4TagsFree(new_tags);
- #endif
- MP4Close(mp4);
- }
-@@ -249,26 +250,35 @@
-
- if (ctype != ID3_ALBUM_ART)
- throw _Exception(_("LibMP4V2Handler: got unknown content type: ") + ctype);
-+
-+ const MP4Tags* new_tags = MP4TagsAlloc();
-+ if (MP4TagsFetch(new_tags, mp4))
-+ {
- #ifdef HAVE_MP4_GET_METADATA_COVER_ART_COUNT
-- if (!MP4GetMetadataCoverArtCount(mp4))
-- throw _Exception(_("LibMP4V2Handler: resource has no album art information"));
-+ if (!new_tags->artworkCount)
-+ throw _Exception(_("LibMP4V2Handler: resource has no album art information"));
- #endif
-- u_int8_t *art_data;
-- u_int32_t art_data_len;
-- if (MP4GetMetadataCoverArt(mp4, &art_data, &art_data_len))
-- {
-- if (art_data)
-+ void *art_data = 0;
-+ u_int32_t art_data_len;
-+
-+ const MP4TagArtwork* art = new_tags->artwork;
-+ art_data = art->data;
-+ art_data_len = art->size;
-+ if (art)
- {
-- *data_size = (off_t)art_data_len;
-- Ref<IOHandler> h(new MemIOHandler((void *)art_data, art_data_len));
-- free(art_data);
-- return h;
-+ if (art_data)
-+ {
-+ *data_size = (off_t)art_data_len;
-+ Ref<IOHandler> h(new MemIOHandler(art_data, art_data_len));
-+ MP4TagsFree(new_tags);
-+ return h;
-+ }
- }
-+ MP4TagsFree(new_tags);
- }
--
- throw _Exception(_("LibMP4V2Handler: could not serve album art "
-- "for file") + item->getLocation() +
-- " - embedded image not found");
-+ "for file") + item->getLocation() +
-+ " - embedded image not found");
- }
-
- #endif // HAVE_LIBMP4V2
-De binära filerna old/src/metadata/.libmp4v2_handler.cc.swp och new/src/metadata/.libmp4v2_handler.cc.swp skiljer
diff --git a/multimedia/mediatomb/mediatomb-mp4v2-check.patch b/multimedia/mediatomb/mediatomb-mp4v2-check.patch
deleted file mode 100644
index 226a22a631..0000000000
--- a/multimedia/mediatomb/mediatomb-mp4v2-check.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-commit bed8f03202336fc7863ec6a39e130473f59061c6
-Author: Sergey 'Jin' Bostandzhyan <jin at mediatomb dot cc>
-Date: Sun Jan 27 23:08:04 2013 +0100
-
- Extra configure check for libmp4v2 compatibility
-
- We do not support the newer libmpv2 version yet, so don't error out when
- compiling, catch it in configure.
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index f4962c6..3cc5ec3 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -533,7 +533,8 @@ AC_DEFUN([MT_CHECK_OPTIONAL_PACKAGE],
- AC_MSG_ERROR([unable to configure $1 support])
- fi
-
-- if test "x$mt_[]translit($1, `/.-', `___')_status" = xyes; then
-+ if ((test "x$mt_[]translit($1, `/.-', `___')_status" = xyes) &&
-+ (test "x$9" != "xundef")); then
- AC_DEFINE(translit(HAVE_$1, `a-z/.-', `A-Z___'), [1], [$1 library presence])
- fi
-
-diff --git a/configure.ac b/configure.ac
-index e72dd78..9241797 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1390,7 +1390,7 @@ LIBMP4V2_STATUS=
-
- MT_CHECK_OPTIONAL_PACKAGE([libmp4v2], [disable],
- [libmp4v2 support for mp4 metadata extraction],
-- [$MP4_HEADER], [mp4v2], [MP4Read])
-+ [$MP4_HEADER], [mp4v2], [MP4Read], [], [], [undef])
-
- if test "x$LIBMP4V2_STATUS" = xyes; then
- CFLAGS="$CFLAGS $LIBMP4V2_CFLAGS"
-@@ -1399,6 +1399,37 @@ if test "x$LIBMP4V2_STATUS" = xyes; then
- AC_DEFINE_UNQUOTED([LIBMP4V2_INCLUDE], [<$MP4_HEADER.h>], [$MP4_HEADER.h])
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
-+ AC_MSG_CHECKING([for libmp4v2 compatibility])
-+ AC_COMPILE_IFELSE(
-+ [AC_LANG_PROGRAM(
-+ [
-+ #include <$MP4_HEADER.h>
-+ ],
-+ [
-+ (void)MP4GetMetadataName(0, 0);
-+ ]
-+ )],
-+ [
-+ AC_MSG_RESULT([yes])
-+ AC_DEFINE([HAVE_LIBMP4V2], [1], [libmp4v2 library presence])
-+ ],
-+ [
-+ AC_MSG_RESULT([not compatible])
-+ if test "x$LIBMP4V2_OPTION_REQUESTED" = "xyes"; then
-+ AC_MSG_ERROR([Unable to configure libmp4v2 support])
-+ else
-+ LIBMP4V2_STATUS="not compatible"
-+ fi
-+ ])
-+ LDFLAGS="$LDFLAGS_SAVE"
-+ CFLAGS="$CFLAGS_SAVE"
-+ CXXFLAGS="$CXXFLAGS_SAVE"
-+fi
-+
-+if test "x$LIBMP4V2_STATUS" = "xyes"; then
-+ CFLAGS="$CFLAGS $LIBMP4V2_CFLAGS"
-+ CXXFLAGS="$CXXFLAGS $LIBMP4V2_CFLAGS"
-+ LDFLAGS="$LDFLAGS $LIBMP4V2_LDFLAGS $LIBMP4V2_LIBS"
- AC_MSG_CHECKING([for MP4GetMetadataCoverArtCount() in libmp4v2])
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
-@@ -1437,7 +1468,10 @@ if test "x$LIBMP4V2_STATUS" = xyes; then
- AC_MSG_RESULT([no])
- ])
-
-- AC_LANG_RESTORE
-+ AC_LANG_RESTORE
-+ LDFLAGS="$LDFLAGS_SAVE"
-+ CFLAGS="$CFLAGS_SAVE"
-+ CXXFLAGS="$CXXFLAGS_SAVE"
- fi
-
- ########## INOTIFY TOOLS
diff --git a/multimedia/mediatomb/mediatomb.SlackBuild b/multimedia/mediatomb/mediatomb.SlackBuild
deleted file mode 100644
index c72b45de0c..0000000000
--- a/multimedia/mediatomb/mediatomb.SlackBuild
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for mediatomb
-
-# Copyright 2010-2016 Heinz Wiesinger, Amsterdam, The Netherlands
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
-
-PRGNAM=mediatomb
-VERSION=${VERSION:-b66dc1f}
-BUILD=${BUILD:-2}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-if ! grep ^mediatomb: /etc/group 2>&1 > /dev/null; then
- echo " Must have a mediatomb group to run this script."
- echo " # groupadd -g 241 mediatomb"
- echo " Or something similar."
- exit 1
-elif ! grep ^mediatomb: /etc/passwd 2>&1 > /dev/null; then
- echo " Must have a mediatomb user to run this script."
- echo " # useradd -u 241 -g mediatomb -d /var/lib/mediatomb mediatomb"
- echo " Or something similar."
- exit 1
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-# Fix building with new libmp4v2
-patch -p1 -R -i $CWD/mediatomb-mp4v2-check.patch
-patch -p1 -i $CWD/mediatomb-0.12.1-libmp4v2_191_p479.patch
-
-# Fix support for Samsung TVs
-patch -p1 -i $CWD/samsung-mkv.patch
-
-autoreconf -vif
-
-# We need LDFLAGS="-ldl" for proper sqlite detection
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-LDFLAGS="-ldl" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --build=$ARCH-slackware-linux
-
-make
-make install-strip DESTDIR=$PKG
-
-mkdir -p $PKG/etc/rc.d
-cp $CWD/rc.mediatomb $PKG/etc/rc.d/rc.mediatomb.new
-cp $CWD/rc.mediatomb.conf $PKG/etc/rc.d/rc.mediatomb.conf.new
-
-mkdir -p $PKG/etc/mediatomb
-install -m 644 $CWD/config.xml $PKG/etc/mediatomb/config.xml.new
-chown -R mediatomb:mediatomb $PKG/etc/mediatomb
-
-mkdir -p $PKG/var/{lib,log}/mediatomb
-chown mediatomb:mediatomb $PKG/var/{lib,log}/mediatomb
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS ChangeLog COPYING INSTALL NEWS README TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/mediatomb/mediatomb.info b/multimedia/mediatomb/mediatomb.info
deleted file mode 100644
index e78081786a..0000000000
--- a/multimedia/mediatomb/mediatomb.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="mediatomb"
-VERSION="b66dc1f"
-HOMEPAGE="http://mediatomb.cc/"
-DOWNLOAD="http://www.liwjatan.at/files/src/mediatomb/mediatomb-b66dc1f.tar.xz"
-MD5SUM="7f4eb80f9e708564e6b8db45ee63f002"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Heinz Wiesinger"
-EMAIL="pprkut@liwjatan.at"
diff --git a/multimedia/mediatomb/rc.mediatomb b/multimedia/mediatomb/rc.mediatomb
deleted file mode 100644
index 206fb70741..0000000000
--- a/multimedia/mediatomb/rc.mediatomb
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/sh
-# Start/stop/restart mediatomb.
-# $Id: rc.mediatomb,v 1.0 2010/11/01
-# Authors: Heinz Wiesinger <pprkut@liwjatan.at>
-# ---------------------------------------------------------------------------
-
-MEDIATOMB_PIDDIR="/var/run/mediatomb/"
-MEDIATOMB_PIDFILE="/var/run/mediatomb/mediatomb.pid"
-MEDIATOMB_LOGFILE="/var/log/mediatomb/mediatomb.log"
-
-# Get additional configuration information from /etc/rc.d/rc.mediatomb.conf:
-. /etc/rc.d/rc.mediatomb.conf
-
-mediatomb_start()
-{
- echo -n "Starting mediatomb ... "
- if ! [ -e "${MEDIATOMB_PIDDIR}" ]; then
- mkdir -p "${MEDIATOMB_PIDDIR}"
- fi
- if [ -e "${MEDIATOMB_PIDFILE}" ]; then
- echo "already running!"
- else
- if [ "${MEDIATOMB_INTERFACE}" != "" ]; then
- MEDIATOMB_OPTIONS="$MEDIATOMB_OPTIONS --interface ${MEDIATOMB_INTERFACE}"
- fi
- if [ "${MEDIATOMB_PORT}" != "" ]; then
- MEDIATOMB_OPTIONS="$MEDIATOMB_OPTIONS --port ${MEDIATOMB_PORT}"
- fi
- /usr/bin/mediatomb \
- --daemon \
- --user ${MEDIATOMB_USER} \
- --group ${MEDIATOMB_GROUP} \
- --pidfile ${MEDIATOMB_PIDFILE} \
- --logfile ${MEDIATOMB_LOGFILE} \
- --config ${MEDIATOMB_CONFIG} \
- ${MEDIATOMB_OPTIONS}
- echo "done!"
- fi
-}
-
-mediatomb_stop()
-{
- echo -n "Stopping mediatomb ... "
- if [ -e "${MEDIATOMB_PIDFILE}" ]; then
- kill -TERM $(cat ${MEDIATOMB_PIDFILE}) > /dev/null 2>&1
- echo "done!"
- rm -f "${MEDIATOMB_PIDFILE}"
- else
- echo "not running!"
- fi
-}
-
-mediatomb_restart()
-{
- mediatomb_stop
- sleep 1
- mediatomb_start
-}
-
-mediatomb_status()
-{
- if [ -e "${MEDIATOMB_PIDFILE}" ]; then
- echo "mediatomb is running!"
- else
- echo "mediatomb is not running!"
- fi
-}
-
-case "$1" in
-'start')
- mediatomb_start
- ;;
-'stop')
- mediatomb_stop
- ;;
-'status')
- mediatomb_status
- ;;
-'restart')
- mediatomb_restart
- ;;
-*)
- echo "usage $0 start|stop|restart|status"
-esac
diff --git a/multimedia/mediatomb/rc.mediatomb.conf b/multimedia/mediatomb/rc.mediatomb.conf
deleted file mode 100644
index af5ea4feef..0000000000
--- a/multimedia/mediatomb/rc.mediatomb.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-# /etc/rc.d/rc.mediatomb.conf
-#
-# This file contains the configuration settings for mediatomb.
-
-# Main configuration file that should be used for mediatomb
-MEDIATOMB_CONFIG="/etc/mediatomb/config.xml"
-
-# The user under which mediatomb should run
-MEDIATOMB_USER="mediatomb"
-
-# The group under which mediatomb should run
-MEDIATOMB_GROUP="mediatomb"
-
-# Network Interface to bind to
-MEDIATOMB_INTERFACE=""
-
-# Server port (the SDK only permits values >= 49152)
-MEDIATOMB_PORT=""
-
-# Additional mediatomb options
-MEDIATOMB_OPTIONS=""
diff --git a/multimedia/mediatomb/samsung-mkv.patch b/multimedia/mediatomb/samsung-mkv.patch
deleted file mode 100644
index 6b146d7b0f..0000000000
--- a/multimedia/mediatomb/samsung-mkv.patch
+++ /dev/null
@@ -1,445 +0,0 @@
-Workaround for Samsung Smart TV 2012 :
- - URI patch made by swiergot http://sourceforge.net/tracker/index.php?func=detail&aid=3532724&group_id=129766&atid=715782
- - per device content-type engine : change video/x-matroska with video/x-mkv for Samsung devices only
-
---- a/tombupnp/upnp/src/genlib/miniserver/miniserver.c
-+++ b/tombupnp/upnp/src/genlib/miniserver/miniserver.c
-@@ -842,6 +842,8 @@
- return UPNP_E_INTERNAL_ERROR; // miniserver running
- }
-
-+ ssdpdevices_init(&GlobalSsdpDevices);
-+
- miniSocket =
- ( MiniServerSockArray * ) malloc( sizeof( MiniServerSockArray ) );
- if( miniSocket == NULL )
-@@ -963,5 +965,8 @@
- }
- shutdown( sock, SD_BOTH );
- UpnpCloseSocket( sock );
-+
-+ ssdpdevices_destroy(&GlobalSsdpDevices);
-+
- return 0;
- }
---- a/tombupnp/upnp/src/genlib/net/http/webserver.c
-+++ b/tombupnp/upnp/src/genlib/net/http/webserver.c
-@@ -1211,6 +1211,7 @@
- *
- * Parameters:
- * IN http_message_t *req ; HTTP Request message
-+* IN SOCKINFO *info ; Socket info (fd with remote ip & port)
- * OUT enum resp_type *rtype ; Tpye of response
- * OUT membuffer *headers ;
- * OUT membuffer *filename ; Get filename from request document
-@@ -1230,6 +1231,7 @@
- ************************************************************************/
- static int
- process_request( IN http_message_t * req,
-+ IN SOCKINFO *info,
- OUT enum resp_type *rtype,
- OUT membuffer * headers,
- OUT membuffer * filename,
-@@ -1473,6 +1475,19 @@
- goto error_handler;
- }
-
-+ // change "x-matroska" by "x-mkv", for samsung devices only
-+ char *newtype;
-+ if((strcmp(finfo.content_type, "video/x-matroska")==0)) {
-+ if(ssdpdevice_servermatch(&GlobalSsdpDevices, info->foreign_ip_addr.s_addr, "samsung")) {
-+// printf("Req from Samsung device : %s\n", finfo.content_type);
-+ // change is made in two steps : free the previous string, malloc a new one
-+ if((newtype= (char *) strdup("video/x-mkv"))) {
-+ free(finfo.content_type);
-+ finfo.content_type = newtype;
-+ }
-+ }
-+ }
-+
- if( RespInstr->IsRangeActive && RespInstr->IsChunkActive ) {
- //Content-Range: bytes 222-3333/4000 HTTP_PARTIAL_CONTENT
- //Transfer-Encoding: chunked
-@@ -1800,7 +1815,7 @@
- //Process request should create the different kind of header depending on the
- //the type of request.
- ret =
-- process_request( req, &rtype, &headers, &filename, &xmldoc,
-+ process_request( req, info, &rtype, &headers, &filename, &xmldoc,
- &RespInstr, &Fp);
- if( ret != UPNP_E_SUCCESS ) {
- // send error code
---- a/tombupnp/upnp/src/genlib/net/uri/uri.c
-+++ b/tombupnp/upnp/src/genlib/net/uri/uri.c
-@@ -1042,7 +1042,8 @@
- out->path_type = REL_PATH;
- }
-
-- if( ( ( begin_hostport + 1 ) < max ) && ( in[begin_hostport] == '/' )
-+ //parse hostport only if scheme was found
-+ if( ( begin_hostport > 0 ) && ( ( begin_hostport + 1 ) < max ) && ( in[begin_hostport] == '/' )
- && ( in[begin_hostport + 1] == '/' ) ) {
- begin_hostport += 2;
-
-@@ -1059,6 +1060,12 @@
- out->hostport.text.size = 0;
- out->hostport.text.buff = 0;
- begin_path = begin_hostport;
-+
-+ //remove excessive leading slashes (fix for Samsung Smart TV 2012)
-+ while( ( ( begin_path + 1 ) < max ) && ( in[begin_path] == '/' ) && ( in[begin_path + 1] == '/') ) {
-+ begin_path++;
-+ }
-+
- }
-
- begin_fragment =
---- a/tombupnp/upnp/src/inc/ssdplib.h
-+++ b/tombupnp/upnp/src/inc/ssdplib.h
-@@ -161,9 +161,22 @@
- struct sockaddr_in dest_addr;
- } ssdp_thread_data;
-
-+typedef struct
-+{
-+ ithread_mutex_t mutex;
-+ LinkedList deviceslist;
-+} ssdpdevices_t;
-+
-+typedef struct
-+{
-+ uint32_t s_addr;
-+ char *serverdesc;
-+} ssdp_device_t;
-
- /* globals */
-
-+extern ssdpdevices_t GlobalSsdpDevices;
-+
- CLIENTONLY(extern SOCKET gSsdpReqSocket;);
-
- typedef int (*ParserFun)(char *, Event *);
-@@ -174,6 +187,64 @@
- //int AnalyzeCommand(char * szCommand, Event * Evt);
-
- /************************************************************************
-+* Function : ssdpdevices_free
-+*
-+* Parameters :
-+* void *d ;
-+*
-+* Description : Free memory allocated for each SSDP Device
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+void ssdpdevice_free( void *d );
-+
-+/************************************************************************
-+* Function : ssdpdevice_compare
-+*
-+* Parameters :
-+* void* param1 ;
-+* void* param2 ;
-+*
-+* Description : Compare two SSDP devices by their ip address
-+*
-+* Return : int ;
-+*
-+* Note :
-+************************************************************************/
-+int ssdpdevice_compare( void *param1, void *param2 );
-+
-+/************************************************************************
-+* Function : ssdpdevices_init
-+*
-+* Parameters :
-+* INOUT ssdpdevices_t* s ; Array of SSDP Devices
-+*
-+* Description : Initialize and allocate memory for the array of SSDP devices
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+
-+void ssdpdevices_init(ssdpdevices_t* s);
-+
-+/************************************************************************
-+* Function : ssdpdevices_destroy
-+*
-+* Parameters :
-+* INOUT ssdpdevices_t* msg ; Array of SSDP Devices
-+*
-+* Description : Free memory allocated for the Array of SSDP Devices
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+void ssdpdevices_destroy( ssdpdevices_t *s );
-+
-+/************************************************************************
- * Function : Make_Socket_NoBlocking
- *
- * Parameters:
---- a/tombupnp/upnp/src/ssdp/ssdp_server.c
-+++ b/tombupnp/upnp/src/ssdp/ssdp_server.c
-@@ -52,8 +52,231 @@
- #include "unixutil.h"
- #endif
-
-+#include <regex.h>
-+
- #define MAX_TIME_TOREAD 45
-
-+// global containing the array of devices
-+ssdpdevices_t GlobalSsdpDevices;
-+
-+/************************************************************************
-+* Function : ssdpdevices_free
-+*
-+* Parameters :
-+* void *msg ;
-+*
-+* Description : Free memory allocated for each SSDP Device
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+void
-+ssdpdevice_free( void *d )
-+{
-+ ssdp_device_t *sd = ( ssdp_device_t * ) d;
-+
-+ free(sd->serverdesc);
-+
-+ free( sd );
-+}
-+
-+/************************************************************************
-+* Function : ssdpdevice_compare
-+*
-+* Parameters :
-+* void* param1 ;
-+* void* param2 ;
-+*
-+* Description : Compare two SSDP devices by their ip address
-+*
-+* Return : int ;
-+*
-+* Note :
-+************************************************************************/
-+int
-+ssdpdevice_compare( void *param1,
-+ void *param2 )
-+{
-+ assert( param1 != NULL );
-+ assert( param2 != NULL );
-+
-+ return ( ( ssdp_device_t * ) param1 )->s_addr ==
-+ ( ( ssdp_device_t * ) param2 )->s_addr;
-+}
-+
-+/************************************************************************
-+* Function : ssdpdevices_init
-+*
-+* Parameters :
-+* INOUT ssdpdevices_t* s ; Array of SSDP Devices
-+*
-+* Description : Initialize and allocate memory for the array of SSDP devices
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+
-+void ssdpdevices_init(ssdpdevices_t* s) {
-+ ithread_mutex_init( &s->mutex, NULL );
-+ ListInit( &s->deviceslist, ssdpdevice_compare, ssdpdevice_free );
-+}
-+
-+/************************************************************************
-+* Function : ssdpdevices_destroy
-+*
-+* Parameters :
-+* INOUT ssdpdevices_t* s ; Array of SSDP Devices
-+*
-+* Description : Free memory allocated for the Array of SSDP Devices
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+void
-+ssdpdevices_destroy( ssdpdevices_t *s )
-+{
-+ int ret;
-+
-+ assert( s != NULL );
-+
-+ ithread_mutex_lock( &s->mutex );
-+ ListDestroy( &s->deviceslist, 1 );
-+ ithread_mutex_unlock( &s->mutex );
-+
-+ ret = ithread_mutex_destroy( &s->mutex );
-+ assert( ret == 0 );
-+
-+}
-+
-+/************************************************************************
-+* Function : create_device_node
-+*
-+* Parameters :
-+* IN uint32_t *ip4addr; IP Address
-+* IN membuffer *mbuf; Server descripton
-+*
-+* Description : Create a device structure and fill it with ip & description
-+*
-+* Return : ssdp_device_t *
-+*
-+* Note :
-+************************************************************************/
-+
-+ssdp_device_t *create_device(uint32_t ipaddr, membuffer *mbuf) {
-+ ssdp_device_t *newd;
-+ if( (newd = (ssdp_device_t *) malloc(sizeof(ssdp_device_t)))) {
-+ if( ( newd->serverdesc = str_alloc ( mbuf->buf, mbuf->length) ) ) {
-+ newd->s_addr = ipaddr;
-+ return(newd);
-+ }
-+ free(newd);
-+ }
-+ return(NULL);
-+}
-+
-+
-+/************************************************************************
-+* Function : ssdpdevices_updatelist
-+*
-+* Parameters :
-+* INOUT ssdpdevices_t* s ; Array of SSDP Devices
-+* IN uint32_t *ip4addr; IP Address
-+* IN char *serverstr; Server descripton
-+*
-+* Description : Insert or update the list with given device
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+void
-+ssdpdevices_updatelist( ssdpdevices_t *s, uint32_t ip4addr, membuffer *serverstr)
-+{
-+ assert( s != NULL );
-+ assert( ip4addr != 0 );
-+ assert( serverstr != NULL );
-+
-+ int found = 0;
-+
-+ // Loop through each existing device
-+ ithread_mutex_lock( &s->mutex );
-+ LinkedList *l = &s->deviceslist;
-+ ListNode *temp = NULL;
-+ ssdp_device_t *d,*newd;
-+ for (temp = ListHead(l);temp!=NULL;temp = ListNext(l,temp))
-+ {
-+ d=(ssdp_device_t *)temp->item;
-+ if(d->s_addr == ip4addr) {
-+ found = 1;
-+ break;
-+ }
-+ }
-+
-+ // Add the entry if necessary
-+ if(!found) {
-+ if( ( newd = create_device(ip4addr, serverstr))) {
-+ ListAddTail( l, newd);
-+ }
-+ }
-+ ithread_mutex_unlock( &s->mutex );
-+
-+}
-+
-+/************************************************************************
-+* Function : ssdpdevice_descmatch
-+*
-+* Parameters :
-+* IN ssdpdevices_t* s ; Array of SSDP Devices
-+* IN uint32_t ipaddr; Ip addres to check
-+* IN char *regexp; Regex to match
-+*
-+* Description : Check whether the device's description matches the given regex
-+*
-+* Return : int (1 = match, else no match)
-+*
-+* Note :
-+************************************************************************/
-+int
-+ssdpdevice_servermatch( ssdpdevices_t *s, uint32_t ip4addr, char *regex)
-+{
-+ assert( s != NULL );
-+ assert( ip4addr != 0 );
-+ assert( regex != NULL );
-+
-+ int ret = 0;
-+ regex_t reg;
-+
-+ if( regcomp(&reg, regex, REG_EXTENDED | REG_NOSUB | REG_ICASE) != 0) {
-+ printf("Invalid regex : %s\n", regex);
-+ return(0);
-+ }
-+
-+ // Loop through each existing device
-+ ithread_mutex_lock( &s->mutex );
-+ LinkedList *l = &s->deviceslist;
-+ ListNode *temp = NULL;
-+ ssdp_device_t *d;
-+ for (temp = ListHead(l);temp!=NULL;temp = ListNext(l,temp))
-+ {
-+ d=(ssdp_device_t *)temp->item;
-+ if(d->s_addr == ip4addr) {
-+ // We found the ip addr, let's check if the desc contains the searched string
-+ if(regexec(&reg, d->serverdesc, 0, NULL, 0) == 0) {
-+ ret=1;
-+ }
-+ break;
-+ }
-+ }
-+
-+ ithread_mutex_unlock( &s->mutex );
-+ return(ret);
-+}
-+
-+
-+
- CLIENTONLY( SOCKET gSsdpReqSocket = 0;
- )
-
-@@ -756,6 +979,24 @@
- if( !valid_ssdp_msg( &parser->msg ) ) {
- goto error_handler;
- }
-+
-+ // update liste of devices for each NOTIFY received
-+
-+ if ( parser->msg.method == HTTPMETHOD_NOTIFY ) {
-+// printf( "SSDP recvd code NOTIFY = %d from %s\n", parser->msg.method, inet_ntoa(data->dest_addr.sin_addr));
-+ LinkedList *g=&parser->msg.headers;
-+ ListNode *temp = NULL;
-+ http_header_t *h;
-+ for (temp = ListHead(g);temp!=NULL;temp = ListNext(g,temp))
-+ {
-+ h=(http_header_t *)temp->item;
-+ if(strncasecmp(h->name.buf, "SERVER", h->name.length) == 0) {
-+ ssdpdevices_updatelist(&GlobalSsdpDevices, data->dest_addr.sin_addr.s_addr, &h->value);
-+ }
-+ }
-+
-+ }
-+
- return 0; //////// done; thread will free 'data'
-
- error_handler:
diff --git a/multimedia/mimms/mimms.SlackBuild b/multimedia/mimms/mimms.SlackBuild
index 5ad06029b2..ccc85a8a94 100644
--- a/multimedia/mimms/mimms.SlackBuild
+++ b/multimedia/mimms/mimms.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mimms
@@ -23,20 +23,30 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mimms
VERSION=${VERSION:-3.2.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -72,4 +82,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/minidlna/README.SLACKWARE b/multimedia/minidlna/README.SLACKWARE
new file mode 100644
index 0000000000..c2b1f929f4
--- /dev/null
+++ b/multimedia/minidlna/README.SLACKWARE
@@ -0,0 +1,22 @@
+An init script has been included for the daemon; to run at boot time,
+add the following to /etc/rc.d/rc.local:
+
+ if [ -x /etc/rc.d/rc.minidlna ]; then
+ /etc/rc.d/rc.minidlna start
+ fi
+
+You might also want to have the daemon shut down gracefully
+on system halt or reboot; if so, add the following to
+/etc/rc.d/rc.local_shutdown:
+
+ if [ -x /etc/rc.d/rc.minidlna ]; then
+ /etc/rc.d/rc.minidlna stop
+ fi
+
+Remember to give executable permission to /etc/rc.d/rc.local_shutdown:
+
+ chmod 0755 /etc/rc.d/rc.local_shutdown
+
+To check the daemon is running properly:
+
+ /etc/rc.d/rc.minidlna status
diff --git a/multimedia/minidlna/doinst.sh b/multimedia/minidlna/doinst.sh
index 7626d3a507..15f3e3fff1 100644
--- a/multimedia/minidlna/doinst.sh
+++ b/multimedia/minidlna/doinst.sh
@@ -11,4 +11,17 @@ config() {
# Otherwise, we leave the .new copy for the admin to consider...
}
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname ${NEW})/$(basename ${NEW} .new)"
+ if [ -e ${OLD} ]; then
+ cp -a ${OLD} ${NEW}.incoming
+ cat ${NEW} > ${NEW}.incoming
+ mv ${NEW}.incoming ${NEW}
+ fi
+ mv ${NEW} ${OLD}
+}
+
+preserve_perms etc/rc.d/rc.minidlna.new
config etc/minidlna.conf.new
+config etc/logrotate.d/minidlna.new
diff --git a/multimedia/minidlna/minidlna.SlackBuild b/multimedia/minidlna/minidlna.SlackBuild
index a1e2d4b26a..64ffce800b 100644
--- a/multimedia/minidlna/minidlna.SlackBuild
+++ b/multimedia/minidlna/minidlna.SlackBuild
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for minidlna
# Copyright 2011-2012 Niels Horn, Rio de Janeiro, RJ, Brazil
-# Copyright 2015 Mario Preksavec, Zagreb, Croatia
+# Copyright 2015, 2023 Mario Preksavec, Zagreb, Croatia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,26 +23,36 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=minidlna
-VERSION=${VERSION:-1.1.5}
+VERSION=${VERSION:-1.3.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -70,9 +80,7 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-./autogen.sh
-
-CFLAGS="$SLKCFLAGS" \
+CFLAGS="$SLKCFLAGS -fcommon" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
@@ -91,14 +99,17 @@ make install DESTDIR=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-# Include the config file
-mkdir -p $PKG/etc
-cat $PRGNAM.conf > $PKG/etc/$PRGNAM.conf.new
+# Include startup script and configs thanks to Andrew Isakov
+install -D -m755 $CWD/rc.$PRGNAM -T $PKG/etc/rc.d/rc.$PRGNAM.new
+install -D -m644 $CWD/${PRGNAM}.logrotate -T $PKG/etc/logrotate.d/${PRGNAM}.new
+install -D -m644 $PRGNAM.conf -T $PKG/etc/$PRGNAM.conf.new
+
+# Create log and db cache directories
+mkdir -p $PKG/var/{log,cache}/$PRGNAM
# Include the manual pages
-mkdir -p $PKG/usr/man/man{5,8}
-cat minidlna.conf.5 > $PKG/usr/man/man5/minidlna.conf.5
-cat minidlnad.8 > $PKG/usr/man/man8/minidlnad.8
+install -D -m644 minidlna.conf.5 -t $PKG/usr/man/man5
+install -D -m644 minidlnad.8 -t $PKG/usr/man/man8
gzip -9 $PKG/usr/man/man?/*.?
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
@@ -111,4 +122,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/minidlna/minidlna.info b/multimedia/minidlna/minidlna.info
index 1dad012127..1a2714325e 100644
--- a/multimedia/minidlna/minidlna.info
+++ b/multimedia/minidlna/minidlna.info
@@ -1,10 +1,10 @@
PRGNAM="minidlna"
-VERSION="1.1.5"
+VERSION="1.3.2"
HOMEPAGE="http://minidlna.sourceforge.net/"
-DOWNLOAD="http://downloads.sourceforge.net/minidlna/minidlna-1.1.5.tar.gz"
-MD5SUM="1970e553a1eb8a3e7e302e2ce292cbc4"
+DOWNLOAD="http://downloads.sourceforge.net/minidlna/minidlna-1.3.2.tar.gz"
+MD5SUM="9e4cc50a48b1b467a234b579b45457d0"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg"
+REQUIRES=""
MAINTAINER="Mario Preksavec"
EMAIL="mario at slackware dot hr"
diff --git a/multimedia/minidlna/minidlna.logrotate b/multimedia/minidlna/minidlna.logrotate
new file mode 100644
index 0000000000..17bf172f49
--- /dev/null
+++ b/multimedia/minidlna/minidlna.logrotate
@@ -0,0 +1,6 @@
+/var/log/minidlna/minidlna.log {
+ sharedscripts
+ postrotate
+ /usr/bin/pkill -HUP -F /var/run/minidlna.pid 2>/dev/null || true
+ endscript
+}
diff --git a/multimedia/minidlna/rc.minidlna b/multimedia/minidlna/rc.minidlna
new file mode 100644
index 0000000000..2651f3b636
--- /dev/null
+++ b/multimedia/minidlna/rc.minidlna
@@ -0,0 +1,132 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.minidlna
+#
+# start/stop/restart/status of the MiniDLNA server.
+#
+# To make MiniDLNA start automatically at boot, make this
+# file executable: chmod 755 /etc/rc.d/rc.minidlna
+#
+# Written by Georgi D. Sotirov <gsotirov@gmail.com>
+# Based on examples from Internet
+
+# Bash colors
+C_GREEN=$'\e[32;01m'
+C_YELLOW=$'\e[33;01m'
+C_RED=$'\e[31;01m'
+C_NORMAL=$'\e[0m'
+
+SNAME='MiniDLNA server'
+NAME=minidlna
+CMD="/usr/sbin/${NAME}d"
+CONFILE="/etc/${NAME}.conf"
+PIDFILE="/var/run/${NAME}.pid"
+CMD_OPTS="-f $CONFILE -P $PIDFILE"
+
+ok() {
+ echo "${C_GREEN}Done${C_NORMAL}"
+}
+
+fail() {
+ echo "${C_RED}Failure${C_NORMAL}"
+}
+
+print_status() {
+ if [ $? != 0 ]; then
+ fail
+ else
+ ok
+ fi
+}
+
+start() {
+ if [ -x $CMD ]; then
+ if [ ! -e $PIDFILE ]; then
+ echo -n "Starting $SNAME in $CMD... "
+ $CMD $CMD_OPTS
+ print_status
+ else
+ echo "Starting $SNAME: Already running with PID `cat $PIDFILE`!"
+ fi
+ fi
+}
+
+stop() {
+ if [ -e $PIDFILE ]; then
+ echo -n "Stopping ${SNAME}... "
+ kill -15 `cat $PIDFILE`
+ print_status
+ else
+ echo "Stopping ${SNAME}: Not running!"
+ fi
+}
+
+restart() {
+ stop
+ sleep 3
+ start
+}
+
+status() {
+ if [ -e $PIDFILE ]; then
+ echo "$SNAME running with PID `cat $PIDFILE`."
+ else
+ STAT=`ps -C $NAME -o pid= | wc -l`
+ if [ ${STAT} -ge 1 ]; then
+ echo "$SNAME is running"
+ else
+ echo "$SNAME is not running"
+ fi
+ fi
+}
+
+db_clean() {
+ # If DB dir defined explicitly in log (i.e. not commented), then use it
+ DB_DIR_CONF=$(grep -E '^db_dir=' $CONFILE | awk -F'=' '{ print $2 }')
+ # else fallback to default
+ DB_DIR=${DB_DIR_CONF:-/var/cache/$NAME}
+ WAS_RUNNING=0
+
+ if [ -e $DB_DIR -a -d $DB_DIR ]; then
+ # Stop daemon if running
+ if [ -e $PIDFILE ]; then
+ WAS_RUNNING=1
+ stop
+ sleep 3
+ fi
+
+ echo -n "Cleaning cache in ${DB_DIR}... "
+ rm -f ${DB_DIR}/files.db
+ rm -rf ${DB_DIR}art_cache
+ print_status
+
+ # And restart daemon afterwards
+ if [ $WAS_RUNNING -ne 0 ]; then
+ start
+ fi
+ else
+ echo "Error: cache dir $DB_DIR does not exist or not a direcory!"
+ fi
+}
+
+help() {
+ echo "$SNAME control"
+ echo "Usage: $0 start|stop|restart|status|clean"
+ echo
+}
+
+case "$1" in
+ 'start')
+ start ;;
+ 'stop')
+ stop ;;
+ 'restart')
+ restart ;;
+ 'status')
+ status ;;
+ 'clean')
+ db_clean ;;
+ *)
+ help ;;
+esac
+
diff --git a/multimedia/minitube/README b/multimedia/minitube/README
index e8fd048258..9ddd0dd3e0 100644
--- a/multimedia/minitube/README
+++ b/multimedia/minitube/README
@@ -1,4 +1,5 @@
-Minitube is a YouTube desktop client. With it you can watch YouTube videos in
-a new way: you type a keyword, Minitube gives you an endless video stream.
-Minitube does not require the Flash Player. Minitube is not about cloning
-the original YouTube web interface, it aims to create a new TV-like experience.
+Minitube is a YouTube desktop client. With it you can watch YouTube
+videos in a new way: you type a keyword, Minitube gives you an endless
+video stream. Minitube does not require the Flash Player. Minitube
+is not about cloning the original YouTube web interface, it aims to
+create a new TV-like experience.
diff --git a/multimedia/minitube/minitube-gcc47.patch b/multimedia/minitube/minitube-gcc47.patch
deleted file mode 100644
index 6283b1fe99..0000000000
--- a/multimedia/minitube/minitube-gcc47.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naur minitube-20120813_338dac6.orig/src/qtsingleapplication/qtlocalpeer.cpp minitube-20120813_338dac6/src/qtsingleapplication/qtlocalpeer.cpp
---- minitube-20120813_338dac6.orig/src/qtsingleapplication/qtlocalpeer.cpp 2012-08-13 17:09:04.000000000 +0200
-+++ minitube-20120813_338dac6/src/qtsingleapplication/qtlocalpeer.cpp 2012-09-12 13:00:44.330889268 +0200
-@@ -58,6 +58,7 @@
- #endif
- #if defined(Q_OS_UNIX)
- #include <time.h>
-+#include <unistd.h>
- #endif
-
- namespace QtLP_Private {
diff --git a/multimedia/minitube/minitube.SlackBuild b/multimedia/minitube/minitube.SlackBuild
index 83c33ca636..115089f486 100644
--- a/multimedia/minitube/minitube.SlackBuild
+++ b/multimedia/minitube/minitube.SlackBuild
@@ -1,8 +1,10 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for minitube
-# Copyright 2009 Mikhail Zotov < mikhail dot ru at gmail dot com >
+# Copyright 2009 Mikhail Zotov
+# Copyright 2021-2023 Johannes Schoepfer, Germany
+# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
@@ -21,38 +23,42 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# Version number bumped by /dev/ammo42
+# 20220320 bkw: Modified by SlackBuilds.org: fix 32-bit build.
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=minitube
-VERSION=${VERSION:-2.1.3}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-3.9.3}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
+# 20220320 bkw: we need -fPIC even for 32-bit.
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686 -fPIC"
elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686 -fPIC"
elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC -m64"
- LIBDIRSUFFIX="64"
+ SLKCFLAGS="-O2 -fPIC"
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
set -e
@@ -61,18 +67,18 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z*
+tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-# Fix building with gcc-4.7.x
-patch -p1 < $CWD/minitube-gcc47.patch
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} + -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
+# fix for mpv >= 0.35, thanks to Chris Willing
+sed -i -e '/mpv_opengl_init_params/ s/, nullptr};/};/' \
+ lib/media/src/mpv/mpvwidget.cpp
qmake
# Use our SLKCFLAGS plus the hardcoded ones from the Makefile
make \
@@ -82,7 +88,7 @@ make install INSTALL_ROOT=$PKG
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- AUTHORS CHANGES COPYING INSTALL TODO \
+ AUTHORS CHANGES COPYING TODO \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -91,4 +97,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/minitube/minitube.info b/multimedia/minitube/minitube.info
index ab76d9715c..3c1af2e382 100644
--- a/multimedia/minitube/minitube.info
+++ b/multimedia/minitube/minitube.info
@@ -1,10 +1,10 @@
PRGNAM="minitube"
-VERSION="2.1.3"
+VERSION="3.9.3"
HOMEPAGE="https://flavio.tordini.org/minitube"
-DOWNLOAD="http://ponce.cc/slackware/sources/repo/minitube-2.1.3.tar.xz"
-MD5SUM="3f0d44da75b275b442fde4a21af2f115"
+DOWNLOAD="https://github.com/flaviotordini/minitube/releases/download/3.9.3/minitube-3.9.3.tar.bz2"
+MD5SUM="f6eddbba90988051bf62339df73481a6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="mpv"
MAINTAINER="Johannes Schoepfer"
EMAIL="slackbuilds@schoepfer.info"
diff --git a/multimedia/mirage2iso/README b/multimedia/mirage2iso/README
new file mode 100644
index 0000000000..309575ed89
--- /dev/null
+++ b/multimedia/mirage2iso/README
@@ -0,0 +1,4 @@
+mirage2iso (extract iso images from CD images)
+
+mirage2iso is a simple tool to convert various CD/DVD image formats into
+.iso images through use of libmirage (same one as used by cdemu).
diff --git a/multimedia/mirage2iso/mirage2iso.1 b/multimedia/mirage2iso/mirage2iso.1
new file mode 100644
index 0000000000..0d669013a7
--- /dev/null
+++ b/multimedia/mirage2iso/mirage2iso.1
@@ -0,0 +1,109 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "MIRAGE2ISO" 1 "2022-01-25" "0.4.2" "SlackBuilds.org"
+.SH NAME
+mirage2iso \- convert various CD/DVD image formats to ISO
+.\" RST source for mirage2iso(1) man page. Convert with:
+.
+.\" rst2man.py mirage2iso.rst > mirage2iso.1
+.
+.\" rst2man.py comes from the SBo development/docutils package.
+.
+.SH SYNOPSIS
+.sp
+mirage2iso [\fI\-options\fP] \fIinput\-file\fP [\fIoutput.iso\fP]
+.SH DESCRIPTION
+.sp
+\fBmirage2iso\fP extracts an ISO\-9660 image from a CD/DVD image in any
+format supported by \fBlibmirage\fP\&. This includes \fIbin/cue\fP, \fInrg\fP
+(Nero), \fImds\fP (Alcohol 120%), and many more; see the libmirage
+documentation for the full list.
+.sp
+The \fIinput\-file\fP argument is required, and there\(aqs no way to read
+from standard input. For multi\-file formats (\fIbin/cue\fP, \fIbin/toc\fP,
+etc), the \fIinput\-file\fP must be the one containing the table of
+contents (the \fIcue\fP or \fItoc\fP file, which will also be the smallest
+file of the set).
+.sp
+With no \fIoutput.iso\fP argument, the output filename is "guessed" based
+on the input filename, with the extension changed to \fI\&.iso\fP\&. If this
+file already exists, it will not be overwritten (unless the \fB\-f\fP,
+\fB\-\-force\fP option is given).
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \-f\fP,\fB \-\-force
+Force replacing the guessed output file.
+.TP
+.BI \-p\fP,\fB \-\-password\fB= PASS
+Password for the encrypted image.
+.TP
+.B \-q\fP,\fB \-\-quiet
+Disable progress reporting, output only errors.
+.TP
+.BI \-s\fP,\fB \-\-session\fB= N
+Session to use (default: the last one).
+.TP
+.B \-c\fP,\fB \-\-stdout
+Output the image into stdout instead of a file.
+.TP
+.B \-v\fP,\fB \-\-verbose
+Increase progress reporting verbosity.
+.TP
+.B \-V\fP,\fB \-\-version
+Print program version and exit.
+.TP
+.B \-h\fP,\fB \-\-help
+Print built\-in help and exit.
+.UNINDENT
+.SH LIMITATIONS
+.sp
+\fBmirage2iso\fP doesn\(aqt support images with multiple data tracks in the
+same session. Only the first data (Mode1) track will be converted.
+.sp
+It doesn\(aqt support tracks other than Mode1 either, i.e. it is able to
+convert only standard data tracks. It won\(aqt work with your PSX games
+and other stuff relying on Mode2.
+.SH COPYRIGHT
+.sp
+See the file /usr/doc/mirage2iso\-0.4.2/COPYING for license information.
+.SH AUTHORS
+.sp
+mirage2iso was written by Michał Górny.
+.sp
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+.SH SEE ALSO
+.sp
+\fBbchunk\fP(1)
+.sp
+/usr/doc/mirage2iso\-0.4.2/README
+.\" Generated by docutils manpage writer.
+.
diff --git a/multimedia/mirage2iso/mirage2iso.SlackBuild b/multimedia/mirage2iso/mirage2iso.SlackBuild
new file mode 100644
index 0000000000..b28ba93338
--- /dev/null
+++ b/multimedia/mirage2iso/mirage2iso.SlackBuild
@@ -0,0 +1,86 @@
+#!/bin/bash
+
+# Slackware build script for mirage2iso
+
+# Written by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=mirage2iso
+VERSION=${VERSION:-0.4.2}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --build=$ARCH-slackware-linux
+
+make
+make install-strip DESTDIR=$PKG
+
+mkdir -p $PKG/usr/man/man1
+gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a README* NEWS* COPYING* $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mirage2iso/mirage2iso.info b/multimedia/mirage2iso/mirage2iso.info
new file mode 100644
index 0000000000..4348732c43
--- /dev/null
+++ b/multimedia/mirage2iso/mirage2iso.info
@@ -0,0 +1,10 @@
+PRGNAM="mirage2iso"
+VERSION="0.4.2"
+HOMEPAGE="https://github.com/mgorny/mirage2iso"
+DOWNLOAD="https://github.com/mgorny/mirage2iso/releases/download/v0.4.2/mirage2iso-0.4.2.tar.xz"
+MD5SUM="e4e38aa47cbc63211c882f2ce8f62cd0"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="libmirage"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/mirage2iso/mirage2iso.rst b/multimedia/mirage2iso/mirage2iso.rst
new file mode 100644
index 0000000000..f06f6d0e1a
--- /dev/null
+++ b/multimedia/mirage2iso/mirage2iso.rst
@@ -0,0 +1,100 @@
+.. RST source for mirage2iso(1) man page. Convert with:
+.. rst2man.py mirage2iso.rst > mirage2iso.1
+.. rst2man.py comes from the SBo development/docutils package.
+
+.. |version| replace:: 0.4.2
+.. |date| date::
+
+==========
+mirage2iso
+==========
+
+-------------------------------------------
+convert various CD/DVD image formats to ISO
+-------------------------------------------
+
+:Manual section: 1
+:Manual group: SlackBuilds.org
+:Date: |date|
+:Version: |version|
+
+SYNOPSIS
+========
+
+mirage2iso [*-options*] *input-file* [*output.iso*]
+
+DESCRIPTION
+===========
+
+**mirage2iso** extracts an ISO-9660 image from a CD/DVD image in any
+format supported by **libmirage**. This includes *bin/cue*, *nrg*
+(Nero), *mds* (Alcohol 120%), and many more; see the libmirage
+documentation for the full list.
+
+The *input-file* argument is required, and there's no way to read
+from standard input. For multi-file formats (*bin/cue*, *bin/toc*,
+etc), the *input-file* must be the one containing the table of
+contents (the *cue* or *toc* file, which will also be the smallest
+file of the set).
+
+With no *output.iso* argument, the output filename is "guessed" based
+on the input filename, with the extension changed to *.iso*. If this
+file already exists, it will not be overwritten (unless the **-f**,
+**--force** option is given).
+
+OPTIONS
+=======
+
+-f, --force
+ Force replacing the guessed output file.
+
+-p, --password=PASS
+ Password for the encrypted image.
+
+-q, --quiet
+ Disable progress reporting, output only errors.
+
+-s, --session=N
+ Session to use (default: the last one).
+
+-c, --stdout
+ Output the image into stdout instead of a file.
+
+-v, --verbose
+ Increase progress reporting verbosity.
+
+-V, --version
+ Print program version and exit.
+
+-h, --help
+ Print built-in help and exit.
+
+LIMITATIONS
+===========
+
+**mirage2iso** doesn't support images with multiple data tracks in the
+same session. Only the first data (Mode1) track will be converted.
+
+It doesn't support tracks other than Mode1 either, i.e. it is able to
+convert only standard data tracks. It won't work with your PSX games
+and other stuff relying on Mode2.
+
+COPYRIGHT
+=========
+
+See the file /usr/doc/mirage2iso-|version|/COPYING for license information.
+
+AUTHORS
+=======
+
+mirage2iso was written by Michał Górny.
+
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+
+SEE ALSO
+========
+
+**bchunk**\(1)
+
+/usr/doc/mirage2iso-|version|/README
diff --git a/multimedia/vokoscreen/slack-desc b/multimedia/mirage2iso/slack-desc
index fb49a51f85..d5b98485cb 100644
--- a/multimedia/vokoscreen/slack-desc
+++ b/multimedia/mirage2iso/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-vokoscreen: vokoscreen (screencast creator)
-vokoscreen:
-vokoscreen: vokoscreen is an easy to use screencast creator to record
-vokoscreen: educational videos, live recordings of browser, installation,
-vokoscreen: videoconferences, etc.
-vokoscreen:
-vokoscreen:
-vokoscreen:
-vokoscreen:
-vokoscreen: http://linuxecke.volkoh.de/vokoscreen/vokoscreen.html
-vokoscreen:
+mirage2iso: mirage2iso (extract iso images from CD images)
+mirage2iso:
+mirage2iso: mirage2iso is a simple tool to convert various CD/DVD image formats
+mirage2iso: into .iso images through use of libmirage (same one as used by cdemu).
+mirage2iso:
+mirage2iso:
+mirage2iso:
+mirage2iso:
+mirage2iso:
+mirage2iso:
+mirage2iso:
diff --git a/multimedia/miro/README b/multimedia/miro/README
deleted file mode 100644
index cb681316a8..0000000000
--- a/multimedia/miro/README
+++ /dev/null
@@ -1,5 +0,0 @@
-Miro is a free Internet television application for the online
-Democracy Network.
-
-Optional dependencies are gst0-ffmpeg, gst0-plugins-bad, avahi,
-ffmpeg2theora, gst0-plugins-ugly and flashplayer-plugin.
diff --git a/multimedia/miro/miro-gdb-fix.patch b/multimedia/miro/miro-gdb-fix.patch
deleted file mode 100644
index c14e384109..0000000000
--- a/multimedia/miro/miro-gdb-fix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -Naur miro-4.0.4.orig/linux/miro miro-4.0.4/linux/miro
---- miro-4.0.4.orig/linux/miro 2011-12-22 14:45:47.000000000 +0000
-+++ miro-4.0.4/linux/miro 2011-12-28 21:26:20.298219802 +0000
-@@ -42,7 +42,7 @@
- then
- MIROREAL=./miro.real
- else
-- MIROREAL=`which gdb`
-+ MIROREAL=`which miro.real`
- fi
-
- echo "using ${MIROREAL}"
-@@ -60,7 +60,7 @@
- fi
-
- $GDB -ex 'set breakpoint pending on' \
-- -ex 'run' --args $PYTHON ./miro.real --sync "$@"
-+ -ex 'run' --args $PYTHON $MIROREAL --sync "$@"
- else
- miro.real "$@"
- fi
diff --git a/multimedia/miro/miro.SlackBuild b/multimedia/miro/miro.SlackBuild
deleted file mode 100644
index 81989bce2e..0000000000
--- a/multimedia/miro/miro.SlackBuild
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for Miro
-
-# Copyright 2009-2013 Larry Hajali <larryhaja[at]gmail[dot]com>
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED ''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 AUTHOR 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.
-
-PRGNAM=miro
-VERSION=${VERSION:-6.0}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-DIRNAME=$(tar -tf $CWD/$PRGNAM-$VERSION.tar.gz | head -1)
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $DIRNAME
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $DIRNAME/tv
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-# Patch to fix the gdb call from miro.
-patch -p1 < $CWD/miro-gdb-fix.patch
-
-# Fix .destkop item.
-sed -i \
- -e 's|TV;||' -e 's|P2P;News;FileTransfer;||' \
- -e 's|ogg$|ogg;|' linux/miro.desktop
-
-cd linux
- sed -i -e 's|share/man|man|' -e '/miro.test/d' setup.py
- sed -i "s|CODEC_ID_MP3|AV_CODEC_ID_MP3|g" miro-segmenter.c
- sed -i "s|CODEC_ID_AC3|AV_CODEC_ID_AC3|g" miro-segmenter.c
- CFLAGS="$SLKCFLAGS" python setup.py install --root=$PKG
-cd -
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-# Remove unneeded files.
-rm -rf $PKG/usr/share/${PRGNAM}/resources/testdata
-if [ "$ARCH" == "x86_64" ]; then
- rm -f $PKG/usr/bin/codegen.Linux-i686
-else
- rm -f $PKG/usr/bin/codegen.Linux-x86_64
-fi
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a CREDITS LAYOUT license.txt README $PKG/usr/doc/$PRGNAM-$VERSION
-cat linux/README > $PKG/usr/doc/$PRGNAM-$VERSION/README.linux
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/miro/miro.info b/multimedia/miro/miro.info
deleted file mode 100644
index 26b4130163..0000000000
--- a/multimedia/miro/miro.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="miro"
-VERSION="6.0"
-HOMEPAGE="http://www.getmiro.com/"
-DOWNLOAD="https://github.com/pculture/miro/archive/v6.0/miro-6.0.tar.gz"
-MD5SUM="0e6037687ddc7321a3a89b93743ae141"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="ffmpeg gnome-python gst0-python libtorrent-rasterbar mutagen pywebkitgtk"
-MAINTAINER="Larry Hajali"
-EMAIL="larryhaja[at]gmail[dot]com"
diff --git a/multimedia/mjpegtools/README b/multimedia/mjpegtools/README
index 733a91ee78..33fe89ef0b 100644
--- a/multimedia/mjpegtools/README
+++ b/multimedia/mjpegtools/README
@@ -1,13 +1,13 @@
-The mjpeg programs are a set of tools that can do recording of videos and
-playback, simple cut-and-paste editing and the MPEG compression of audio
-and video under Linux.
+The mjpeg programs are a set of tools that can do recording of videos
+and playback, simple cut-and-paste editing and the MPEG compression of
+audio and video under Linux.
-Recording is supported for the Zoran based cards like the Buz (Iomega),
-DC10 (MIRO, Pinnacle), Matrox Marvel cards and the LML33 (Linux Media Labs).
-See related pages to the right to find the right driver for your card.
-The recorded videos can be converted to MPEG streams. The software playback
-of MPEG streams works with almost every player and every OS.
-You can produce special forms of MPEG streams like VCD (Video CD) and SVCD
-for hardware playback.
+Recording is supported for the Zoran based cards like the Buz
+(Iomega), DC10 (MIRO, Pinnacle), Matrox Marvel cards and the LML33
+(Linux Media Labs). See related pages to the right to find the right
+driver for your card. The recorded videos can be converted to MPEG
+streams. The software playback of MPEG streams works with almost every
+player and every OS. You can produce special forms of MPEG streams
+like VCD (Video CD) and SVCD for hardware playback.
This optionally depends on libquicktime, libdv and SDL_gfx.
diff --git a/multimedia/mjpegtools/doinst.sh b/multimedia/mjpegtools/doinst.sh
new file mode 100644
index 0000000000..1bef502028
--- /dev/null
+++ b/multimedia/mjpegtools/doinst.sh
@@ -0,0 +1,6 @@
+if [ -x /usr/bin/install-info -a -d usr/info ]; then
+ ( cd usr/info
+ rm -f dir
+ for i in *.info*; do /usr/bin/install-info $i dir 2>/dev/null; done
+ )
+fi
diff --git a/multimedia/mjpegtools/mjpegtools.SlackBuild b/multimedia/mjpegtools/mjpegtools.SlackBuild
index eea2b44c82..efd32532f9 100644
--- a/multimedia/mjpegtools/mjpegtools.SlackBuild
+++ b/multimedia/mjpegtools/mjpegtools.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mjpegtools 11/01/2009
@@ -22,10 +22,17 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230701 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - add doinst/douninst to handle /usr/info/dir.
+# - rm INSTALL from doc dir (compile instructions only).
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mjpegtools
-VERSION=${VERSION:-2.1.0}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-2.2.1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +42,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -65,9 +76,9 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} + -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
# Fix for x86_64
sed -i -e '/ARCHFLAGS=/s:=.*:=:' configure
@@ -86,26 +97,25 @@ CXXFLAGS="$SLKCFLAGS" \
--build=$ARCH-slackware-linux
make
-make install DESTDIR=$PKG
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+make install-strip DESTDIR=$PKG
rm -f $PKG/usr/info/dir
-gzip -9 $PKG/usr/info/*
+gzip -9 $PKG/usr/info/* $PKG/usr/man/man*/*
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
cp -a \
- AUTHORS BUGS CHANGES COPYING ChangeLog HINTS INSTALL* \
+ AUTHORS BUGS CHANGES COPYING ChangeLog HINTS \
NEWS PLANS README TODO docs/FAQ.txt \
- $PKG/usr/doc/$PRGNAM-$VERSION/
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+ $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+
+rm -f $PKG/usr/lib*/*.la
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+cat $CWD/doinst.sh > $PKG/install/douninst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mjpegtools/mjpegtools.info b/multimedia/mjpegtools/mjpegtools.info
index b47c750bde..085aec9a10 100644
--- a/multimedia/mjpegtools/mjpegtools.info
+++ b/multimedia/mjpegtools/mjpegtools.info
@@ -1,10 +1,10 @@
PRGNAM="mjpegtools"
-VERSION="2.1.0"
+VERSION="2.2.1"
HOMEPAGE="http://mjpeg.sourceforge.net/"
-DOWNLOAD="http://downloads.sourceforge.net/mjpeg/mjpegtools-2.1.0.tar.gz"
-MD5SUM="57bf5dd78976ca9bac972a6511b236f3"
+DOWNLOAD="http://downloads.sourceforge.net/mjpeg/mjpegtools-2.2.1.tar.gz"
+MD5SUM="168e0131c0b8a2e31df7a73eb602fc32"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Edward W. Koenig"
-EMAIL="kingbeowulf@gmail.com"
+EMAIL="kingbeowulf@linuxgalaxy.org"
diff --git a/multimedia/mkclean/README b/multimedia/mkclean/README
deleted file mode 100644
index 9d8de20669..0000000000
--- a/multimedia/mkclean/README
+++ /dev/null
@@ -1,15 +0,0 @@
-mkclean (command line tool to clean and optimize Matroska)
-
-mkclean is a command line tool to clean and optimize Matroska files
-(.mkv / .mka / .mks / .mk3d) and WebM files (.webm / .weba) that
-have already been muxed. It reorders the elements with the Cues
-at the front, so your Matroska files are ready to be streamed
-efficiently over the web.
-
-It also removes elements not found in the Matroska specs and the extra
-Meta Seek list of Clusters that some program add to their file. It can
-also optionally remux the Cluster blocks to start each boundary with
-a keyframe and the matching audio/subtitle blocks for that keyframe.
-
-Also comes with mkWDclean to modify files in a way they can play in
-broken/incomplete players.
diff --git a/multimedia/mkclean/mkclean.info b/multimedia/mkclean/mkclean.info
deleted file mode 100644
index 060c436c2d..0000000000
--- a/multimedia/mkclean/mkclean.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="mkclean"
-VERSION="0.8.10"
-HOMEPAGE="https://www.matroska.org/downloads/mkclean.html"
-DOWNLOAD="https://sourceforge.net/projects/matroska/files/mkclean/mkclean-0.8.10.tar.bz2"
-MD5SUM="4af11afc11f583093a5644b6099ef51d"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="libmatroska"
-MAINTAINER="orphaned - no maintainer"
-EMAIL="nobody@nowhere"
diff --git a/multimedia/mkclean/slack-desc b/multimedia/mkclean/slack-desc
deleted file mode 100644
index 8e8daa6f35..0000000000
--- a/multimedia/mkclean/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-mkclean: mkclean (command line tool to clean and optimize Matroska)
-mkclean:
-mkclean: mkclean is a command line tool to clean and optimize Matroska files
-mkclean: (.mkv / .mka / .mks / .mk3d) and WebM files (.webm / .weba) that
-mkclean: have already been muxed. It reorders the elements with the Cues
-mkclean: at the front, so your Matroska files are ready to be streamed
-mkclean: efficiently over the web.
-mkclean:
-mkclean: Home page: https://www.matroska.org/downloads/mkclean.html
-mkclean:
-mkclean:
diff --git a/multimedia/mkvalidator/README b/multimedia/mkvalidator/README
deleted file mode 100644
index ea2be1a309..0000000000
--- a/multimedia/mkvalidator/README
+++ /dev/null
@@ -1,6 +0,0 @@
-mkvalidator (tool to verify Matroska and WebM files)
-
-mkvalidator is a simple command line tool to verify Matroska and WebM
-files for spec conformance. It checks the various bogus or missing
-key elements against the EBML DocType version of the file and reports
-the errors/warnings in the command line.
diff --git a/multimedia/mkvalidator/mkvalidator.info b/multimedia/mkvalidator/mkvalidator.info
deleted file mode 100644
index c016b10224..0000000000
--- a/multimedia/mkvalidator/mkvalidator.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="mkvalidator"
-VERSION="0.5.2"
-HOMEPAGE="https://www.matroska.org/downloads/mkvalidator.html"
-DOWNLOAD="https://sourceforge.net/projects/matroska/files/mkvalidator/mkvalidator-0.5.2.tar.bz2"
-MD5SUM="37e995f8d87ba73b91da2899c4c57f5a"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="orphaned - no maintainer"
-EMAIL="nobody@nowhere"
diff --git a/multimedia/mkvalidator/slack-desc b/multimedia/mkvalidator/slack-desc
deleted file mode 100644
index f2ca25917c..0000000000
--- a/multimedia/mkvalidator/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-mkvalidator: mkvalidator (Verify Matroska and WebM files)
-mkvalidator:
-mkvalidator: mkvalidator is a simple command line tool to verify Matroska and WebM
-mkvalidator: files for spec conformance. It checks the various bogus or missing
-mkvalidator: key elements against the EBML DocType version of the file and reports
-mkvalidator: the errors/warnings in the command line.
-mkvalidator:
-mkvalidator: Home page: https://www.matroska.org/downloads/mkvalidator.html
-mkvalidator:
-mkvalidator:
-mkvalidator:
diff --git a/multimedia/mkvtoolnix/README b/multimedia/mkvtoolnix/README
index f09c60bcf3..e1076149dc 100644
--- a/multimedia/mkvtoolnix/README
+++ b/multimedia/mkvtoolnix/README
@@ -6,12 +6,21 @@ MKVToolnix is a set of tools to create, alter and inspect Matroska
* Create Matroska files from other media files (mkvmerge)
* Modify properties of existing Matroska files (mkvpropedit)
-Note: This comes with internal versions of libembl and libmatroska.
-Configure will use the internal versions if it fails to find them or
-they are unusable.
-
-Interested parties can build QT version of GUI by passing QTGUI=yes.
-This requires QT5, libinput, and libxkbcommon to be installed.
+The script will build QT GUI by default. It can be disabled by GUI=no
It is also possible to install translation of man pages. It requires
po4a to be installed. Configure catches it automatically.
+
+Below libraries are bundled with the source code and configure will use
+system version if they are usable:
+ * avilib
+ * librmff
+ * nlohmann-json
+ * pugixml (on SBo)
+ * utf8-cpp
+ * fmt (on SBo)
+ * libebml (on SBo)
+ * libmatroska (on SBo)
+
+Installation of the above libraries are completely optional and internal
+versions are well tested within the application.
diff --git a/multimedia/mkvtoolnix/mkvtoolnix.SlackBuild b/multimedia/mkvtoolnix/mkvtoolnix.SlackBuild
index 173fe0b26d..933ffc8bda 100644
--- a/multimedia/mkvtoolnix/mkvtoolnix.SlackBuild
+++ b/multimedia/mkvtoolnix/mkvtoolnix.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mkvtoolnix
# Copyright 2008,2009,2010. Andrew Strong (http://www.andrews-corner.org)
@@ -22,10 +22,15 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mkvtoolnix
-VERSION=${VERSION:-34.0.0}
+VERSION=${VERSION:-80.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+GUI=${GUI:-yes}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +40,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -78,7 +87,9 @@ CXXFLAGS="$SLKCFLAGS" \
--sysconfdir=/etc \
--mandir=/usr/man \
--localstatedir=/var \
- --enable-qt=${QTGUI:-no} \
+ --enable-gui="$GUI" \
+ --disable-static \
+ --disable-update-check \
--docdir=/usr/$PRGNAM-$VERSION \
--htmldir=/usr/$PRGNAM-$VERSION \
--with-boost
@@ -93,7 +104,7 @@ find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS INSTALL COPYING README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS COPYING README.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -104,4 +115,4 @@ cat $CWD/doinst.sh > $PKG/install/doinst.sh
mv $TMP/$PRGNAM-$VERSION/examples $PKG/usr/doc/$PRGNAM-$VERSION
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mkvtoolnix/mkvtoolnix.info b/multimedia/mkvtoolnix/mkvtoolnix.info
index 7dfe9e7827..4365df658f 100644
--- a/multimedia/mkvtoolnix/mkvtoolnix.info
+++ b/multimedia/mkvtoolnix/mkvtoolnix.info
@@ -1,8 +1,8 @@
PRGNAM="mkvtoolnix"
-VERSION="34.0.0"
+VERSION="80.0"
HOMEPAGE="https://mkvtoolnix.download/"
-DOWNLOAD="https://mkvtoolnix.download/sources/mkvtoolnix-34.0.0.tar.xz"
-MD5SUM="f8cdbcd2d9f87c21309eacf5f6ff7642"
+DOWNLOAD="https://mkvtoolnix.download/sources/mkvtoolnix-80.0.tar.xz"
+MD5SUM="464b82fc3903d96298e4dadaae53200f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="cmark"
diff --git a/multimedia/mlt/README b/multimedia/mlt/README
deleted file mode 100644
index 5177fadcb4..0000000000
--- a/multimedia/mlt/README
+++ /dev/null
@@ -1,11 +0,0 @@
-MLT is an open source multimedia framework, designed and developed for
-television broadcasting. It provides a toolkit for broadcasters, video
-editors, media players, transcoders, web streamers and many more types
-of applications. The functionality of the system is provided via an
-assortment of ready to use tools, XML authoring components, and an
-extensible plug-in based API.
-
-Optional dependencies are qt5, ladspa_sdk, frei0r, swfdec and jack-rack.
-
-The build script autodetect language interpreters on your system
-and build the relative bindings.
diff --git a/multimedia/mlt/doinst.sh b/multimedia/mlt/doinst.sh
deleted file mode 100644
index a069af7fb1..0000000000
--- a/multimedia/mlt/doinst.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-config() {
- NEW="$1"
- OLD="$(dirname $NEW)/$(basename $NEW .new)"
- # If there's no config file by that name, mv it over:
- if [ ! -r $OLD ]; then
- mv $NEW $OLD
- elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
- # toss the redundant copy
- rm $NEW
- fi
- # Otherwise, we leave the .new copy for the admin to consider...
-}
-
-if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
-fi
-
-if [ -x /usr/bin/update-mime-database ]; then
- /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
-fi
diff --git a/multimedia/mlt/mlt.SlackBuild b/multimedia/mlt/mlt.SlackBuild
deleted file mode 100644
index f2f9273682..0000000000
--- a/multimedia/mlt/mlt.SlackBuild
+++ /dev/null
@@ -1,217 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for mlt.
-
-# Written by stormtracknole - stormtracknole@gmail.com
-# Modified by Erik Hanson (erik@slackbuilds.org) with
-# help from Jonathan Larsen (agentc0re@learnix.net)
-# Maintatiner: Edward W. Koenig <kingbeowulf@gmail.com>
-#
-# Feb 16, 2010 - Modified the script and defined the $PYTHON variable
-# outside of the if statement because it was causing issues with
-# the other if statement that also relies on it's answer.
-# - Fixed the second PYTHON if statement that finds the site package
-# directory. Added parentheses around the part that cd's into the
-# python swig src to copy the files to the site packages so that it
-# would interfere with the CWD before it
-#
-# +---------------------------------------+
-# Mar 3rd, 2010
-# *Version upgrade to 0.5.2
-# *fixed the "strip" for bash 4
-# compatability
-# +---------------------------------------+
-# Sept 12, 2010
-# *Version upgrade to 0.5.6
-# *Bug fixes and enhancements added
-# +---------------------------------------+
-# May 16, 2011
-# *Version upgrade to 0.7.2
-# +---------------------------------------+
-# Dec 14, 2011
-# *Version upgrade to 0.7.6
-# *Bug fixes
-# +---------------------------------------+
-# Jul 2, 2012
-# *Version upgrade to 0.8.0
-# *Bug fixes
-# +---------------------------------------+
-# Apr 2, 2013
-# *Version upgrade to 0.8.8
-# *Added frei0r as a dependency
-# +---------------------------------------+
-# Jun 9, 2015
-# *Version upgrade to 0.9.6
-# *Fixed lua portion of the code
-# thanks to John Vogel.
-# +---------------------------------------+
-# 20-MAR-2016 new maintainer, version update to 6.0.0
-# 11-OCT-2016 version update
-# 22-OCT-2016 add qt5 support, bug fixes/addenda (Larry Hajali)
-# 29-JAN-2017 version update
-# 16-APR-2017 Compiling with vdpau is no longer supported ffmpeg-3.x
-# 08-AUG-2018 version update, remove qt5 patch
-# 16-APR-2019 version update
-# 14-JUL-2019 version update
-
-PRGNAM=mlt
-VERSION=${VERSION:-6.16.0}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-# Autodetect which SWIG Languages bindings to build
-# according to what's installed on the system:
-if [ -f "$(which javac)" ]; then java="java"; else java=""; fi
-if [ -f "$(which lua)" ]; then lua="lua"; else lua=""; fi
-if [ -f "$(which perl)" ]; then perl="perl"; else perl=""; fi
-if [ -f "$(which php)" ]; then php="php"; else php=""; fi
-if [ -f "$(which python)" ]; then python="python"; else python=""; fi
-if [ -h "$(which tclsh)" ]; then tcl="tcl"; else tcl=""; fi
-if [ -f "$(which csharp)" ]; then csharp="csharp"; else csharp=""; fi
-if [ -f "$(which ruby)" ]; then ruby="ruby"; else ruby=""; fi
-
-# Use qt5 if present, otherwise system default
-if pkg-config --exists Qt5 ; then
- qt="--qt-libdir=$(pkg-config Qt5 --variable=libdir)
- --qt-includedir=$(pkg-config Qt5 --variable=headerdir)"
-else
- qt="--qt-libdir=$(pkg-config Qt --variable=libdir)
- --qt-includedir=$(pkg-config Qt --variable=headerdir)"
-fi
-
-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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --disable-debug \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --enable-gpl \
- --enable-gpl3 \
- --luma-compress \
- --enable-motion-est \
- $qt \
- --swig-languages="$java $lua $perl $php $python $ruby $tcl $csharp" \
- --build=$ARCH-slackware-linux
-
-# qt5 fixup thanks to AlienBOB!
-sed -i -e 's/CXXFLAGS :=/CXXFLAGS := --std=c++11/' src/modules/qt/Makefile
-
-make clean
-CFLAGS="$SLKCFLAGS" CXXFLAGS="$SLKCFLAGS" make
-make install DESTDIR=$PKG
-
-# Install built bindings
-if [ "$lua" ]; then
- ( cd $TMP/$PRGNAM-$VERSION/src/swig/lua
- install -D -m 0755 mlt.so $PKG/$(pkg-config --variable INSTALL_CMOD lua)/mlt.so
- install -D -m 0644 play.lua $PKG/usr/doc/$PRGNAM-$VERSION/play.lua
- )
-fi
-if [ "$perl" ]; then
- ( cd $TMP/$PRGNAM-$VERSION/src/swig/perl
- install -D -m 0644 mlt.pm $PKG/usr/share/perl5/mlt.pm
- install -D -m 0755 play.pl $PKG/usr/share/perl5/play.pl
- install -D -m 0755 blib/arch/auto/mlt/mlt.so \
- $PKG/usr/lib$LIBDIRSUFFIX/perl5/auto/mlt/mlt.so
- install -D -m 0644 mlt.bs \
- $PKG/usr/lib$LIBDIRSUFFIX/perl5/auto/mlt/mlt.bs
- )
-fi
-if [ "$php" ]; then
- ( cd $TMP/$PRGNAM-$VERSION/src/swig/php
- install -D -m 0755 mlt.so $PKG/usr/lib$LIBDIRSUFFIX/php/extensions/mlt.so
- install -D -m 0644 play.php $PKG/usr/doc/$PRGNAM-$VERSION/play.php
- mkdir -p $PKG/etc/php.d
- cat > $PKG/etc/php.d/$PRGNAM.ini.new << EOF
-; Enable mlt extension module
-; extension=$PRGNAM.so
-EOF
- )
-fi
-if [ "$python" ]; then
- PYTHONSITEPKG=$(python -c "import sys, os; print os.path.join('/usr/lib${LIBDIRSUFFIX}', 'python%s' % sys.version[:3], 'site-packages')")
- ( cd $TMP/$PRGNAM-$VERSION/src/swig/python
- install -D -m 0755 _mlt.so $PKG/$PYTHONSITEPKG/_mlt.so
- install -D -m 0755 mlt.py $PKG/$PYTHONSITEPKG/mlt.py
- install -D -m 0755 play.py $PKG/usr/doc/$PRGNAM-$VERSION/play.py
- )
-fi
-if [ "$ruby" ]; then
- ( cd $TMP/$PRGNAM-$VERSION/src/swig/ruby
- install -D -m 0755 mlt.so \
- $PKG$(ruby -e 'print RbConfig::CONFIG["sitearchdir"]')/mlt.so
- install -D -m 0755 play.rb $PKG/usr/doc/$PRGNAM-$VERSION/play.rb
- install -D -m 0755 thumbs.rb $PKG/usr/doc/$PRGNAM-$VERSION/thumbs.rb
- )
-fi
-if [ "$tcl" ]; then
- ( cd $TMP/$PRGNAM-$VERSION/src/swig/tcl
- . /usr/lib$LIBDIRSUFFIX/tclConfig.sh
- install -D -m 0755 mlt.so \
- $PKG/usr/lib$LIBDIRSUFFIX/tcl$TCL_MAJOR_VERSION/$TCL_VERSION/mlt.so
- install -D -m 0755 play.tcl $PKG/usr/doc/$PRGNAM-$VERSION/play.tcl
- )
-fi
-
-# todo: java, csharp
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS ChangeLog NEWS COPYING README GPL $PKG/usr/doc/$PRGNAM-$VERSION
-cat src/modules/motion_est/README > $PKG/usr/doc/$PRGNAM-$VERSION/README.motion_est
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-if [ "$php" ]; then
- echo "config etc/php.d/$PRGNAM.ini.new" >> $PKG/install/doinst.sh
-fi
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/mlt/mlt.info b/multimedia/mlt/mlt.info
deleted file mode 100644
index becf041057..0000000000
--- a/multimedia/mlt/mlt.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="mlt"
-VERSION="6.16.0"
-HOMEPAGE="https://mltframework.org/"
-DOWNLOAD="https://downloads.sourceforge.net/mlt/mlt-6.16.0.tar.gz"
-MD5SUM="e3872267232aae89f5182fd567be2596"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="ffmpeg libdv libquicktime"
-MAINTAINER="Edward W. Koenig"
-EMAIL="kingbeowulf@gmail.com"
diff --git a/multimedia/mlt/slack-desc b/multimedia/mlt/slack-desc
deleted file mode 100644
index 4ddf41c733..0000000000
--- a/multimedia/mlt/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-mlt: mlt (Open source multimedia framework)
-mlt:
-mlt: MLT is an open source multimedia framework, designed and developed
-mlt: for television broadcasting. It provides a toolkit for broadcasters,
-mlt: video editors, media players, transcoders, web streamers and many
-mlt: more types of applications. The functionality of the system is
-mlt: provided via an assortment of ready to use tools, XML authoring
-mlt: components, and an extensible plug-in based API.
-mlt:
-mlt: Homepage: https://mltframework.org/
-mlt:
diff --git a/multimedia/mozplugger/mozplugger.SlackBuild b/multimedia/mozplugger/mozplugger.SlackBuild
index a3a47d2101..64e70cd870 100644
--- a/multimedia/mozplugger/mozplugger.SlackBuild
+++ b/multimedia/mozplugger/mozplugger.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mozplugger
@@ -21,26 +21,36 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mozplugger
VERSION=${VERSION:-2.1.6}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -105,4 +115,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mozplugger/mozplugger.info b/multimedia/mozplugger/mozplugger.info
index 1071e2a11e..9762dbd8d8 100644
--- a/multimedia/mozplugger/mozplugger.info
+++ b/multimedia/mozplugger/mozplugger.info
@@ -1,7 +1,7 @@
PRGNAM="mozplugger"
VERSION="2.1.6"
HOMEPAGE="http://mozplugger.mozdev.org/"
-DOWNLOAD="http://mozplugger.mozdev.org/files/mozplugger-2.1.6.tar.gz"
+DOWNLOAD="http://attic-distfiles.pld-linux.org/distfiles/by-md5/a/b/abb42f3c3c2f3a940c1252a83f254116/mozplugger-2.1.6.tar.gz"
MD5SUM="abb42f3c3c2f3a940c1252a83f254116"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/multimedia/mp3fm/README b/multimedia/mp3fm/README
index ca9b906ab6..9aa1e80f3f 100644
--- a/multimedia/mp3fm/README
+++ b/multimedia/mp3fm/README
@@ -1,12 +1,13 @@
-"MP3fm" stands for "MP3 Folder Making app" which AUTOMATICALLY Pack Songs
-into folders according to user choice from
+"MP3fm" stands for "MP3 Folder Making app" which automatically
+organizes songs into folders according to user choice from:
+
TITLE/ARTIST/ALBUM/YEAR/DURATION/COMMENT.
-Features :
-PACK : Move songs into folders based on property choosen by
+Features:
+PACK: Move songs into folders based on property chosen by
user from Album(Movie)/Artist/Year/Comments/Title/Duration
-UNPACK : Move songs into choosen folder from already existing folders inside it
-UPDATE : Update the Properties of all the songs(ID3 metadata) present in the
- choosen folder
-GENERATE LOG : LOG file is created after every operation which helps in mapping
- new song location
+UNPACK: Move songs into chosen folder from existing folders inside it
+UPDATE: Update the Properties of all the songs(ID3 metadata) present in
+ the chosen folder
+GENERATE LOG: LOG file is created after every operation which helps in
+ mapping new song location
diff --git a/multimedia/mp3fm/mp3fm.SlackBuild b/multimedia/mp3fm/mp3fm.SlackBuild
index 6334d6ff97..c80436e523 100644
--- a/multimedia/mp3fm/mp3fm.SlackBuild
+++ b/multimedia/mp3fm/mp3fm.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mp3fm
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mp3fm
VERSION=${VERSION:-1.0.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -89,4 +99,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mp3fs/mp3fs.SlackBuild b/multimedia/mp3fs/mp3fs.SlackBuild
index dae3a0cca8..90e59aaee3 100644
--- a/multimedia/mp3fs/mp3fs.SlackBuild
+++ b/multimedia/mp3fs/mp3fs.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mp3fs
@@ -24,10 +24,13 @@
# |-----------------------------------------------------------------| #
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mp3fs
VERSION=${VERSION:-0.91}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -37,7 +40,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -100,5 +110,5 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mp3fs/mp3fs.info b/multimedia/mp3fs/mp3fs.info
index ae6940d21a..d9694603e2 100644
--- a/multimedia/mp3fs/mp3fs.info
+++ b/multimedia/mp3fs/mp3fs.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/khenriks/mp3fs/releases/download/v0.91/mp3fs-0.91.t
MD5SUM="8b1e7543114c2bcc5b8eb9562e15c909"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="lame libvorbisidec"
+REQUIRES="libvorbisidec"
MAINTAINER="Oleg Deordiev"
EMAIL="admin@ifconfig.com.ua"
diff --git a/multimedia/mpgtx/README b/multimedia/mpgtx/README
index c1d06b1feb..cd8657f1a2 100644
--- a/multimedia/mpgtx/README
+++ b/multimedia/mpgtx/README
@@ -1,4 +1,5 @@
-mpgtx a command line MPEG audio/video/system file toolbox, that slices and
-joins audio and video files, including MPEG1, MPEG2 and MP3. mpgtx was
-designed with the good old Unix philosophy in mind: do few but do it well
-and provide end user an austary yet powerful command line interface.
+mpgtx a command line MPEG audio/video/system file toolbox, that slices
+and joins audio and video files, including MPEG1, MPEG2 and MP3. mpgtx
+was designed with the good old Unix philosophy in mind: do few but
+do it well and provide end user an austary yet powerful command line
+interface.
diff --git a/multimedia/mpgtx/mpgtx.SlackBuild b/multimedia/mpgtx/mpgtx.SlackBuild
index 97919bc785..e68de22d31 100644
--- a/multimedia/mpgtx/mpgtx.SlackBuild
+++ b/multimedia/mpgtx/mpgtx.SlackBuild
@@ -1,30 +1,40 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mpgtx
# Written by Matteo Bernardini <ponce@slackbuilds.org>
# Modified by Erik Hanson <erik@slackbuilds.org>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mpgtx
VERSION=${VERSION:-1.3.1}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
@@ -84,4 +94,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mplayer-codecs32/mplayer-codecs32.SlackBuild b/multimedia/mplayer-codecs32/mplayer-codecs32.SlackBuild
index 14f6cdbee5..62634094b9 100644
--- a/multimedia/mplayer-codecs32/mplayer-codecs32.SlackBuild
+++ b/multimedia/mplayer-codecs32/mplayer-codecs32.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mplayer-codecs32
-# Copyright 2006-2013 Robby Workman, Northport, Alabama, USA
+# Copyright 2006-2013 Robby Workman, Tuscaloosa, Alabama, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mplayer-codecs32
VERSION=${VERSION:-20110131}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
case "${ARCH:-$( uname -m )}" in
i?86) ARCH=i586 ;;
@@ -33,7 +36,14 @@ case "${ARCH:-$( uname -m )}" in
*) ARCH=$( uname -m ) ;;
esac
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -71,4 +81,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
chown -R root:root .
find . -type f -exec chmod 644 {} \;
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mplayer-codecs64/mplayer-codecs64.SlackBuild b/multimedia/mplayer-codecs64/mplayer-codecs64.SlackBuild
index ca8351ecf8..451a879ceb 100644
--- a/multimedia/mplayer-codecs64/mplayer-codecs64.SlackBuild
+++ b/multimedia/mplayer-codecs64/mplayer-codecs64.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mplayer-codecs64
-# Copyright 2006-2013 Robby Workman, Northport, Alabama, USA
+# Copyright 2006-2013 Robby Workman, Tuscaloosa, Alabama, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mplayer-codecs64
VERSION=${VERSION:-20061022}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
case "$( uname -m )" in
i?86) ARCH=i586 ;;
@@ -33,7 +36,14 @@ case "$( uname -m )" in
*) ARCH=$( uname -m ) ;;
esac
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -76,4 +86,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
chown -R root:root .
find . -type f -exec chmod 644 {} \;
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mpv/README b/multimedia/mpv/README
index 3ae161a662..56ded2b4c9 100644
--- a/multimedia/mpv/README
+++ b/multimedia/mpv/README
@@ -1,40 +1,39 @@
-mpv
-===
-
mpv is a movie player based on MPlayer and mplayer2. It shares some
features with the former projects while introducing many more. It
supports a wide variety of video file formats, audio and video codecs,
and subtitle types.
-optional: docutils, jack, libbluray, libdvdnav,
- libfdk-aac, libuchardet, OpenAL, lua, mujs, oss, rubberband,
- SDL2, wayland, youtube-dl
+This SlackBuild provides support for most useful optional features.
+Some other optional features may be enabled by having the relevant
+packages installed; they will be autodetected at build time.
+These include:
+ jack, libuchardet, oss, rubberband, cudatoolkit, nv-codec-headers
-If docutils is not installed, the man pages will not be built/installed.
-This is the reason I have included docutils in both the `required` and
-`optional` lists. If you don't consider the man pages required, then the
-docutils package is optional, too. Building the man pages is
-recommended.
+Please note that CUDA based hardware acceleration requires mpv to be
+built with both the cudatoolkit and nv-codec-headers packages installed.
-If lua is not installed, much functionality will be lost. This is the
-reason I have included lua in both the `required` and `optional` lists.
-If you don't consider the functionality lua gives required, then the
-lua package is optional, too. Building with lua support is recommended.
+Since Pipewire is not configured as the default in Slackware,
+its use is disabled in this SlackBuild. To enable Pipewire, run the
+SlackBuild with the USE_PIPEWIRE environment variable set e.g.
+ USE_PIPEWIRE=yes sh mpv.SlackBuild
-Dependencies are autodetected. Some optional dependencies are disabled
-by default and may be enabled (see BUILD_OPTS). Optional dependencies
-that are enabled by default may be disabled (see BUILD_OPTS).
+Most dependencies are autodetected. Some optional dependencies are
+disabled by default and may be enabled via the BUILD_OPTS environment
+variable. Optional dependencies that are enabled by default may be
+disabled in the same way.
-BUILD_OPTS:
-To override the default for build options, set the shell variable
-BUILD_OPTS prior to or at build time. For example, to enable cdda and
-openal, which are disabled by default, and to build with four jobs in
-parallel, you could use the following:
+For example, to enable support for OpenAL and SDL2 (both disabled
+by default) as well as to disable javascript support (normally
+autodetected), you could run:
-~# BUILD_OPTS="--enable-cdda --enable-openal --jobs 4" sh mpv.SlackBuild
+BUILD_OPTS="-Dopenal=enabled -Dsdl2=enabled -Djavascript=disabled" \
+ sh mpv.SlackBuild
-The following list is meant as a note to myself of build options or
-optional dependencies currently unavailable via full Slackware
-installation and from SBo:
+Runtime support for youtube videos requires installation of youtube-dl
+(available from SBo) to be installed. Watch with something like:
+ mpv https://www.youtube.com/watch?v=mAFMJ1LnQu8
-vapoursynth, rsound
+To enable building with meson/ninja (recommended since waf build is
+to be deprecated), a patch is required to enable use of Slackware 15's
+older version of meson. Unfortunately this disables the ability to
+process configuration/building on Raspberry Pi.
diff --git a/multimedia/mpv/mpv.SlackBuild b/multimedia/mpv/mpv.SlackBuild
index f4957c9a36..028f18343b 100644
--- a/multimedia/mpv/mpv.SlackBuild
+++ b/multimedia/mpv/mpv.SlackBuild
@@ -1,8 +1,10 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mpv
# Copyright 2015 John Vogel Corning, NY USA
+# Copyright 2017,2018 (versions 0.25.0-0.29.1) Andreas Guldstrand
+# Copyright 2020-2023 Christoph Willing Brisbane Australia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +24,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mpv
-VERSION=${VERSION:-0.29.1}
+VERSION=${VERSION:-0.37.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,13 +40,15 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-# The SLKFLAGS aren't currently used. They do no harm and can
-# be left as a placeholder in case they are ever needed.
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
@@ -63,9 +70,14 @@ mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cp $CWD/waf-2.0.9 $PRGNAM-$VERSION/waf
-chmod +x $PRGNAM-$VERSION/waf
cd $PRGNAM-$VERSION
+
+# Needed for 15.0's older meson but disables RPI
+if [ "$(meson --version)" = "0.59.4" ]; then
+ echo "Using meson-0.59.4 for 15.0"
+ patch -p0 < $CWD/use_older_meson.diff
+fi
+
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -76,23 +88,34 @@ find -L . \
DOCS="Copyright LICENSE.GPL LICENSE.LGPL README.md RELEASE_NOTES VERSION"
MANUAL="DOCS/*.md DOCS/*.rst DOCS/*.txt"
-# This leaves an opening for build options.
+pipewire="-Dpipewire=disabled" ; [ "${USE_PIPEWIRE:-no}" != "no" ] && pipewire="-Dpipewire=auto"
+
+# This leaves an opening for additional build options.
+# See `meson configure` to see what's available.
BUILD_OPTS=${BUILD_OPTS:-""}
-PKG_CONFIG_PATH="/usr/lib${LIBDIRSUFFIX}/ffmpeg4/pkgconfig"
-export PKG_CONFIG_PATH
+PYVER=$(python3 -c 'import sys; print("%d.%d" % sys.version_info[:2])')
+export PYTHONPATH=/opt/python$PYVER/site-packages/
-# Setting CFLAGS and CXXFLAGS breaks configure.
-./waf configure \
+CFLAGS="$SLKCFLAGS -ldl" \
+CXXFLAGS="$SLKCFLAGS" \
+meson \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
- --confdir=/etc/$PRGNAM \
+ --sysconfdir=/etc \
--mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- $BUILD_OPTS
-
-./waf build
-./waf --destdir=$PKG install
+ -Dbuildtype=release \
+ -Dmanpage-build=enabled \
+ -Dlibmpv=true \
+ -Dhtml-build=enabled \
+ -Dcdda=enabled \
+ -Ddvdnav=enabled \
+ -Ddvbin=enabled \
+ $pipewire \
+ $BUILD_OPTS \
+ . build
+
+DESTDIR=$PKG ${NINJA:=ninja} -C build -v install
for f in $PKG/etc/mpv/*.conf ; do
mv $f{,.new}
@@ -115,6 +138,8 @@ mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/manual
for f in $MANUAL; do
cp -a $f $PKG/usr/doc/$PRGNAM-$VERSION/manual/
done
+cp -a $PKG/usr/share/doc/$PRGNAM/* $PKG/usr/doc/$PRGNAM-$VERSION
+rm -rf $PKG/usr/share/doc
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -122,4 +147,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mpv/mpv.info b/multimedia/mpv/mpv.info
index d811d661fc..4536eda712 100644
--- a/multimedia/mpv/mpv.info
+++ b/multimedia/mpv/mpv.info
@@ -1,12 +1,10 @@
PRGNAM="mpv"
-VERSION="0.29.1"
+VERSION="0.37.0"
HOMEPAGE="https://mpv.io/"
-DOWNLOAD="https://github.com/mpv-player/mpv/archive/v0.29.1/mpv-0.29.1.tar.gz \
- https://waf.io/waf-2.0.9"
-MD5SUM="2cd070c6aed980786177b7cb5b73664b \
- 3bc28bcd4868999798a6d2675211e23f"
+DOWNLOAD="https://github.com/mpv-player/mpv/archive/v0.37.0/mpv-0.37.0.tar.gz"
+MD5SUM="54bd6864cc831f1fee6dee693a0421eb"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="docutils ffmpeg4 lua"
-MAINTAINER="Andreas Guldstrand"
-EMAIL="andreas.guldstrand@gmail.com"
+REQUIRES="libass libplacebo luajit mujs"
+MAINTAINER="Christoph Willing"
+EMAIL="chris.willing@linux.com"
diff --git a/multimedia/mpv/use_older_meson.diff b/multimedia/mpv/use_older_meson.diff
new file mode 100644
index 0000000000..856b72ee55
--- /dev/null
+++ b/multimedia/mpv/use_older_meson.diff
@@ -0,0 +1,35 @@
+--- meson.build.orig 2023-07-24 03:10:36.000000000 +1000
++++ meson.build 2023-07-24 11:13:30.945000000 +1000
+@@ -2,7 +2,7 @@
+ 'c',
+ license: ['GPL2+', 'LGPL2.1+'],
+ version: files('./VERSION'),
+- meson_version: '>=0.62.0',
++ meson_version: '>=0.59.4',
+ default_options: [
+ 'buildtype=debugoptimized',
+ 'b_lundef=false',
+@@ -1222,8 +1222,9 @@
+ features += {'gl': true}
+ endif
+
+-rpi = dependency('/opt/vc/lib/pkgconfig/brcmegl.pc', 'brcmegl', required: get_option('rpi'))
+-features += {'rpi': gl_allowed and rpi.found()}
++#rpi = dependency('/opt/vc/lib/pkgconfig/brcmegl.pc', 'brcmegl', required: get_option('rpi'))
++#features += {'rpi': gl_allowed and rpi.found()}
++features += {'rpi': false}
+ if features['rpi']
+ dependencies += rpi
+ features += {'gl': true}
+@@ -1386,8 +1387,9 @@
+ features['rpi'],
+ error_message: 'rpi was not found!',
+ )
+-rpi_mmal = dependency('/opt/vc/lib/pkgconfig/mmal.pc', 'mmal', required: rpi_mmal_opt)
+-features += {'rpi-mmal': rpi_mmal.found()}
++#rpi_mmal = dependency('/opt/vc/lib/pkgconfig/mmal.pc', 'mmal', required: rpi_mmal_opt)
++#features += {'rpi-mmal': rpi_mmal.found()}
++features += {'rpi-mmal': false}
+ if features['rpi-mmal']
+ dependencies += rpi_mmal
+ sources += files('video/out/opengl/hwdec_rpi.c',
diff --git a/multimedia/mtpfs/README b/multimedia/mtpfs/README
index 5cc44cc33b..8324c024ff 100644
--- a/multimedia/mtpfs/README
+++ b/multimedia/mtpfs/README
@@ -10,4 +10,4 @@ Quickstart:
- Set media device to MTP mode, if necessary
- Plug media device into USB port
- Run mtpfs with the mount point as an argument (e.g. "mtpfs ~/mtp")
-- See /usr/doc/mtpfs-*/README and "mtpfs --help" output for more information
+- See /usr/doc/mtpfs-*/README and "mtpfs --help" for more information
diff --git a/multimedia/mtpfs/mtpfs.SlackBuild b/multimedia/mtpfs/mtpfs.SlackBuild
index 81811df43d..8736948bd1 100644
--- a/multimedia/mtpfs/mtpfs.SlackBuild
+++ b/multimedia/mtpfs/mtpfs.SlackBuild
@@ -1,15 +1,21 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mtpfs
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20230103 bkw: updated for v1.1+20210514_d228a21. upstream hasn't
+# done a release, but there's some useful bugfixes in git.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mtpfs
-VERSION=${VERSION:-1.1}
+VERSION=${VERSION:-1.1+20210514_d228a21}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -19,7 +25,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -40,14 +50,13 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/${PRGNAM}-$VERSION.tar.gz
+tar xvf $CWD/${PRGNAM}-$VERSION.tar.xz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+autoreconf -if
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -69,4 +78,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/mtpfs/mtpfs.info b/multimedia/mtpfs/mtpfs.info
index 8694177336..b59e0b241b 100644
--- a/multimedia/mtpfs/mtpfs.info
+++ b/multimedia/mtpfs/mtpfs.info
@@ -1,10 +1,10 @@
PRGNAM="mtpfs"
-VERSION="1.1"
+VERSION="1.1+20210514_d228a21"
HOMEPAGE="https://www.adebenham.com/mtpfs/"
-DOWNLOAD="https://www.adebenham.com/files/mtp/mtpfs-1.1.tar.gz"
-MD5SUM="a299cadca336e6945b7275b44c6e8d27"
+DOWNLOAD="https://slackware.uk/~urchlay/src/mtpfs-1.1+20210514_d228a21.tar.xz"
+MD5SUM="90aaaf870b05f21efa740aec3a2b5d2d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/munt/README b/multimedia/munt/README
index e8d468e966..87eb3d3d6f 100644
--- a/multimedia/munt/README
+++ b/multimedia/munt/README
@@ -4,6 +4,19 @@ Munt is a multi-platform software synthesizer emulating (somewhat
inaccurately) pre-GM MIDI devices such as the Roland MT-32, CM-32L,
CM-64 and LAPC-1.
-ROMS for these devices are not included.
+A few ROMS for these devices are included: the v1.07 ROM for the MT-32
+and the v1.02 ROM for the CM-32L. The applications have been patched
+to use the packaged ROMs by default, though you can use other ROMs
+easily enough.
-This will install both the desktop application and the shared library.
+This will install the desktop applications (mt32emu-qt and xmt32), the
+command-line tools (mt32emu-smf2wav and mt32d), the shared library,
+and the headers.
+
+Optional dependency: jack (autodetected). If jack is present,
+munt will be built with support for it. If this package is built
+with jack, it uses POSIX filesystem capabilities to execute with
+elevated privileges (required for realtime audio processing). This
+may be considered a security/stability risk. Please read
+http://www.slackbuilds.org/caps/ for more information. To disable
+capabilities, pass SETCAP=no to the script.
diff --git a/multimedia/munt/doinst.sh b/multimedia/munt/doinst.sh
new file mode 100644
index 0000000000..3e5691a052
--- /dev/null
+++ b/multimedia/munt/doinst.sh
@@ -0,0 +1,9 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/munt/interleave.c b/multimedia/munt/interleave.c
new file mode 100644
index 0000000000..20b666ae12
--- /dev/null
+++ b/multimedia/munt/interleave.c
@@ -0,0 +1,93 @@
+/* interleave.c - B. Watson, April 2023, WTFPL licensed.
+
+ Given two files of the same size, creates a 3rd file whose contents are:
+
+ file 1, byte 1
+ file 2, byte 1
+ file 1, byte 2
+ file 2, byte 2
+ file 1, byte 3
+ file 2, byte 3
+ ...etc.
+
+ If file1 contains "foo" and file2 contains "bar", the output will
+ be "fboaor". The output is always twice the size of one of the
+ input files (or, the same size as both input files combined).
+
+ Output file is silently overwritten if it already exists.
+
+ Exit status is 0 for success, non-zero for failure, with a hopefully
+ useful error message.
+
+ Compile me with:
+ gcc -Wall -O2 -o interleave interleave.c
+
+ This could be done more efficiently and without an artificial file
+ size limit, but the current implementation reads everything into a
+ statically sized buffer for simpliticy.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define MAX_SIZE (1024 * 1024)
+
+unsigned char blob1[MAX_SIZE + 1], blob2[MAX_SIZE + 1], output[MAX_SIZE * 2 + 1];
+
+void die(const char *msg) {
+ if(msg)
+ fprintf(stderr, "interleave: %s\n", msg);
+ else
+ perror("interleave");
+ exit(1);
+}
+
+int read_file(const char *fname, unsigned char *dest) {
+ int bytes;
+ FILE *f = fopen(fname, "rb");
+
+ if(!f) die(NULL);
+ if( (bytes = fread(dest, 1, MAX_SIZE + 1, f)) < 1 ) die(NULL);
+ fclose(f);
+
+ /* fprintf(stderr, "read %d bytes from %s\n", bytes, fname); */
+
+ return bytes;
+}
+
+void write_output(const char *fname, int bytes) {
+ int i;
+ unsigned char *p = output;
+ FILE *f = fopen(fname, "wb");
+
+ if(!f) die(NULL);
+
+ for(i = 0; i < bytes; i++) {
+ *p++ = blob1[i];
+ *p++ = blob2[i];
+ }
+
+ if( (fwrite(output, 1, bytes * 2, f)) < (bytes * 2) ) die(NULL);
+
+ fclose(f);
+}
+
+int main(int argc, char **argv) {
+ int size1, size2;
+
+ if(argc != 4)
+ die("usage:\n\tinterleave <input1> <input2> <output>");
+
+ size1 = read_file(argv[1], blob1);
+ size2 = read_file(argv[2], blob2);
+
+ if(size1 > MAX_SIZE)
+ die("input file too big (max 1MB each)");
+ if(size1 != size2)
+ die("input files are not the same size");
+
+ write_output(argv[3], size1);
+
+ return 0;
+}
diff --git a/multimedia/munt/munt.SlackBuild b/multimedia/munt/munt.SlackBuild
index 968a51e05b..96d9246741 100644
--- a/multimedia/munt/munt.SlackBuild
+++ b/multimedia/munt/munt.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for munt
# Copyright 2017 Dugan Chen Canada
+# Copyright 2023 B. Watson
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +23,29 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230410 bkw:
+# - new maintainer.
+# - update for v2.7.0 (sourceforge => github).
+# - include (some of) the ROMs in the package.
+# - add the mt32emu_alsadrv binaries (mt32d, xmt32).
+# - patch everything to use /usr/share/munt/roms/ as default path.
+# user can still change this in the UI as needed, I just don't want
+# it defaulting to ~/roms/ (need this so we can package the ROMs).
+# - add doinst.sh, since the new version has icons and a .desktop.
+# - add setcap stuff for jack.
+# - update README to document jack optional dep and the fact that the
+# ROMs are included. also mention the actual binary names, since
+# neither one's called "munt".
+
+# TODO someday: man pages.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=munt
-VERSION=${VERSION:-2.2.0}
+VERSION=${VERSION:-2.7.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +55,18 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+# 20230411 bkw: The various components have separate version numbers,
+# and it looks like upstream's tags are named after whichever
+# component was released last. The mt32emu_qt_1_11_1 tag includes
+# the previous release (2.7.0) of mt32emu. This is kinda confusing,
+# but whatever.
+GIT_TAG=${GIT_TAG:-mt32emu_qt_1_11_1}
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -59,16 +90,30 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM-$GIT_TAG
+tar xvf $CWD/$PRGNAM-$GIT_TAG.tar.gz
+cd $PRGNAM-$GIT_TAG
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+# 20230411 bkw: Patch mt32emu-qt, mt32emu-smf2wav, mt32d, xmt32 to
+# look for ROMs in a systemwide directory (which is where we'll place
+# the ROMs, below).
+patch -p1 < $CWD/system_rom_path.diff
+# Allow mt32d, xmt32 to build in-tree, without the library already
+# installed. Also apply our SLKCFLAGS.
+sed -i \
+ -e "s,-O2,$SLKCFLAGS -I../build/mt32emu/include," \
+ -e "s,-lmt32emu,-L../build/mt32emu -lmt32emu," \
+ mt32emu_alsadrv/Makefile
+
+# 20230411 bkw: fix desktop-file-validate nitpick (a "hint", not an error).
+sed -i '/^Categories/s,$,Audio;,' mt32emu_qt/res/mt32emu-qt.desktop
+
+# 20230411 bkw: cmake accepts and ignores (!) -DCMAKE_INSTALL_DOCDIR.
+# Also there's no way to disable jack, if it's autodetected.
mkdir -p build
cd build
cmake \
@@ -77,22 +122,121 @@ cd build
-DCMAKE_INSTALL_PREFIX=/usr \
-DLIB_INSTALL_DIR=/usr/lib${LIBDIRSUFFIX} \
-DCMAKE_BUILD_TYPE=Release .. \
- -Dlibmt32emu_SHARED=ON
+ -Dlibmt32emu_SHARED=ON
make
- make install DESTDIR=$PKG
+ make install/strip DESTDIR=$PKG
cd ..
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+# This stuff isn't built by cmake. It's considered outdated, but at least
+# the mt32d binary might be useful for a headless/console-only system.
+make -C mt32emu_alsadrv
+install -s -m0755 mt32emu_alsadrv/{mt32d,xmt32} $PKG/usr/bin
+
+### Extract and install the ROMs.
+
+PKGROMS=$PKG/usr/share/$PRGNAM/roms
+mkdir -p $PKGROMS
+
+# The ROM zip files have at least 2 possible names each, depending on
+# what was used to download them. The URLs have spaces in them. The
+# spec says spaces have to be hex-escaped as %20. Plus, we can't have
+# spaces in the URLs in our .info files anyway: it would break every
+# tool that parses .info files, plus it would prevent curl from being
+# able to download them (it refuses to accept spaces in URLs).
+
+# So DOWNLOAD has the %20's in the URLs. But wget will "helpfully"
+# transform them back into spaces. On the other hand, "curl -O"
+# will save them as-is. I don't know what various browsers do, but
+# hopefully I've covered it here...
+ok=0
+for i in \
+ 'Roland - CM32L - CONTROL.1989-12-05.v1.02.ROM.zip' \
+ 'Roland%20-%20CM32L%20-%20CONTROL.1989-12-05.v1.02.ROM.zip'
+do
+ if [ -e "$CWD/$i" ]; then
+ unzip -p "$CWD/$i" \
+ "Roland - CM32L - CONTROL.1989-12-05.v1.02.ROM" \
+ > $PKGROMS/CM32L_CONTROL.ROM
+ ok=1
+ break
+ fi
+done
+
+[ "$ok" = "0" ] && echo "*** can't find CM32L control ROM zip file" && exit 1
+
+ok=0
+for i in \
+ 'Roland - CM32L - PCM Maskrom.ROM.zip' \
+ 'Roland%20-%20CM32L%20-%20PCM%20Maskrom.ROM.zip'
+do
+ if [ -e "$CWD/$i" ]; then
+ unzip -p "$CWD/$i" \
+ "Roland - CM32L - PCM Maskrom.ROM" \
+ > $PKGROMS/CM32L_PCM.ROM
+ ok=1
+ break
+ fi
+done
+
+[ "$ok" = "0" ] && echo "*** can't find CM32L PCM ROM zip file" && exit 1
+
+# We need 3 files from this one, and 2 of them have to be
+# interleaved... wrote a little tool to do the job. Only
+# including the v1.0.7 control ROM; it's the newest version
+# in the zip file. Also, in case something saves the file with
+# the ( character hex-escaped, allow for it.
+ok=0
+for i in \
+ 'Roland MT32 (various OS _ extra ROMs.zip' \
+ 'Roland%20MT32%20(various%20OS%20_%20extra%20ROMs.zip' \
+ 'Roland%20MT32%20%28various%20OS%20_%20extra%20ROMs.zip'
+do
+ if [ -e "$CWD/$i" ]; then
+ unzip -p "$CWD/$i" r15449121.ic37.bin > $PKGROMS/MT32_PCM.ROM
+ unzip "$CWD/$i" mt32_1.0.7.ic26.bin mt32_1.0.7.ic27.bin
+
+ # The ROMs are stored on 2 chips, one with the even-numbered
+ # addresses and one with the odd. In theory, munt can use them
+ # as-is (the source called them "Mux0" and "Mux1" ROMs), but
+ # I couldn't get that to work. Easy enough to merge them together.
+ gcc -Wall -O2 -o interleave "$CWD/interleave.c"
+ ./interleave mt32_1.0.7.ic27.bin mt32_1.0.7.ic26.bin $PKGROMS/MT32_CONTROL.ROM
+
+ ok=1
+ break
+ fi
+done
+
+[ "$ok" = "0" ] && echo "*** can't find MT32 ROM zip file" && exit 1
+
+### ROMs extracted/installed, back to regular SBo style stuffs.
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
mkdir -p $PKG/usr/doc
-mv $PKG/usr/share/doc/$PRGNAM $PKG/usr/doc/$PRGNAM-$VERSION
-rm -rf $PKG/usr/share
-cp -a README.txt $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+mv $PKG/usr/share/doc/$PRGNAM $PKGDOC
+rm -rf $PKG/usr/share/doc
+cp -a README* $PKGDOC
+mkdir -p $PKGDOC/mt32emu_alsadrv
+cp -a mt32emu_alsadrv/*.txt $PKGDOC/mt32emu_alsadrv
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+WITHJACK=WITHOUT
+
+# Only add capability stuff if not disabled, and if JACK support was
+# included.
+if pkg-config --exists jack && [ "${SETCAP:-yes}" = "yes" ]; then
+ WITHJACK=WITH
+ cat $CWD/setcap.sh >> $PKG/install/doinst.sh
+ # Only allow execution by audio group
+ chown root:audio $PKG/usr/bin/mt32emu-qt
+ chmod 0750 $PKG/usr/bin/mt32emu-qt
+fi
+
+sed "s,@WITHJACK@,$WITHJACK," < $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/munt/munt.info b/multimedia/munt/munt.info
index c1da8ac460..4c19c0f664 100644
--- a/multimedia/munt/munt.info
+++ b/multimedia/munt/munt.info
@@ -1,10 +1,16 @@
PRGNAM="munt"
-VERSION="2.2.0"
-HOMEPAGE="http://munt.sourceforge.net/"
-DOWNLOAD="https://downloads.sourceforge.net/project/munt/munt/2.2.0/munt-2.2.0.tar.gz"
-MD5SUM="627a5c7a61c40a4e27025f6a6b912b63"
+VERSION="2.7.0"
+HOMEPAGE="https://github.com/munt/munt/"
+DOWNLOAD="https://github.com/munt/munt/archive/mt32emu_qt_1_11_1/munt-mt32emu_qt_1_11_1.tar.gz \
+ http://dbwbp.com/synthbin/Roland%20MT32%20(various%20OS%20_%20extra%20ROMs.zip \
+ http://dbwbp.com/synthbin/Roland%20-%20CM32L%20-%20CONTROL.1989-12-05.v1.02.ROM.zip \
+ http://dbwbp.com/synthbin/Roland%20-%20CM32L%20-%20PCM%20Maskrom.ROM.zip"
+MD5SUM="5a167d0a101d3781a751b21e3e7f46f2 \
+ 1635fd528b41fefd262e4b075cb583c0 \
+ a84cd91f8959bcae86ba06661ce4791d \
+ 8278cfbb6c6d55edb39168182ce322ed"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="qt5"
-MAINTAINER="Dugan Chen"
-EMAIL="thedoogster [at] gmail [dot] com"
+REQUIRES=""
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/munt/setcap.sh b/multimedia/munt/setcap.sh
new file mode 100644
index 0000000000..460ce23b7f
--- /dev/null
+++ b/multimedia/munt/setcap.sh
@@ -0,0 +1 @@
+[ -x /sbin/setcap ] && /sbin/setcap cap_ipc_lock,cap_sys_nice=ep usr/bin/mt32emu-qt
diff --git a/multimedia/munt/slack-desc b/multimedia/munt/slack-desc
index 4784a90509..61d27ea3e2 100644
--- a/multimedia/munt/slack-desc
+++ b/multimedia/munt/slack-desc
@@ -12,8 +12,8 @@ munt: Munt is a multi-platform software synthesizer emulating (somewhat
munt: inaccurately) pre-GM MIDI devices such as the Roland MT-32, CM-32L,
munt: CM-64 and LAPC-1.
munt:
-munt: http://munt.sourceforge.net/
-munt:
+munt: This package built @WITHJACK@ jack support.
munt:
munt:
+munt: http://munt.sourceforge.net/
munt:
diff --git a/multimedia/munt/system_rom_path.diff b/multimedia/munt/system_rom_path.diff
new file mode 100644
index 0000000000..3cc1e29338
--- /dev/null
+++ b/multimedia/munt/system_rom_path.diff
@@ -0,0 +1,85 @@
+diff -Naur munt-mt32emu_qt_1_11_1/mt32emu_alsadrv/README.txt munt-mt32emu_qt_1_11_1.patched/mt32emu_alsadrv/README.txt
+--- munt-mt32emu_qt_1_11_1/mt32emu_alsadrv/README.txt 2022-08-03 11:39:49.000000000 -0400
++++ munt-mt32emu_qt_1_11_1.patched/mt32emu_alsadrv/README.txt 2023-04-11 14:52:33.660273547 -0400
+@@ -29,7 +29,7 @@
+ mt32d and xmt32 will be installed to /usr/local/bin
+
+ Please ensure that the ROM files are installed in
+-/usr/share/mt32-rom-data
++/usr/share/munt/roms
+
+ If the ROM files are correctly installed yet the
+ program cannot open them, check the filenames (case sensitive)
+diff -Naur munt-mt32emu_qt_1_11_1/mt32emu_alsadrv/src/alsadrv.cpp munt-mt32emu_qt_1_11_1.patched/mt32emu_alsadrv/src/alsadrv.cpp
+--- munt-mt32emu_qt_1_11_1/mt32emu_alsadrv/src/alsadrv.cpp 2022-08-03 11:39:49.000000000 -0400
++++ munt-mt32emu_qt_1_11_1.patched/mt32emu_alsadrv/src/alsadrv.cpp 2023-04-11 14:54:40.209261637 -0400
+@@ -44,7 +44,7 @@
+ FILE *recwav_file = NULL;
+
+ #define PERC_CHANNEL 9
+-const char default_rom_dir[] = "/usr/share/mt32-rom-data/";
++const char default_rom_dir[] = "/usr/share/munt/roms/";
+
+ #include <mt32emu/mt32emu.h>
+
+diff -Naur munt-mt32emu_qt_1_11_1/mt32emu_alsadrv/src/console.cpp munt-mt32emu_qt_1_11_1.patched/mt32emu_alsadrv/src/console.cpp
+--- munt-mt32emu_qt_1_11_1/mt32emu_alsadrv/src/console.cpp 2022-08-03 11:39:49.000000000 -0400
++++ munt-mt32emu_qt_1_11_1.patched/mt32emu_alsadrv/src/console.cpp 2023-04-11 14:54:09.900264489 -0400
+@@ -139,7 +139,7 @@
+
+ printf("\n");
+ printf("-f romdir : Directory with ROM files to load\n"
+- " (default: '/usr/share/mt32-rom-data/')\n");
++ " (default: '/usr/share/munt/roms/')\n");
+ printf("-o romsearch : Search algorithm to use when loading ROM files:\n"
+ " (0 - try both but CM32-L first, 1 - CM32-L only,\n"
+ " 2 - MT-32 only, default: 0)\n");
+diff -Naur munt-mt32emu_qt_1_11_1/mt32emu_alsadrv/src/xmt32.cpp munt-mt32emu_qt_1_11_1.patched/mt32emu_alsadrv/src/xmt32.cpp
+--- munt-mt32emu_qt_1_11_1/mt32emu_alsadrv/src/xmt32.cpp 2022-08-03 11:39:49.000000000 -0400
++++ munt-mt32emu_qt_1_11_1.patched/mt32emu_alsadrv/src/xmt32.cpp 2023-04-11 14:53:38.143267478 -0400
+@@ -489,7 +489,7 @@
+
+ printf("\n");
+ printf("-f romdir : Directory with ROM files to load\n"
+- " (default: '/usr/share/mt32-rom-data/')\n");
++ " (default: '/usr/share/munt/roms/')\n");
+ printf("-o romsearch : Search algorithm to use when loading ROM files:\n"
+ " (0 - try both but CM32-L first, 1 - CM32-L only,\n"
+ " 2 - MT-32 only, default: 0)\n");
+diff -Naur munt-mt32emu_qt_1_11_1/mt32emu_qt/src/Master.cpp munt-mt32emu_qt_1_11_1.patched/mt32emu_qt/src/Master.cpp
+--- munt-mt32emu_qt_1_11_1/mt32emu_qt/src/Master.cpp 2022-08-03 11:39:49.000000000 -0400
++++ munt-mt32emu_qt_1_11_1.patched/mt32emu_qt/src/Master.cpp 2023-04-11 14:56:27.938251499 -0400
+@@ -583,20 +583,7 @@
+ }
+
+ QString Master::getDefaultROMSearchPath() {
+-#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)
+- QString defaultPath;
+- QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+- if (env.contains("USERPROFILE")) {
+- defaultPath = env.value("USERPROFILE");
+- } else if (env.contains("HOME")) {
+- defaultPath = env.value("HOME");
+- } else {
+- defaultPath = ".";
+- }
+- return defaultPath + "/roms/";
+-#else
+- return "./roms/";
+-#endif
++ return "/usr/share/munt/roms/";
+ }
+
+ void Master::loadSynthProfile(SynthProfile &synthProfile, QString name) {
+diff -Naur munt-mt32emu_qt_1_11_1/mt32emu_smf2wav/src/mt32emu-smf2wav.cpp munt-mt32emu_qt_1_11_1.patched/mt32emu_smf2wav/src/mt32emu-smf2wav.cpp
+--- munt-mt32emu_qt_1_11_1/mt32emu_smf2wav/src/mt32emu-smf2wav.cpp 2022-08-03 11:39:49.000000000 -0400
++++ munt-mt32emu_qt_1_11_1.patched/mt32emu_smf2wav/src/mt32emu-smf2wav.cpp 2023-04-11 14:56:27.938251499 -0400
+@@ -917,7 +917,7 @@
+
+ static bool loadROMs(MT32Emu::Service &service, const Options &options) {
+ const char *romDirNameUtf8 = options.romDir;
+- if (romDirNameUtf8 == NULL) romDirNameUtf8 = ".";
++ if (romDirNameUtf8 == NULL) romDirNameUtf8 = "/usr/share/munt/roms";
+ char *romDirName = g_filename_from_utf8(romDirNameUtf8, strlen(romDirNameUtf8), NULL, NULL, NULL);
+ GDir *romDir = g_dir_open(romDirName, 0, NULL);
+ if (NULL == romDir) {
diff --git a/multimedia/muse-sounds-manager/README b/multimedia/muse-sounds-manager/README
new file mode 100644
index 0000000000..ee837e9d76
--- /dev/null
+++ b/multimedia/muse-sounds-manager/README
@@ -0,0 +1,26 @@
+Muse Sounds Manager (Linux Muse Hub) is a new label of optional
+high quality playback instruments for MuseScore 4.
+​
+Painstakingly recorded and edited specifically for the custom and
+revolutionary playback engine that powers these applications,
+they are capable of rendering incredibly lifelike results which
+breathe realism and emotion into your compositions.
+
+The first releases from Muse Sounds cover the symphony orchestra
+and choral voices. Incredibly, these beautifully crafted
+instrument packs are available exclusively in Muse Hub
+completely free.​
+
+Notes:
+
+a) This is still beta software but does what is says in the box.
+ It runs only on x86_64 machines.
+
+b) Playing the "short preview" clips crashes the program,
+ solution is still under investigation.
+
+c) downloaded samples are placed in $HOME/.muse-sounds-manager,
+ additional data in $HOME/.local/share/MuseSampler,
+ don't forget to clean-up these is you uninstall.
+
+d) This software is not open source.
diff --git a/multimedia/muse-sounds-manager/doinst.sh b/multimedia/muse-sounds-manager/doinst.sh
new file mode 100644
index 0000000000..9b51b160f6
--- /dev/null
+++ b/multimedia/muse-sounds-manager/doinst.sh
@@ -0,0 +1,13 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -x /usr/bin/update-mime-database ]; then
+ /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/gnome/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/gnome >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/muse-sounds-manager/muse-sounds-manager.SlackBuild b/multimedia/muse-sounds-manager/muse-sounds-manager.SlackBuild
new file mode 100644
index 0000000000..b02fe6b2bd
--- /dev/null
+++ b/multimedia/muse-sounds-manager/muse-sounds-manager.SlackBuild
@@ -0,0 +1,96 @@
+#!/bin/bash
+
+# Slackware build script for muse-sounds-manager
+
+# Copyright 2024 Antonio Leal, Porto Salvo, Oeiras, Portugal
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=muse-sounds-manager
+VERSION=${VERSION:-1.1.0.587}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "x86_64" ] ; then
+ BASENAME=${BASENAME:-Muse_Sounds_Manager_Beta}
+else
+ echo "Package for $(uname -m) architecture is not available."
+ exit 1
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $PKG
+ar p $CWD/$BASENAME.deb data.tar.xz | tar xvJ
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+# find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+# | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+strip --strip-unneeded $PKG/opt/muse-sounds-manager/libServiceCore.so
+
+# Fix launcher
+sed -i '2d' $PKG/usr/share/applications/muse-sounds-manager.desktop
+sed -i '4i GenericName=Additional Sound Samples' $PKG/usr/share/applications/muse-sounds-manager.desktop
+sed -i '4i Comment=Create, play and print beautiful sheet music' $PKG/usr/share/applications/muse-sounds-manager.desktop
+sed -i 's|Categories=GNOME;Application;Network|Categories=AudioVideo|' $PKG/usr/share/applications/muse-sounds-manager.desktop
+
+# Make sure top-level perms are correct:
+chmod 0755 .
+chmod +x $PKG/opt/$PRGNAM/*.so
+chmod +x $PKG/opt/$PRGNAM/Muse.Client.Linux
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/muse-sounds-manager/muse-sounds-manager.info b/multimedia/muse-sounds-manager/muse-sounds-manager.info
new file mode 100644
index 0000000000..0f91267fb5
--- /dev/null
+++ b/multimedia/muse-sounds-manager/muse-sounds-manager.info
@@ -0,0 +1,10 @@
+PRGNAM="muse-sounds-manager"
+VERSION="1.1.0.587"
+HOMEPAGE="https://www.musehub.com/"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://muse-cdn.com/Muse_Sounds_Manager_Beta.deb"
+MD5SUM_x86_64="ce802c9d0706162ea5a569527a962cf8"
+REQUIRES=""
+MAINTAINER="Antonio Leal"
+EMAIL="antonioleal@yahoo.com"
diff --git a/multimedia/muse-sounds-manager/slack-desc b/multimedia/muse-sounds-manager/slack-desc
new file mode 100644
index 0000000000..305249a10a
--- /dev/null
+++ b/multimedia/muse-sounds-manager/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+muse-sounds-manager: muse-sounds-manager (MuseScore 4 optional high quality sounds)
+muse-sounds-manager:
+muse-sounds-manager: Muse Sounds Manager (Muse Hub for linux) is a new label of optional
+muse-sounds-manager: high quality playback instruments for MuseScore 4.
+muse-sounds-manager: Painstakingly recorded and edited specifically for the custom and
+muse-sounds-manager: revolutionary playback engine that powers these applications,
+muse-sounds-manager: they are capable of rendering incredibly lifelike results which
+muse-sounds-manager: breathe realism and emotion into your compositions.
+muse-sounds-manager:
+muse-sounds-manager: Homepage: https://www.musehub.com
+muse-sounds-manager:
diff --git a/multimedia/musique/README b/multimedia/musique/README
index 8961033c0b..f406271300 100644
--- a/multimedia/musique/README
+++ b/multimedia/musique/README
@@ -1,19 +1,18 @@
musique (cross-platform music player)
-Musique is just another music player, only better. Musique unclutters
+Musique is just another music player, only better. Musique unclutters
your music listening experience with a clean and innovative interface.
Notes:
-- musique is a Qt4 application. It integrates nicely with KDE, but doesn't
- require KDE to run.
+- musique is a Qt5 application. It integrates nicely with KDE, but
+ doesn't require KDE to run.
-- This is not the latest version of musique. This is deliberate: version
- 1.5 requires qt5. When musique notifies you that version 1.5 is available,
- click "Close". Upgrading from within the app won't work.
+- If musique notifies you that a new version is available, click
+ "Close". Upgrading from within the application won't work.
- The first time you run musique, it scans your music collection and
- uses the Last.fm service to get metadata about the files (meaning, it
- sends a list of all your music to a 3rd parts). This isn't optional,
+ uses the Discogs service to get metadata about the files (meaning, it
+ sends a list of all your music to a 3rd party). This isn't optional,
so if you have privacy concerns about it, don't bother installing
this software.
diff --git a/multimedia/musique/musique.SlackBuild b/multimedia/musique/musique.SlackBuild
index 179804670e..89285ca5c2 100644
--- a/multimedia/musique/musique.SlackBuild
+++ b/multimedia/musique/musique.SlackBuild
@@ -1,11 +1,11 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for musique
# Formerly maintained by Ryan P.C. McQuen <email removed>
-# Now maintained by B. Watson <yalhcru@gmail.com>
+# Now maintained by B. Watson <urchlay@slackware.uk>
-# Copyright 2010, 2012 Binh Nguyen <binhvng@gmail.com>
+# Copyright 2010, 2012 Binh Nguyen <email removed>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,6 +25,8 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230716 bkw: update for v1.11.
+# 20210910 bkw: update for v1.10.1 (-current and qt5).
# 20170326 bkw:
# - take over maintenance.
# - i486=>i586.
@@ -33,10 +35,13 @@
# - add some notes to README.
# - BUILD=2.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=musique
-VERSION=${VERSION:-1.4}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-1.11}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -46,7 +51,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -70,30 +79,28 @@ set -eu
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \+ -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
# I don't see how to force our flags via qmake, hence the sed stuff.
-qmake PREFIX=/usr
-sed -i "/C.*FLAGS/s,-O2,$SLKCFLAGS," Makefile
+qmake-qt5 PREFIX=/usr
+sed -i "/C.*FLAGS/s,-O3,$SLKCFLAGS," Makefile
make
make INSTALL_ROOT=$PKG install
strip $PKG/usr/bin/$PRGNAM
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a CHANGES COPYING TODO $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a CHANGES COPYING TODO $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/musique/musique.info b/multimedia/musique/musique.info
index 4082dc347b..ba7e852fe6 100644
--- a/multimedia/musique/musique.info
+++ b/multimedia/musique/musique.info
@@ -1,10 +1,10 @@
PRGNAM="musique"
-VERSION="1.4"
+VERSION="1.11"
HOMEPAGE="https://flavio.tordini.org/musique"
-DOWNLOAD="https://flavio.tordini.org/files/musique/musique-1.4.tar.gz"
-MD5SUM="c8d7146913a91af4c5190084ac9f8182"
+DOWNLOAD="https://github.com/flaviotordini/musique/releases/download/1.11/musique-1.11.tar.bz2"
+MD5SUM="1130cdce7eb1807d8ff4f7950dd87710"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="gst0-plugins-bad gst0-plugins-ugly"
+REQUIRES="mpv"
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/musixmatch/README b/multimedia/musixmatch/README
index f8c3ceab24..1277f0005d 100644
--- a/multimedia/musixmatch/README
+++ b/multimedia/musixmatch/README
@@ -1,6 +1,6 @@
musixmatch (The world's largest collection of song lyrics)
-Musixmatch is the world's largest collection of song lyrics used by
+Musixmatch is the world's largest collection of song lyrics used by
millions of people to get instant synchronised lyrics for Spotify,
-YouTube, Pandora and more. You can also now use it to get
+YouTube, Pandora and more. You can also now use it to get
song translations on the go.
diff --git a/multimedia/musixmatch/musixmatch.SlackBuild b/multimedia/musixmatch/musixmatch.SlackBuild
index 7ee128f02f..d55e2a6a66 100644
--- a/multimedia/musixmatch/musixmatch.SlackBuild
+++ b/multimedia/musixmatch/musixmatch.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Slackware build script for musixmatch.
#
@@ -22,12 +22,15 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=musixmatch
VERSION=${VERSION:-3.10.4043}
BUILD=${BUILD:-1}
BRANCH=${BRANCH:-master}
BUILDTIMEDATE=${BUILDTIMEDATE:-20200211001}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -37,7 +40,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -93,4 +103,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/musixmatch/musixmatch.info b/multimedia/musixmatch/musixmatch.info
index 276ff6fc97..5e1156ca78 100644
--- a/multimedia/musixmatch/musixmatch.info
+++ b/multimedia/musixmatch/musixmatch.info
@@ -4,7 +4,7 @@ HOMEPAGE="https://www.musixmatch.com"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
DOWNLOAD_x86_64="https://download-app.musixmatch.com/download/musixmatch_3.10.4043-master.20200211001_amd64.deb"
-MD5SUM_x86_64="2fab80385df3cc6d1a579b07322b05cf"
+MD5SUM_x86_64="a35c8872d5c61289f8507ca0d7c8b5b4"
REQUIRES="spotify"
MAINTAINER="Reza Talebi"
EMAIL="reza.talebi.73@outlook.com"
diff --git a/multimedia/musixmatch/slack-desc b/multimedia/musixmatch/slack-desc
index 3c57cab691..9d809a05d5 100644
--- a/multimedia/musixmatch/slack-desc
+++ b/multimedia/musixmatch/slack-desc
@@ -8,7 +8,7 @@
|-----handy-ruler------------------------------------------------------|
musixmatch: musixmatch (Lyrics finder app)
musixmatch:
-musixmatch: Musixmatch is the world’s largest collection of song lyrics used
+musixmatch: Musixmatch is the world's largest collection of song lyrics used
musixmatch: by millions of people to get instant synchronised lyrics for
musixmatch: Spotify, YouTube, Pandora and more.
musixmatch:
diff --git a/multimedia/mythplugins/README b/multimedia/mythplugins/README
deleted file mode 100644
index 19dc76fa51..0000000000
--- a/multimedia/mythplugins/README
+++ /dev/null
@@ -1,7 +0,0 @@
-All the official MythTV plugins, including MythArchive,
-MythGallery, MythGame, MythMusic, MythNews, MythVideo,
-MythWeather, and MythBrowser.
-
-Some of these plugins require extra work to get them functional.
-See the README files in /usr/doc/mythplugins for extra steps,
-configuration, and dependencies.
diff --git a/multimedia/mythplugins/mythplugins.SlackBuild b/multimedia/mythplugins/mythplugins.SlackBuild
deleted file mode 100644
index eae6aac7fa..0000000000
--- a/multimedia/mythplugins/mythplugins.SlackBuild
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for mythtvplugins
-# http://www.mythtv.org/
-
-# Written by David Somero <dsomero@hotmail.com>
-# Derived from Slackware's Slackbuilds.
-#
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
-# Copyright 2010-2013 David Somero (dsomero@hotmail.com) Athens, TN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
-
-PRGNAM=mythplugins
-VERSION=${VERSION:-0.27.4}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=${TMP}/package-${PRGNAM}
-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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf mythtv-fixes-0.27
-tar xvf $CWD/mythtv-fixes-0.27.tar.gz
-cd mythtv-fixes-0.27
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-cd mythplugins
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --enable-all \
- --libdir-name=lib${LIBDIRSUFFIX}
-
-qmake $PRGNAM.pro
-make
-make INSTALL_ROOT="$PKG" install
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-( PATHS=$(ls -d */ | xargs -l basename)
- for i in $PATHS; do
- [ -f $i/README ] && cp $i/README $PKG/usr/doc/$PRGNAM-$VERSION/README.$i ;
- [ -f $i/AUTHORS ] && cp $i/AUTHORS $PKG/usr/doc/$PRGNAM-$VERSION/AUTHORS.$i ;
- [ -f $i/COPYING ] && cp $i/COPYING $PKG/usr/doc/$PRGNAM-$VERSION/COPYING.$i ;
- done
-)
-
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-( cd $PKG/usr/doc ; ln -s $PRGNAM-$VERSION $PRGNAM )
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/mythplugins/mythplugins.info b/multimedia/mythplugins/mythplugins.info
deleted file mode 100644
index 9ffb960137..0000000000
--- a/multimedia/mythplugins/mythplugins.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="mythplugins"
-VERSION="0.27.4"
-HOMEPAGE="https://www.mythtv.org/"
-DOWNLOAD="https://downloads.sourceforge.net/project/slackbuildsdirectlinks/mythtv/mythtv-fixes-0.27.tar.gz"
-MD5SUM="dc663ddb329ad8ee28be5840d3e7de94"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="dcraw mythtv perl-Date-Manip perl-SOAP-Lite perl-DateTime-Format-ISO8601 perl-Image-Size perl-XML-XPath python-oauth perl-JSON"
-MAINTAINER="David Somero"
-EMAIL="dsomero@hotmail.com"
diff --git a/multimedia/mythtv/README b/multimedia/mythtv/README
deleted file mode 100644
index 4aa0f7aacf..0000000000
--- a/multimedia/mythtv/README
+++ /dev/null
@@ -1,10 +0,0 @@
-MythTV is a GPL licensed suite of programs that allow you to build the
-mythical home media convergence box on your own using Open Source software
-and operating systems. MythTV is known to work on Linux and Mac OS X
-(PowerPC and Intel).
-
-See README.SLACKWARE after installation for setup information.
-
-Optional but recommended dependencies:
-libdvdcss, libavc1394, libiec61883, jack, gsm, xmltv, mjpegtools,
-transcode, exif, and lirc.
diff --git a/multimedia/mythtv/README.SLACKWARE b/multimedia/mythtv/README.SLACKWARE
deleted file mode 100644
index cbfc880ee4..0000000000
--- a/multimedia/mythtv/README.SLACKWARE
+++ /dev/null
@@ -1,14 +0,0 @@
-README.SLACKWARE for mythtv
-
-You need to create a database before you can run mythtv:
- # mysql -u root -p < /usr/share/mythtv/database/mc.sql
-
-Then run mythtv-setup to configure mythtv
- # mythtv-setup
-
-If you get an error about timezones run
- # mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
-
-Detailed instructions for mythtv can be found here:
- http://www.mythtv.org/wiki/index.php/User_Manual:Initial_Installation
-
diff --git a/multimedia/mythtv/doinst.sh b/multimedia/mythtv/doinst.sh
deleted file mode 100644
index 664ac506bf..0000000000
--- a/multimedia/mythtv/doinst.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-config() {
- NEW="$1"
- OLD="$(dirname $NEW)/$(basename $NEW .new)"
- # If there's no config file by that name, mv it over:
- if [ ! -r $OLD ]; then
- mv $NEW $OLD
- elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
- # toss the redundant copy
- rm $NEW
- fi
- # Otherwise, we leave the .new copy for the admin to consider...
-}
-
-preserve_perms() {
- NEW="$1"
- OLD="$(dirname $NEW)/$(basename $NEW .new)"
- if [ -e $OLD ]; then
- cp -a $OLD ${NEW}.incoming
- cat $NEW > ${NEW}.incoming
- mv ${NEW}.incoming $NEW
- fi
- config $NEW
-}
-
-preserve_perms etc/rc.d/rc.mythbackend.new
-config etc/logrotate.d/mythbackend.new
-config etc/mythtv/config.xml.new
-config etc/mythtv/mysql.txt.new
-
-if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
-fi
diff --git a/multimedia/mythtv/files/mysql.txt b/multimedia/mythtv/files/mysql.txt
deleted file mode 100644
index 9248cd501e..0000000000
--- a/multimedia/mythtv/files/mysql.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-DBHostName=localhost
-
-# By default, Myth tries to ping the DB host to see if it exists.
-# If your DB host or network doesn't accept pings, set this to no:
-#
-#DBHostPing=no
-
-DBUserName=mythtv
-DBPassword=mythtv
-DBName=mythconverg
-DBType=QMYSQL3
-
-# Set the following if you want to use something other than this
-# machine's real hostname for identifying settings in the database.
-# This is useful if your hostname changes often, as otherwise you
-# will need to reconfigure mythtv (or futz with the DB) every time.
-# TWO HOSTS MUST NOT USE THE SAME VALUE
-#
-#LocalHostName=my-unique-identifier-goes-here
-
-# If you want your frontend to be able to wake your MySQL server
-# using WakeOnLan, have a look at the following settings:
-#
-#
-# The time the frontend waits (in seconds) between reconnect tries.
-# This should be the rough time your MySQL server needs for startup
-#
-#WOLsqlReconnectWaitTime=0
-#
-#
-# This is the number of retries to wake the MySQL server
-# until the frontend gives up
-#
-#WOLsqlConnectRetry=5
-#
-#
-# This is the command executed to wake your MySQL server.
-#
-#WOLsqlCommand=echo 'WOLsqlServerCommand not set'
diff --git a/multimedia/mythtv/files/mythfrontend.desktop b/multimedia/mythtv/files/mythfrontend.desktop
deleted file mode 100644
index a94ec5b303..0000000000
--- a/multimedia/mythtv/files/mythfrontend.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Name=mythTV frontend
-Comment=Record, playback and watch TV.
-Icon=mythfrontend
-Exec=mythfrontend
-Terminal=false
-Type=Application
-Categories=AudioVideo;Player;
diff --git a/multimedia/mythtv/files/mythfrontend.png b/multimedia/mythtv/files/mythfrontend.png
deleted file mode 100644
index 5d456be3af..0000000000
--- a/multimedia/mythtv/files/mythfrontend.png
+++ /dev/null
Binary files differ
diff --git a/multimedia/mythtv/files/mythtv-setup.desktop b/multimedia/mythtv/files/mythtv-setup.desktop
deleted file mode 100644
index 8fa20f756c..0000000000
--- a/multimedia/mythtv/files/mythtv-setup.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Name=mythTV setup
-Comment=Setup for mythTV.
-Icon=mythtv-setup
-Exec=mythtv-setup
-Terminal=false
-Type=Application
-Categories=AudioVideo;Player;
diff --git a/multimedia/mythtv/files/mythtv-setup.png b/multimedia/mythtv/files/mythtv-setup.png
deleted file mode 100644
index 5d456be3af..0000000000
--- a/multimedia/mythtv/files/mythtv-setup.png
+++ /dev/null
Binary files differ
diff --git a/multimedia/mythtv/files/mythtv.logrotate.d b/multimedia/mythtv/files/mythtv.logrotate.d
deleted file mode 100644
index a3024f4208..0000000000
--- a/multimedia/mythtv/files/mythtv.logrotate.d
+++ /dev/null
@@ -1,10 +0,0 @@
-/var/log/mythbackend.log /var/log/mythfrontend.log {
-rotate 4
-weekly
-notifempty
-sharedscripts
-missingok
-postrotate
-[ -f "/var/run/mythbackend.pid" ] && /bin/kill -HUP `cat /var/run/mythbackend.pid`
-endscript
-}
diff --git a/multimedia/mythtv/files/rc.mythbackend.new b/multimedia/mythtv/files/rc.mythbackend.new
deleted file mode 100644
index 7cb2683e6c..0000000000
--- a/multimedia/mythtv/files/rc.mythbackend.new
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-# Start/stop/restart mythbackend
-#
-# Modification done by Benoit Beauchamp, based on rc.mysqld by
-#
-# Copyright 2003 Patrick J. Volkerding, Concord, CA
-# Copyright 2003 Slackware Linux, Inc., Concord, CA
-#
-# This program comes with NO WARRANTY, to the extent permitted by law.
-# You may redistribute copies of this program under the terms of the
-# GNU General Public License.
-#
-LOG=/var/log/mythbackend.log
-PID=/var/run/mythbackend.pid
-MYTHTV_HOME=/etc/mythtv
-export MYTHCONFDIR="$MYTHTV_HOME"
-export HOME="$MYTHTV_HOME"
-
-# Start mythbackend:
-myth_start() {
- if [ -x /usr/bin/mythbackend ]; then
- # If there is an old PID file (no mythbackend running), clean it up:
- if [ -r $PID ]; then
- if ! ps axc | grep mythbackend 1> /dev/null 2> /dev/null ; then
- echo "Cleaning up old $PID."
- rm -f $PID
- fi
- fi
- echo "Starting mythbackend..."
- /usr/bin/mythbackend --logpath $LOG -v general -p $PID -d
- fi
-}
-
-# Stop mythbackend:
-myth_stop() {
- # If there is no PID file, ignore this request...
- if [ -r $PID ]; then
- echo "Stopping mythbackend..."
- killall mythbackend
- rm -f $PID
- fi
-}
-
-# Restart mythbackend:
-myth_restart() {
- myth_stop
- myth_start
-}
-
-case "$1" in
-'start')
- myth_start
- ;;
-'stop')
- myth_stop
- ;;
-'restart')
- myth_restart
- ;;
-*)
- echo "usage $0 start|stop|restart"
-esac
diff --git a/multimedia/mythtv/libvpxenc.patch b/multimedia/mythtv/libvpxenc.patch
deleted file mode 100644
index e8c21288cb..0000000000
--- a/multimedia/mythtv/libvpxenc.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 6540fe04a3f9a11ba7084a49b3ee5fa2fc5b32ab Mon Sep 17 00:00:00 2001
-From: James Zern <jzern@google.com>
-Date: Mon, 19 Oct 2015 22:44:11 -0700
-Subject: [PATCH] libvpxenc: remove some unused ctrl id mappings
-
-VP8E_UPD_ENTROPY, VP8E_UPD_REFERENCE, VP8E_USE_REFERENCE were removed
-from libvpx and the remaining values were never used here
-
-Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
-Signed-off-by: James Zern <jzern@google.com>
----
- libavcodec/libvpxenc.c | 8 --------
- 1 file changed, 8 deletions(-)
-
-diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
-index 5f39783..992122c 100644
---- a/libavcodec/libvpxenc.c
-+++ b/libavcodec/libvpxenc.c
-@@ -104,19 +104,11 @@ typedef struct VP8EncoderContext {
-
- /** String mappings for enum vp8e_enc_control_id */
- static const char *const ctlidstr[] = {
-- [VP8E_UPD_ENTROPY] = "VP8E_UPD_ENTROPY",
-- [VP8E_UPD_REFERENCE] = "VP8E_UPD_REFERENCE",
-- [VP8E_USE_REFERENCE] = "VP8E_USE_REFERENCE",
-- [VP8E_SET_ROI_MAP] = "VP8E_SET_ROI_MAP",
-- [VP8E_SET_ACTIVEMAP] = "VP8E_SET_ACTIVEMAP",
-- [VP8E_SET_SCALEMODE] = "VP8E_SET_SCALEMODE",
- [VP8E_SET_CPUUSED] = "VP8E_SET_CPUUSED",
- [VP8E_SET_ENABLEAUTOALTREF] = "VP8E_SET_ENABLEAUTOALTREF",
- [VP8E_SET_NOISE_SENSITIVITY] = "VP8E_SET_NOISE_SENSITIVITY",
-- [VP8E_SET_SHARPNESS] = "VP8E_SET_SHARPNESS",
- [VP8E_SET_STATIC_THRESHOLD] = "VP8E_SET_STATIC_THRESHOLD",
- [VP8E_SET_TOKEN_PARTITIONS] = "VP8E_SET_TOKEN_PARTITIONS",
-- [VP8E_GET_LAST_QUANTIZER] = "VP8E_GET_LAST_QUANTIZER",
- [VP8E_SET_ARNR_MAXFRAMES] = "VP8E_SET_ARNR_MAXFRAMES",
- [VP8E_SET_ARNR_STRENGTH] = "VP8E_SET_ARNR_STRENGTH",
- [VP8E_SET_ARNR_TYPE] = "VP8E_SET_ARNR_TYPE",
---
-1.7.10.4
-
-
diff --git a/multimedia/mythtv/mythtv.SlackBuild b/multimedia/mythtv/mythtv.SlackBuild
deleted file mode 100644
index 35b9780127..0000000000
--- a/multimedia/mythtv/mythtv.SlackBuild
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for mythtv
-# http://www.mythtv.org/
-
-# Written by David Somero <dsomero@hotmail.com>
-# Derived from Slackware's Slackbuilds.
-#
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
-# Copyright 2010-2013 David Somero (dsomero@hotmail.com) Athens, TN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
-
-PRGNAM=mythtv
-VERSION=${VERSION:-0.27.6}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz || tar xvf $CWD/v$VERSION.tar.gz
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-cd mythtv
-# Pass libdir to zeromq.
-sed -i \
- -e"s|--without-documentation|--without-documentation --libdir=/usr/lib$LIBDIRSUFFIX|" \
- configure
-
-# Thanks to ARCH Linux
-patch -d external/FFmpeg -p1 < $CWD/libvpxenc.patch
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir-name=lib${LIBDIRSUFFIX} \
- --mandir=/usr/man \
- --compile-type=release \
- --dvb-path=/usr/include \
- --with-bindings="perl,python,php" \
- --perl-config-opts="INSTALLDIRS=vendor" \
- --disable-ccache \
- --disable-distcc \
- --disable-hdhomerun \
- --enable-dvb \
- --enable-xrandr \
- --enable-xv \
- --enable-x11 \
- --enable-nonfree \
- --enable-opengl-video \
- --enable-libmp3lame \
- --enable-libfaac \
- --enable-libx264 \
- --enable-libvpx \
- --enable-libxvid \
- --enable-symbol-visibility \
- --enable-pic
-
-
-
-make
-make install INSTALL_ROOT="$PKG"
-
-# Don't package empty and wrong man directories.
-rm -rf $PKG/usr/share/man
-
-mkdir -p $PKG/var/lib/mythtv
-mkdir -p $PKG/var/cache/mythtv
-mkdir -p $PKG/etc/{logrotate.d,mythtv}
-
-# Other config/init files
-install -D -m 0755 $CWD/files/rc.mythbackend.new $PKG/etc/rc.d/rc.mythbackend.new
-touch $PKG/etc/mythtv/config.xml.new
-cat $CWD/files/mysql.txt > $PKG/etc/mythtv/mysql.txt.new
-cat $CWD/files/mythtv.logrotate.d > $PKG/etc/logrotate.d/mythbackend.new
-
-# Create desktop entry for mythfrontend and myth-setup.
-mkdir -p $PKG/usr/share/{pixmaps,applications}
-for file in mythtv-setup mythfrontend; do
- cat $CWD/files/$file.png > $PKG/usr/share/pixmaps/$file.png
- cat $CWD/files/$file.desktop > $PKG/usr/share/applications/$file.desktop
-done
-
-# Copy some other needed stuff to /usr/share/mythtv
-# Nuke Windows and Mac OS X build scripts
-rm -rf contrib/Win32 contrib/OSX
-cp -a database contrib $PKG/usr/share/$PRGNAM
-
-find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS COPYING FAQ keys.txt README UPGRADING docs/* \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-cat $CWD/README.SLACKWARE > $PKG/usr/doc/$PRGNAM-$VERSION/README.SLACKWARE
-( cd $PKG/usr/doc ; ln -s $PRGNAM-$VERSION $PRGNAM )
-
-mkdir -p $PKG/install
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/mythtv/mythtv.info b/multimedia/mythtv/mythtv.info
deleted file mode 100644
index d364c7f70b..0000000000
--- a/multimedia/mythtv/mythtv.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="mythtv"
-VERSION="0.27.6"
-HOMEPAGE="https://www.mythtv.org/"
-DOWNLOAD="https://github.com/MythTV/mythtv/archive/v0.27.6.tar.gz"
-MD5SUM="30dce5263a03687a14ff34331ea537ad"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="libass faac lame MySQL-python lxml urlgrabber perl-http-message libwww-perl perl-Net-UPnP perl-IO-Socket-INET6 x264 xvidcore"
-MAINTAINER="David Somero"
-EMAIL="dsomero@hotmail.com"
diff --git a/multimedia/nightingale/README b/multimedia/nightingale/README
deleted file mode 100644
index 0956809189..0000000000
--- a/multimedia/nightingale/README
+++ /dev/null
@@ -1,5 +0,0 @@
-Nightingale chirps your favorite tunes!
-the tune of life, the tune of yours
-
-A beautiful interface with a wide range of supported
-audio formats, all with multi-platform support!
diff --git a/multimedia/nightingale/doinst.sh b/multimedia/nightingale/doinst.sh
deleted file mode 100644
index 140e332222..0000000000
--- a/multimedia/nightingale/doinst.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database -q usr/share/applications
-fi
diff --git a/multimedia/nightingale/nightingale.SlackBuild b/multimedia/nightingale/nightingale.SlackBuild
deleted file mode 100644
index 5f525c0e17..0000000000
--- a/multimedia/nightingale/nightingale.SlackBuild
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for nightingale
-
-# Ryan P.C. McQuen | Everett, WA | ryanpcmcquen@member.fsf.org
-
-# 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, with the following exception:
-# the text of the GPL license may be omitted.
-
-# 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. Compiling,
-# interpreting, executing or merely reading the text of the program
-# may result in lapses of consciousness and/or very being, up to and
-# including the end of all existence and the Universe as we know it.
-# See the GNU General Public License for more details.
-
-# You may have received a copy of the GNU General Public License along
-# with this program (most likely, a file named COPYING). If not, see
-# <http://www.gnu.org/licenses/>.
-
-
-PRGNAM=nightingale
-SRCNAM=Nightingale
-VERSION=${VERSION:-1.12.1_2454}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-SRC_VERSION=$(echo $VERSION | tr _ -)
-PLUGINS=${PLUGINS:-YES}
-
-if [ "$ARCH" = "i586" ]; then
- SRC_ARCH="i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SRC_ARCH="i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SRC_ARCH="x86_64"
- LIBDIRSUFFIX="64"
-else
- printf "\n$ARCH is unsupported...\n\n"
- exit 1
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $PKG
-# Set up the target enviroment and extract nightingale in there
-mkdir -p $PKG/usr/{bin,lib${LIBDIRSUFFIX}}/$SRCNAM
-tar -xvf $CWD/${SRCNAM}_${SRC_VERSION}_ubuntu-$SRC_ARCH.tar.bz2 -C $PKG/usr/lib${LIBDIRSUFFIX}/$SRCNAM
-chown -R root:root .
-# Added "-o -perm 700" to this to take care of the borked directory permissions
-find . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cd $PKG/usr/lib${LIBDIRSUFFIX}/$SRCNAM
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/usr/share/{applications,pixmaps}
-cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
-cp $PKG/usr/lib${LIBDIRSUFFIX}/$SRCNAM/chrome/icons/default/default.xpm \
- $PKG/usr/share/pixmaps/$SRCNAM.xpm
-
-ln -sf /usr/lib${LIBDIRSUFFIX}/$SRCNAM/nightingale-bin \
- $PKG/usr/bin/$PRGNAM
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/nightingale/nightingale.desktop b/multimedia/nightingale/nightingale.desktop
deleted file mode 100644
index 7b17907c79..0000000000
--- a/multimedia/nightingale/nightingale.desktop
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Exec=/usr/bin/nightingale
-Icon=/usr/share/pixmaps/Nightingale.xpm
-Type=Application
-Categories=AudioVideo;
-Name=Nightingale
-GenericName=Media Player
-Comment=Nightingale Media Player
-MimeType=text/html
-X-KDE-StartupNotify=true
-Name[en_US]=Nightingale
diff --git a/multimedia/nightingale/nightingale.info b/multimedia/nightingale/nightingale.info
deleted file mode 100644
index 6749489df3..0000000000
--- a/multimedia/nightingale/nightingale.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="nightingale"
-VERSION="1.12.1_2454"
-HOMEPAGE="http://getnightingale.com/"
-DOWNLOAD="http://sourceforge.net/projects/ngale/files/1.12.1-Release/Nightingale_1.12.1-2454_ubuntu-i686.tar.bz2"
-MD5SUM="498734c4d73e78695a67cedeb789d460"
-DOWNLOAD_x86_64="http://sourceforge.net/projects/ngale/files/1.12.1-Release/Nightingale_1.12.1-2454_ubuntu-x86_64.tar.bz2"
-MD5SUM_x86_64="b49159fb6afd5307662b981dbb8963f3"
-REQUIRES=""
-MAINTAINER="orphaned - no maintainer"
-EMAIL="nobody@nowhere"
diff --git a/multimedia/nrg2iso/nrg2iso.SlackBuild b/multimedia/nrg2iso/nrg2iso.SlackBuild
index 32997d7bbc..e5f98a57c7 100644
--- a/multimedia/nrg2iso/nrg2iso.SlackBuild
+++ b/multimedia/nrg2iso/nrg2iso.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for nrg2iso
@@ -29,26 +29,36 @@
#
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=nrg2iso
VERSION=${VERSION:-0.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -95,4 +105,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/nted/compilefix.diff b/multimedia/nted/compilefix.diff
new file mode 100644
index 0000000000..7641910a2c
--- /dev/null
+++ b/multimedia/nted/compilefix.diff
@@ -0,0 +1,20 @@
+diff -Naur nted-1.10.18/voice.cpp nted-1.10.18.patched/voice.cpp
+--- nted-1.10.18/voice.cpp 2011-01-27 08:09:44.000000000 -0500
++++ nted-1.10.18.patched/voice.cpp 2021-09-10 22:50:23.045105704 -0400
+@@ -20,6 +20,7 @@
+ /****************************************************************************************/
+
+ #include <string.h>
++#include <stdint.h>
+ #include "voice.h"
+ #include "beaming.h"
+ #include "staff.h"
+@@ -1369,7 +1370,7 @@
+ return FALSE;
+ }
+ ref_duration = (method == 1) ? templ->getDuration() / 2 : templ->getDuration();
+- if ((min_pos_ptr = g_list_find(m_chord_or_rests, templ)) < 0) {
++ if ((intptr_t)(min_pos_ptr = g_list_find(m_chord_or_rests, templ)) < 0) {
+ NedResource::Abort("NedVoice::tryConvertToTuplet(1)");
+ }
+ if ((minpos = g_list_index(m_chord_or_rests, templ)) < 0) {
diff --git a/multimedia/nted/nted.SlackBuild b/multimedia/nted/nted.SlackBuild
index c8edc7bc36..9fd6a40fdf 100644
--- a/multimedia/nted/nted.SlackBuild
+++ b/multimedia/nted/nted.SlackBuild
@@ -1,8 +1,6 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for nted
-#(http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml)
-# 20180905 bkw: original homepage is long gone.
# Copyright 2008 Corrado Franco (email removed)
# All rights reserved.
@@ -26,6 +24,13 @@
# Modified by the SlackBuilds.org project
+# 20230103 bkw: BUILD=3, get rid of useless install instructions.
+
+# 20210910 bkw: fix build on -current (gcc11)
+# TODO: occasionally nted segfaults on exit, fix if possible. It's
+# difficult to reproduce, and when I compile with debugging symbols
+# I can't get it to happen at all.
+
# 20180905 bkw: upstream has been dead a while, switch homepage to
# debian's package page, and use their patches. VERSION now 1.10.18_12,
# original version + debian patchlevel 12. The debian patches fix a few
@@ -34,10 +39,13 @@
# 20170621 bkw: fix build on -current (gcc7's pickier, use -Wno-narrowing)
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=nted
VERSION=${VERSION:-1.10.18_12}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -47,12 +55,17 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-DOCS="ABOUT* AUTHORS COPYING* ChangeLog FAQ INSTALL NEWS README"
+# 20210910 bkw: NEWS and ChangeLog are 0-byte placeholders, ignore
+DOCS="ABOUT* AUTHORS COPYING* FAQ README"
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
@@ -81,6 +94,8 @@ chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+patch -p1 < $CWD/compilefix.diff
+
for i in $( cat debian/patches/series ); do
patch -p1 < debian/patches/$i
done
@@ -110,13 +125,12 @@ CXXFLAGS="$SLKCFLAGS -fpermissive -Wno-narrowing" \
make
make install-strip DESTDIR=$PKG
+gzip -9 $PKG/usr/man/man?/*.*
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $(find $PKG/usr/man -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a $DOCS $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
# Overwrite shipped .desktop file with fixed one that validates
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
@@ -126,4 +140,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/nted/nted.info b/multimedia/nted/nted.info
index 48ae89de93..b9202b30ab 100644
--- a/multimedia/nted/nted.info
+++ b/multimedia/nted/nted.info
@@ -9,4 +9,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/obs-studio/README b/multimedia/obs-studio/README
index 590efc0be7..afab422e8b 100644
--- a/multimedia/obs-studio/README
+++ b/multimedia/obs-studio/README
@@ -1,11 +1,4 @@
-This project is a rewrite of what was formerly known as "Open Broadcaster
-Software", software originally designed for recording and streaming live
-video content, efficiently.
+This project is a rewrite of what was formerly known as "Open
+Broadcaster Software", software originally designed for recording and
+streaming live video content, efficiently.
-For full functionality, plug-ins using jack, luajit and vlc will be
-constructed if those packages (all available at SBo) are detected at
-build time.
-
-Another optional build requirement is the mbedtls package which is used
-to provide RTMPS support. However it will be disabled unless at least
-version 2.7.0 of the mbedtls package is detected at build time.
diff --git a/multimedia/obs-studio/obs-studio.SlackBuild b/multimedia/obs-studio/obs-studio.SlackBuild
index 6e7f3d75ec..bcbab1aea3 100644
--- a/multimedia/obs-studio/obs-studio.SlackBuild
+++ b/multimedia/obs-studio/obs-studio.SlackBuild
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for Open Broadcaster Software
#
# Copyright 2015 Gethyn ThomasQuail <gethyn@bloodbathsoftworks.com>
-# Copyright 2016-2020 Christoph Willing, Brisbane Australia
+# Copyright 2016-2023 Christoph Willing, Brisbane Australia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,10 +23,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=obs-studio
-VERSION=${VERSION:-24.0.6}
+VERSION=${VERSION:-29.1.3}
+COMMIT=c58e511813c33e93da7637d50aa431ae0cddda0c
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +40,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -44,12 +52,15 @@ OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
+ CEF_ROOT=cef_binary_101.0.18+g367b4a0+chromium-101.0.4951.67_linux32_minimal
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
+ CEF_ROOT=cef_binary_101.0.18+g367b4a0+chromium-101.0.4951.67_linux32_minimal
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+ CEF_ROOT=cef_binary_4638_linux64
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
@@ -60,9 +71,23 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM-$COMMIT
+tar xvf $CWD/$PRGNAM-$COMMIT.tar.gz
+tar xvf $CWD/$CEF_ROOT.tar.bz2
+cd $CEF_ROOT
+ strip -v Release/*.so
+ if [ "$ARCH" = "i686" -o "$ARCH" = "i586" ]; then
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_BUILD_TYPE=Release .
+
+ make libcef_dll_wrapper
+ fi
+ cd ..
+
+cd $PRGNAM-$COMMIT
+sed -i -e '/OBS_VERSION_CANONICAL/ s=^=#=' CMakeLists.txt
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -70,15 +95,6 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# Check for mbedtls existence and version suitability (need at least version 2.7.0)
-mbedtls="-DMBEDTLS_LIB=OFF"
-if test -e /usr/include/mbedtls/version.h ; then
- version_number_line=$(grep MBEDTLS_VERSION_NUMBER /usr/include/mbedtls/version.h)
- if [ "$?" = "0" ]; then
- version_number=$(expr substr $(echo $version_number_line | rev | cut -d' ' -f1 | rev) 3 8)
- if expr $version_number \> 02070000 1>/dev/null ; then mbedtls="" ; fi
- fi
-fi
mkdir -p build
cd build
@@ -89,7 +105,13 @@ cd build
-DOBS_MULTIARCH_SUFFIX="$LIBDIRSUFFIX" \
-DOBS_VERSION_OVERRIDE=${VERSION} \
-DUNIX_STRUCTURE=ON \
- $mbedtls \
+ -DENABLE_JACK=ON \
+ -DENABLE_LIBFDK=ON \
+ -DENABLE_NEW_MPEGTS_OUTPUT=OFF \
+ -DENABLE_AJA=OFF \
+ -DENABLE_WEBSOCKET=OFF \
+ -DBUILD_BROWSER=ON \
+ -DCEF_ROOT_DIR="../../$CEF_ROOT" \
-DCMAKE_BUILD_TYPE=Release ..
make
make install DESTDIR=$PKG
@@ -103,4 +125,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/obs-studio/obs-studio.info b/multimedia/obs-studio/obs-studio.info
index b20d69789b..c3cf76dfb9 100644
--- a/multimedia/obs-studio/obs-studio.info
+++ b/multimedia/obs-studio/obs-studio.info
@@ -1,10 +1,14 @@
PRGNAM="obs-studio"
-VERSION="24.0.6"
+VERSION="29.1.3"
HOMEPAGE="https://obsproject.com/"
-DOWNLOAD="https://github.com/obsproject/obs-studio/archive/24.0.6/obs-studio-24.0.6.tar.gz"
-MD5SUM="804bccba4476f696d15b01ff88ae02f2"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="faac ffmpeg jansson qt5 rtmpdump x264 jack libfdk-aac"
+DOWNLOAD="https://sourceforge.net/projects/slackbuildsdirectlinks/files/obs/obs-studio-c58e511813c33e93da7637d50aa431ae0cddda0c.tar.gz \
+ https://cef-builds.spotifycdn.com/cef_binary_101.0.18+g367b4a0+chromium-101.0.4951.67_linux32_minimal.tar.bz2"
+MD5SUM="400a82a711ccee33a691661ee896da5f \
+ 1dbd673789f79432e618d477c49df135"
+DOWNLOAD_x86_64="https://sourceforge.net/projects/slackbuildsdirectlinks/files/obs/obs-studio-c58e511813c33e93da7637d50aa431ae0cddda0c.tar.gz \
+ https://cdn-fastly.obsproject.com/downloads/cef_binary_4638_linux64.tar.bz2"
+MD5SUM_x86_64="400a82a711ccee33a691661ee896da5f \
+ 34fb1c611b3e278ca4d0d1d50e7bfb9b"
+REQUIRES="luajit libfdk-aac mbedtls vlc nlohmann_json"
MAINTAINER="Christoph Willing"
EMAIL="chris.willing@linux.com"
diff --git a/multimedia/oggconvert/README b/multimedia/oggconvert/README
index 186cc4a084..4f32129c54 100644
--- a/multimedia/oggconvert/README
+++ b/multimedia/oggconvert/README
@@ -1,4 +1,6 @@
-Oggconvert is a simple program to convert media files to the ogg/theora format.
+Oggconvert is a simple program to convert media files to the
+ogg/theora format.
-This is a simple gui to convert every multimedia format supported by ffmpeg to
-ogg theora. Oggconvert is a graphical front end for ffmpeg2theora
+This is a simple gui to convert every multimedia format supported
+by ffmpeg to ogg theora. Oggconvert is a graphical front end for
+ffmpeg2theora.
diff --git a/multimedia/oggconvert/oggconvert.SlackBuild b/multimedia/oggconvert/oggconvert.SlackBuild
index b67bb258cb..6930a0532d 100644
--- a/multimedia/oggconvert/oggconvert.SlackBuild
+++ b/multimedia/oggconvert/oggconvert.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <appname>
@@ -28,20 +28,30 @@
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=oggconvert
VERSION=${VERSION:-0.3.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}\
@@ -74,4 +84,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/oggvideotools/README b/multimedia/oggvideotools/README
index 40cf991b3c..f5537446d5 100644
--- a/multimedia/oggvideotools/README
+++ b/multimedia/oggvideotools/README
@@ -1,3 +1,4 @@
-Ogg Video Tools is a toolbox for manipulating Ogg video files, which usually
-consist of a video stream (Theora) and an audio stream (Vorbis). It provides
-handy command line tools for creating and manipulating these video files.
+Ogg Video Tools is a toolbox for manipulating Ogg video files,
+which usually consist of a video stream (Theora) and an audio stream
+(Vorbis). It provides handy command line tools for creating and
+manipulating these video files.
diff --git a/multimedia/oggvideotools/oggvideotools.SlackBuild b/multimedia/oggvideotools/oggvideotools.SlackBuild
index d284d00cae..ad705ae480 100644
--- a/multimedia/oggvideotools/oggvideotools.SlackBuild
+++ b/multimedia/oggvideotools/oggvideotools.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware Package Build Script for OggVideoTools
# Home Page http://dev.streamnik.de/oggvideotools.html
@@ -25,26 +25,36 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM="oggvideotools"
VERSION=${VERSION:-0.8a}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -83,7 +93,7 @@ cd build
CXXFLAGS="$SLKCFLAGS" \
cmake .. \
-DCMAKE_INSTALL_PREFIX:STRING="/usr" \
- -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -Wno-error=narrowing" \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_VERBOSE_MAKEFILE:BOOL="TRUE"
make
@@ -101,4 +111,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/olive/README b/multimedia/olive/README
new file mode 100644
index 0000000000..0d24580cb2
--- /dev/null
+++ b/multimedia/olive/README
@@ -0,0 +1,17 @@
+Olive is a cross-platform video editing application licensed under
+the GNU GPL version 3. The plan of the development team is to combine
+complete colour managment, a fast and high-fidelity float-based
+render pipeline, node-based compositing and audio-mixing, and a
+highly efficient automated disk cache all together in one program.
+
+It should be noted that Olive is still in the early alpha stages of
+development, and thus should not be used for serious projects; if you
+do choose to use Olive for any serious projects, frequent backups of
+said projects are highly recommended.
+
+This SlackBuild packages an older version of Olive (0.1.2), which is
+the latest stable version as of this writing.
+
+The patches in this SlackBuild were originally written by Tércio
+Martins for Arch's Olive AUR, and have been graciously re-used here
+with his permission.
diff --git a/multimedia/olive/doinst.sh b/multimedia/olive/doinst.sh
new file mode 100644
index 0000000000..262eb5a9e5
--- /dev/null
+++ b/multimedia/olive/doinst.sh
@@ -0,0 +1,14 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -x /usr/bin/update-mime-database ]; then
+ /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
+fi
+
+# If other icon themes are installed, then add to/modify this as needed
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/olive/olive-0.1.2-FlowLayout.patch b/multimedia/olive/olive-0.1.2-FlowLayout.patch
new file mode 100644
index 0000000000..cde40310e9
--- /dev/null
+++ b/multimedia/olive/olive-0.1.2-FlowLayout.patch
@@ -0,0 +1,12 @@
+diff --unified --recursive --text olive-0.1.2-orig/ui/flowlayout.cpp olive-0.1.2-new/ui/flowlayout.cpp
+--- olive-0.1.2-orig/ui/flowlayout.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/ui/flowlayout.cpp 2020-06-23 18:29:57.338203268 -0300
+@@ -114,7 +114,7 @@
+
+ Qt::Orientations FlowLayout::expandingDirections() const
+ {
+- return 0;
++ return { };
+ }
+
+ bool FlowLayout::hasHeightForWidth() const
diff --git a/multimedia/olive/olive-0.1.2-QFontMetrics.patch b/multimedia/olive/olive-0.1.2-QFontMetrics.patch
new file mode 100644
index 0000000000..3731aad17b
--- /dev/null
+++ b/multimedia/olive/olive-0.1.2-QFontMetrics.patch
@@ -0,0 +1,121 @@
+diff --unified --recursive --text olive-0.1.2-orig/effects/internal/texteffect.cpp olive-0.1.2-new/effects/internal/texteffect.cpp
+--- olive-0.1.2-orig/effects/internal/texteffect.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/effects/internal/texteffect.cpp 2020-06-23 17:41:00.714422192 -0300
+@@ -183,11 +183,11 @@
+ if (word_wrap_field->GetBoolAt(timecode)) {
+ for (int i=0;i<lines.size();i++) {
+ QString s(lines.at(i));
+- if (fm.width(s) > width) {
++ if (fm.horizontalAdvance(s) > width) {
+ int last_space_index = 0;
+ for (int j=0;j<s.length();j++) {
+ if (s.at(j) == ' ') {
+- if (fm.width(s.left(j)) > width) {
++ if (fm.horizontalAdvance(s.left(j)) > width) {
+ break;
+ } else {
+ last_space_index = j;
+@@ -211,11 +211,11 @@
+
+ switch (halign_field->GetValueAt(timecode).toInt()) {
+ case Qt::AlignLeft: text_x = 0; break;
+- case Qt::AlignRight: text_x = width - fm.width(lines.at(i)); break;
++ case Qt::AlignRight: text_x = width - fm.horizontalAdvance(lines.at(i)); break;
+ case Qt::AlignJustify:
+ // add spaces until the string is too big
+ text_x = 0;
+- while (fm.width(lines.at(i)) < width) {
++ while (fm.horizontalAdvance(lines.at(i)) < width) {
+ bool space = false;
+ QString spaced(lines.at(i));
+ for (int i=0;i<spaced.length();i++) {
+@@ -228,7 +228,7 @@
+ while (i < spaced.length() && spaced.at(i) == ' ') i++;
+ }
+ }
+- if (fm.width(spaced) > width || !space) {
++ if (fm.horizontalAdvance(spaced) > width || !space) {
+ break;
+ } else {
+ lines[i] = spaced;
+@@ -237,7 +237,7 @@
+ break;
+ case Qt::AlignHCenter:
+ default:
+- text_x = (width/2) - (fm.width(lines.at(i))/2);
++ text_x = (width/2) - (fm.horizontalAdvance(lines.at(i))/2);
+ break;
+ }
+
+diff --unified --recursive --text olive-0.1.2-orig/effects/internal/timecodeeffect.cpp olive-0.1.2-new/effects/internal/timecodeeffect.cpp
+--- olive-0.1.2-orig/effects/internal/timecodeeffect.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/effects/internal/timecodeeffect.cpp 2020-06-23 17:41:51.815020590 -0300
+@@ -117,7 +117,7 @@
+
+ int text_x, text_y, rect_y, offset_x, offset_y;
+ int text_height = fm.height();
+- int text_width = fm.width(display_timecode);
++ int text_width = fm.horizontalAdvance(display_timecode);
+ QColor background_color = color_bg_val->GetColorAt(timecode);
+ int alpha_val = qCeil(bg_alpha->GetDoubleAt(timecode)*2.55);
+ background_color.setAlpha(alpha_val);
+diff --unified --recursive --text olive-0.1.2-orig/ui/graphview.cpp olive-0.1.2-new/ui/graphview.cpp
+--- olive-0.1.2-orig/ui/graphview.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/ui/graphview.cpp 2020-06-23 17:38:31.572539882 -0300
+@@ -175,7 +175,7 @@
+ void GraphView::draw_line_text(QPainter &p, bool vert, int line_no, int line_pos, int next_line_pos) {
+ // draws last line's text
+ QString str = QString::number(line_no*kGraphSize);
+- int text_sz = vert ? fontMetrics().height() : fontMetrics().width(str);
++ int text_sz = vert ? fontMetrics().height() : fontMetrics().horizontalAdvance(str);
+ if (text_sz < (next_line_pos - line_pos)) {
+ QRect text_rect = vert ? QRect(0, line_pos-50, 50, 50) : QRect(line_pos, height()-50, 50, 50);
+ p.drawText(text_rect, Qt::AlignBottom | Qt::AlignLeft, str);
+diff --unified --recursive --text olive-0.1.2-orig/ui/sourceiconview.cpp olive-0.1.2-new/ui/sourceiconview.cpp
+--- olive-0.1.2-orig/ui/sourceiconview.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/ui/sourceiconview.cpp 2020-06-23 17:42:48.155657141 -0300
+@@ -140,7 +140,7 @@
+ painter->setPen(text_fgcolor);
+
+ QString duration_str = index.data(Qt::UserRole).toString();
+- int timecode_width = fm.width(duration_str);
++ int timecode_width = fm.horizontalAdvance(duration_str);
+ int max_name_width = option.rect.width();
+
+ if (timecode_width < option.rect.width() / 2) {
+diff --unified --recursive --text olive-0.1.2-orig/ui/timelineheader.cpp olive-0.1.2-new/ui/timelineheader.cpp
+--- olive-0.1.2-orig/ui/timelineheader.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/ui/timelineheader.cpp 2020-06-23 17:43:45.496282517 -0300
+@@ -390,7 +390,7 @@
+ bool draw_text = false;
+ if (text_enabled && lineX-textWidth > lastTextBoundary) {
+ timecode = frame_to_timecode(frame + in_visible, olive::CurrentConfig.timecode_view, viewer->seq->frame_rate);
+- fullTextWidth = fm.width(timecode);
++ fullTextWidth = fm.horizontalAdvance(timecode);
+ textWidth = fullTextWidth>>1;
+
+ text_x = lineX;
+diff --unified --recursive --text olive-0.1.2-orig/ui/timelinewidget.cpp olive-0.1.2-new/ui/timelinewidget.cpp
+--- olive-0.1.2-orig/ui/timelinewidget.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/ui/timelinewidget.cpp 2020-06-23 17:39:05.582988929 -0300
+@@ -3162,7 +3162,7 @@
+ }
+ if (clip->linked.size() > 0) {
+ int underline_y = olive::timeline::kClipTextPadding + p.fontMetrics().height() + clip_rect.top();
+- int underline_width = qMin(text_rect.width() - 1, p.fontMetrics().width(clip->name()));
++ int underline_width = qMin(text_rect.width() - 1, p.fontMetrics().horizontalAdvance(clip->name()));
+ p.drawLine(text_rect.x(), underline_y, text_rect.x() + underline_width, underline_y);
+ }
+ QString name = clip->name();
+diff --unified --recursive --text olive-0.1.2-orig/ui/viewerwindow.cpp olive-0.1.2-new/ui/viewerwindow.cpp
+--- olive-0.1.2-orig/ui/viewerwindow.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/ui/viewerwindow.cpp 2020-06-23 17:44:21.156661091 -0300
+@@ -172,7 +172,7 @@
+ p.setPen(Qt::white);
+ p.setBrush(QColor(0, 0, 0, 128));
+
+- int text_width = fm.width(fs_str);
++ int text_width = fm.horizontalAdvance(fs_str);
+ int text_x = (width()/2)-(text_width/2);
+ int text_y = fm.height()+fm.ascent();
+
diff --git a/multimedia/olive/olive-0.1.2-QPainterPath.patch b/multimedia/olive/olive-0.1.2-QPainterPath.patch
new file mode 100644
index 0000000000..07cb22eae3
--- /dev/null
+++ b/multimedia/olive/olive-0.1.2-QPainterPath.patch
@@ -0,0 +1,44 @@
+diff --unified --recursive --text olive-0.1.2-orig/effects/internal/texteffect.cpp olive-0.1.2-new/effects/internal/texteffect.cpp
+--- olive-0.1.2-orig/effects/internal/texteffect.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/effects/internal/texteffect.cpp 2020-06-23 03:57:45.377783457 -0300
+@@ -25,6 +25,7 @@
+ #include <QOpenGLTexture>
+ #include <QTextEdit>
+ #include <QPainter>
++#include <QPainterPath>
+ #include <QPushButton>
+ #include <QColorDialog>
+ #include <QFontDatabase>
+diff --unified --recursive --text olive-0.1.2-orig/effects/internal/timecodeeffect.cpp olive-0.1.2-new/effects/internal/timecodeeffect.cpp
+--- olive-0.1.2-orig/effects/internal/timecodeeffect.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/effects/internal/timecodeeffect.cpp 2020-06-23 05:44:58.589605133 -0300
+@@ -25,6 +25,7 @@
+ #include <QOpenGLTexture>
+ #include <QTextEdit>
+ #include <QPainter>
++#include <QPainterPath>
+ #include <QPushButton>
+ #include <QColorDialog>
+ #include <QFontDatabase>
+diff --unified --recursive --text olive-0.1.2-orig/ui/graphview.cpp olive-0.1.2-new/ui/graphview.cpp
+--- olive-0.1.2-orig/ui/graphview.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/ui/graphview.cpp 2020-06-23 05:48:06.800458024 -0300
+@@ -21,6 +21,7 @@
+ #include "graphview.h"
+
+ #include <QPainter>
++#include <QPainterPath>
+ #include <QMouseEvent>
+ #include <QtMath>
+ #include <cfloat>
+diff --unified --recursive --text olive-0.1.2-orig/ui/timelineheader.cpp olive-0.1.2-new/ui/timelineheader.cpp
+--- olive-0.1.2-orig/ui/timelineheader.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/ui/timelineheader.cpp 2020-06-23 05:48:36.440594616 -0300
+@@ -21,6 +21,7 @@
+ #include "timelineheader.h"
+
+ #include <QPainter>
++#include <QPainterPath>
+ #include <QMouseEvent>
+ #include <QScrollBar>
+ #include <QtMath>
diff --git a/multimedia/olive/olive-0.1.2-QWheelEvent.patch b/multimedia/olive/olive-0.1.2-QWheelEvent.patch
new file mode 100644
index 0000000000..5270f51bb2
--- /dev/null
+++ b/multimedia/olive/olive-0.1.2-QWheelEvent.patch
@@ -0,0 +1,21 @@
+diff --unified --recursive --text olive-0.1.2-orig/ui/graphview.cpp olive-0.1.2-new/ui/graphview.cpp
+--- olive-0.1.2-orig/ui/graphview.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/ui/graphview.cpp 2020-06-23 17:55:37.852888364 -0300
+@@ -795,7 +795,7 @@
+ new_y_zoom = y_zoom + (zoom_diff * (delta_v / 120.0));
+
+ // Center zoom around the mouse cursor vertically
+- int true_mouse_y = height()-event->pos().y();
++ int true_mouse_y = height()-event->position().y();
+ set_scroll_y(qRound((double(y_scroll + true_mouse_y) / y_zoom) * new_y_zoom) - true_mouse_y);
+
+ redraw = true;
+@@ -807,7 +807,7 @@
+ new_x_zoom = x_zoom + (zoom_diff * (delta_h / 120.0));
+
+ // Center zoom around the mouse cursor horizontally
+- set_scroll_x(qRound((double(x_scroll + event->pos().x()) / x_zoom) * new_x_zoom) - event->pos().x());
++ set_scroll_x(qRound((double(x_scroll + event->position().x()) / x_zoom) * new_x_zoom) - event->position().x());
+
+ redraw = true;
+ }
diff --git a/multimedia/olive/olive-0.1.2-appdata-desktop.patch b/multimedia/olive/olive-0.1.2-appdata-desktop.patch
new file mode 100644
index 0000000000..b2b4e46613
--- /dev/null
+++ b/multimedia/olive/olive-0.1.2-appdata-desktop.patch
@@ -0,0 +1,24 @@
+diff --unified --recursive --text olive-0.1.2-orig/packaging/linux/org.olivevideoeditor.Olive.appdata.xml olive-0.1.2-new/packaging/linux/org.olivevideoeditor.Olive.appdata.xml
+--- olive-0.1.2-orig/packaging/linux/org.olivevideoeditor.Olive.appdata.xml 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/packaging/linux/org.olivevideoeditor.Olive.appdata.xml 2020-06-23 22:02:58.793224798 -0300
+@@ -31,7 +31,6 @@
+ </screenshots>
+ <content_rating type="oars-1.1" />
+ <releases>
+- <release version="20181223" date="2018-12-23"></release>
+- <release version="20181130" date="2018-11-30"></release>
++ <release version="0.1.2" date="2019-11-11"/>
+ </releases>
+ </component>
+diff --unified --recursive --text olive-0.1.2-orig/packaging/linux/org.olivevideoeditor.Olive.desktop olive-0.1.2-new/packaging/linux/org.olivevideoeditor.Olive.desktop
+--- olive-0.1.2-orig/packaging/linux/org.olivevideoeditor.Olive.desktop 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/packaging/linux/org.olivevideoeditor.Olive.desktop 2020-06-23 22:03:16.533367553 -0300
+@@ -3,7 +3,7 @@
+ Comment=Professional open-source non-linear video editor
+ Comment[it]=Programma di montaggio video professionale open-source
+ Comment[id]=Aplikasi edit video yang non-linier, profesional serta sumbernya terbuka.
+-Exec=olive-editor
++Exec=olive-editor %f
+ Icon=org.olivevideoeditor.Olive
+ Terminal=false
+ Type=Application
diff --git a/multimedia/olive/olive-0.1.2-cacher.patch b/multimedia/olive/olive-0.1.2-cacher.patch
new file mode 100644
index 0000000000..e93ed3e52b
--- /dev/null
+++ b/multimedia/olive/olive-0.1.2-cacher.patch
@@ -0,0 +1,24 @@
+diff --unified --recursive --text olive-0.1.2-orig/rendering/cacher.cpp olive-0.1.2-new/rendering/cacher.cpp
+--- olive-0.1.2-orig/rendering/cacher.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/rendering/cacher.cpp 2020-06-23 16:08:47.307076532 -0300
+@@ -254,7 +254,7 @@
+ dout << "starting rev_frame";
+ #endif
+ rev_frame->nb_samples = 0;
+- rev_frame->pts = frame_->pkt_pts;
++ rev_frame->pts = frame_->pts;
+ }
+ int offset = rev_frame->nb_samples * av_get_bytes_per_sample(static_cast<AVSampleFormat>(rev_frame->format)) * rev_frame->channels;
+ #ifdef AUDIOWARNINGS
+@@ -277,9 +277,9 @@
+ /*
+ #ifdef AUDIOWARNINGS
+ dout << "time for the end of rev cache" << rev_frame->nb_samples << clip->rev_target << frame_->pts << frame_->pkt_duration << frame_->nb_samples;
+- dout << "diff:" << (frame_->pkt_pts + frame_->pkt_duration) - clip->rev_target;
++ dout << "diff:" << (frame_->pts + frame_->pkt_duration) - clip->rev_target;
+ #endif
+- int cutoff = qRound64((((frame_->pkt_pts + frame_->pkt_duration) - reverse_target) * timebase) * audio_output->format().sampleRate());
++ int cutoff = qRound64((((frame_->pts + frame_->pkt_duration) - reverse_target) * timebase) * audio_output->format().sampleRate());
+ if (cutoff > 0) {
+ #ifdef AUDIOWARNINGS
+ dout << "cut off" << cutoff << "samples (rate:" << audio_output->format().sampleRate() << ")";
diff --git a/multimedia/olive/olive-0.1.2-clickablelabel.patch b/multimedia/olive/olive-0.1.2-clickablelabel.patch
new file mode 100644
index 0000000000..f0e8d93f9f
--- /dev/null
+++ b/multimedia/olive/olive-0.1.2-clickablelabel.patch
@@ -0,0 +1,14 @@
+diff --unified --recursive --text olive-0.1.2-orig/ui/clickablelabel.h olive-0.1.2-new/ui/clickablelabel.h
+--- olive-0.1.2-orig/ui/clickablelabel.h 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/ui/clickablelabel.h 2020-06-23 14:12:08.786765041 -0300
+@@ -31,8 +31,8 @@
+ class ClickableLabel : public QLabel {
+ Q_OBJECT
+ public:
+- ClickableLabel(QWidget * parent = 0, Qt::WindowFlags f = 0);
+- ClickableLabel(const QString & text, QWidget * parent = 0, Qt::WindowFlags f = 0);
++ ClickableLabel(QWidget * parent = 0, Qt::WindowFlags f = Qt::Widget);
++ ClickableLabel(const QString & text, QWidget * parent = 0, Qt::WindowFlags f = Qt::Widget);
+ void mousePressEvent(QMouseEvent *ev);
+ signals:
+ void clicked();
diff --git a/multimedia/olive/olive-0.1.2-proxygenerator.patch b/multimedia/olive/olive-0.1.2-proxygenerator.patch
new file mode 100644
index 0000000000..1fab14f604
--- /dev/null
+++ b/multimedia/olive/olive-0.1.2-proxygenerator.patch
@@ -0,0 +1,18 @@
+diff --unified --recursive --text olive-0.1.2-orig/project/proxygenerator.cpp olive-0.1.2-new/project/proxygenerator.cpp
+--- olive-0.1.2-orig/project/proxygenerator.cpp 2019-11-11 03:05:02.000000000 -0300
++++ olive-0.1.2-new/project/proxygenerator.cpp 2020-06-23 21:07:29.808353198 -0300
+@@ -167,7 +167,13 @@
+ }
+
+ // write video header
+- avformat_write_header(output_fmt_ctx, nullptr);
++ int error_code;
++ error_code = avformat_write_header(output_fmt_ctx, nullptr);
++ if (error_code < 0) {
++ qWarning() << "Failed to write video header";
++ cancelled = true;
++ skip = true;
++ }
+
+ // packet that av_read_frame will dump file packets into
+ AVPacket packet;
diff --git a/multimedia/OpenLP/OpenLP.SlackBuild b/multimedia/olive/olive.SlackBuild
index 635d762512..ffb365dd27 100644
--- a/multimedia/OpenLP/OpenLP.SlackBuild
+++ b/multimedia/olive/olive.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for OpenLP
+# Slackware build script for olive
-# Copyright 2014-2016 Dimitris Zlatanidis Orestiada, Greece
+# Copyright 2022-2023 Bloyburt
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=OpenLP
-VERSION=${VERSION:-2.0.5}
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=olive
+VERSION=${VERSION:-0.1.2}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -69,22 +79,26 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-python setup.py install --root=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+# Apply the various patches
+for i in $CWD/*.patch; do patch -p1 < $i; done
-install -D -m644 documentation/openlp.1 $PKG/usr/man/man1/openlp.1
-find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
-mkdir -p $PKG/usr/share/applications
-install -D -m644 $CWD/$PRGNAM.desktop $PKG/usr/share/applications/$PRGNAM.desktop
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
-mkdir -p $PKG/usr/share/pixmaps/
-install -D -m644 resources/images/${PRGNAM,,}-logo-48x48.png $PKG/usr/share/pixmaps/$PRGNAM.png
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a README.txt LICENSE copyright.txt documentation/* $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a *.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -92,4 +106,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/olive/olive.info b/multimedia/olive/olive.info
new file mode 100644
index 0000000000..cef08fa4bd
--- /dev/null
+++ b/multimedia/olive/olive.info
@@ -0,0 +1,10 @@
+PRGNAM="olive"
+VERSION="0.1.2"
+HOMEPAGE="https://olivevideoeditor.org/"
+DOWNLOAD="https://github.com/olive-editor/olive/archive/0.1.2/olive-0.1.2.tar.gz"
+MD5SUM="69f391ff44060ae08c7a462d71504515"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="openimageio graphviz"
+MAINTAINER="Bloyburt"
+EMAIL="alexpen@startmail.com"
diff --git a/multimedia/olive/slack-desc b/multimedia/olive/slack-desc
new file mode 100644
index 0000000000..11c6938a5a
--- /dev/null
+++ b/multimedia/olive/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+olive: olive (Olive Video Editor)
+olive:
+olive: Olive is a cross-platform video editing application licensed under
+olive: the GNU GPL version 3. The plan of the development team is to combine
+olive: complete colour managment, a fast and high-fidelity float-based
+olive: render pipeline, node-based compositing and audio-mixing, and a
+olive: highly efficient automated disk cache all together in one program.
+olive:
+olive: Homepage: https://olivevideoeditor.org/
+olive:
+olive:
diff --git a/multimedia/opencaster/README b/multimedia/opencaster/README
index d7fcf4c52d..d45ede8950 100644
--- a/multimedia/opencaster/README
+++ b/multimedia/opencaster/README
@@ -2,10 +2,10 @@ OpenCaster is a collection of tools for Linux system to play out and
multiplex MPEG2 transport stream format.
Use-cases:
- - MHP, MHEG5, HbbTv and others interactive tv standards object carousel
- broadcast
- - Playout of locally stored, offline encoded audio and video for non-live
- tv and radio stations
+ - MHP, MHEG5, HbbTv and other interactive TV standards object
+ carousel broadcast
+ - Playout of locally stored, offline encoded audio and video for
+ non-live tv and radio stations
- Multiplexing of input multicasted UDP transport stream to output
multicasted UDP transport stream
- VOD system based on mpeg2 transport stream over IP or over DVB for
@@ -16,20 +16,21 @@ Use-cases:
- PSI/SI generator
- EPG generator
-OpenCaster output has been successfully integrated with a long list of
-dvb products, among them there are products by Cisco/Scientific Atlanta,
-Ericsson/Tandberg, Dektec, Eurotek, Harmonic/Scopus, MainConcept, Mitan,
-Screen Service, Adtec, Wellav, Sr-Systems, Deltacast, ...
-Integration is tested and available on the Avalpa Broadcast Server
+OpenCaster output has been successfully integrated with a long list
+of dvb products, among them there are products by Cisco/Scientific
+Atlanta, Ericsson/Tandberg, Dektec, Eurotek, Harmonic/Scopus,
+MainConcept, Mitan, Screen Service, Adtec, Wellav, Sr-Systems,
+Deltacast, etc. Integration is tested and available on the Avalpa
+Broadcast Server
-OpenCaster has been tested with Rohde & Schwarz DVM100L, Rohde & Schwarz
-DVM 400, Dektec StreamXpert and a countless number of set top boxes,
-digital receivers and flat panels
+OpenCaster has been tested with Rohde & Schwarz DVM100L, Rohde &
+Schwarz DVM 400, Dektec StreamXpert and a countless number of set top
+boxes, digital receivers and flat panels
- PSI generation (PAT, PMT, NIT, SDT, TDT, AIT, TOT, ...)
- EPG/EIT generation
- - Object and data carousel generation and receivement (MHP, MHEG5, HbbTv,
- DVB-SSU, DSMCC, ...)
+ - Object and data carousel generation and receivement (MHP, MHEG5,
+ HbbTv, DVB-SSU, DSMCC, ...)
- third party software AC-3, MPEG2 audio, MPEG2 video and H264 video
encoders support
- Audio Description generation support
diff --git a/multimedia/opencaster/opencaster.SlackBuild b/multimedia/opencaster/opencaster.SlackBuild
index 167c2b31b1..8116647d6a 100644
--- a/multimedia/opencaster/opencaster.SlackBuild
+++ b/multimedia/opencaster/opencaster.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for opencaster
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=opencaster
VERSION=${VERSION:-3.2.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -103,4 +113,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/openh264/README b/multimedia/openh264/README
new file mode 100644
index 0000000000..8513923e9c
--- /dev/null
+++ b/multimedia/openh264/README
@@ -0,0 +1,4 @@
+Openh264 is a H.264 library supports encoding and
+decoding in realtime applications such as webRTC
+
+This is an optional dependency of FFmpeg
diff --git a/multimedia/openh264/changelog b/multimedia/openh264/changelog
new file mode 100644
index 0000000000..89bc471494
--- /dev/null
+++ b/multimedia/openh264/changelog
@@ -0,0 +1,22 @@
+Changelog for openh264 SlackBuild Script
+--------------------------------------------------------------------
+
+03/09/2022:
+
+Added to slackbuilds.org
+
+07/01/2023:
+
+Github tarball handling was fixed by Andrew Clemmons
+
+18/02/2023:
+
+openh264 slackbuild script fixed by B.Watson
+
+17/05/2023:
+
+updated to version 2.3.1
+
+13/02/2024:
+
+updated to version 2.4.1
diff --git a/multimedia/openh264/openh264.SlackBuild b/multimedia/openh264/openh264.SlackBuild
new file mode 100644
index 0000000000..5d1a5960de
--- /dev/null
+++ b/multimedia/openh264/openh264.SlackBuild
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# Slackware build script for openh264
+
+# Copyright 2022-2024 Vijay Marcel
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=openh264
+VERSION=${VERSION:-2.4.1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-march=i686 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-march=i686 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-march=x86-64 -mtune=generic -pipe -O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+rm -rf $TMP/$PRGNAM-$VERSION
+cd $TMP
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+
+make -C $TMP/$PRGNAM-$VERSION PREFIX="/usr" LIBDIR_NAME="lib${LIBDIRSUFFIX}" SHAREDLIB_DIR="/usr/lib${LIBDIRSUFFIX}"
+make DESTDIR="$PKG" PREFIX="/usr" LIBDIR_NAME="lib${LIBDIRSUFFIX}" SHAREDLIB_DIR="/usr/lib${LIBDIRSUFFIX}" install
+
+make OS=linux ARCH=$ARCH
+install -Dm755 h264dec $PKG/usr/bin/h264dec
+install -Dm755 h264enc $PKG/usr/bin/h264enc
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a CODING_STYLE LICENSE CONTRIBUTORS RELEASES *.md $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/openh264/openh264.info b/multimedia/openh264/openh264.info
new file mode 100644
index 0000000000..023b1f3dee
--- /dev/null
+++ b/multimedia/openh264/openh264.info
@@ -0,0 +1,10 @@
+PRGNAM="openh264"
+VERSION="2.4.1"
+HOMEPAGE="https://github.com/cisco/openh264"
+DOWNLOAD="https://github.com/cisco/openh264/archive/v2.4.1/openh264-2.4.1.tar.gz"
+MD5SUM="08396d6c467f7ae063d40b3a378870b0"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/tomahawk/slack-desc b/multimedia/openh264/slack-desc
index 934c3cb07a..d490a12df4 100644
--- a/multimedia/tomahawk/slack-desc
+++ b/multimedia/openh264/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-tomahawk: tomahawk (A new kind of music player)
-tomahawk:
-tomahawk: A new kind of music player that invites all your streams, downloads,
-tomahawk: cloud music storage, playlists, radio stations and friends to the
-tomahawk: same party. It's about time they all mingle.
-tomahawk:
-tomahawk:
-tomahawk:
-tomahawk:
-tomahawk:
-tomahawk: Home: http://www.tomahawk-player.org/
+openh264: openh264 (H.264 Encoder and Decoder)
+openh264:
+openh264: Openh264 is a H.264 library that supports both encoding
+openh264: and decoding. It is suitable for realtime applications
+openh264: such as WebRTC.
+openh264:
+openh264:
+openh264: Homepage: https://github.com/cisco/openh264
+openh264:
+openh264:
+openh264:
diff --git a/multimedia/openshot/README b/multimedia/openshot/README
index 802e5ac3d5..b25604dbd2 100644
--- a/multimedia/openshot/README
+++ b/multimedia/openshot/README
@@ -5,10 +5,3 @@ audio, and image formats.
Blender is an optional runtime dependency (for animated titles),
as is inkscape. To use them, set the full paths for the blender and
inkscape executables in the preferences menu.
-
-OpenShot depends on several of its dependent packages' support for python3.
-In many cases, the python3 support is optional in the dependent packages
-themselves so python3 is not listed in their REQUIRES field. As a result,
-automatic build queue generators will most likely _not_ provide a usable
-build queue. It is recommended that python3 be the first package to be built
-and installed before all the other packages required for openshot.
diff --git a/multimedia/openshot/doinst.sh b/multimedia/openshot/doinst.sh
index 9a8ded3c60..9424ce43ff 100644
--- a/multimedia/openshot/doinst.sh
+++ b/multimedia/openshot/doinst.sh
@@ -5,3 +5,9 @@ fi
if [ -x /usr/bin/update-mime-database ]; then
/usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/openshot/openshot.SlackBuild b/multimedia/openshot/openshot.SlackBuild
index 17a480e9ed..fc9a23f40b 100644
--- a/multimedia/openshot/openshot.SlackBuild
+++ b/multimedia/openshot/openshot.SlackBuild
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Copyright 2009, Jonathan Larsen (agentc0re), SLC, UT
# Contact Info: agentc0re 'AT' learnix 'DOT' net
#
-# Copyright 2016-2020 Christoph Willing, Brisbane Australia
+# Copyright 2016-2023 Christoph Willing, Brisbane Australia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -44,11 +44,18 @@
# From Oct 22nd, 2016-2020
# Maintenance & various version upgrades - Christoph Willing <chris.willing@linux.com>
+# 20220421 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - add gtk-update-icon-cache to doinst.sh.
+# - stop writing outside of $TMP (except /root/.openshot_qt/).
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=openshot
SRCNAM=openshot-qt
-VERSION=${VERSION:-2.5.1}
+VERSION=${VERSION:-3.1.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -58,7 +65,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -93,6 +104,11 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# 20220421 bkw: setup.py doesn't need to call update-mime-database and
+# update-desktop-database; it spams the real /usr, and our doinst.sh
+# already does the job.
+sed -i '/^if ROOT and/,$d' setup.py
+
python3 setup.py install --root=$PKG
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
@@ -109,4 +125,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/openshot/openshot.info b/multimedia/openshot/openshot.info
index 513e4e0e48..61051444b8 100644
--- a/multimedia/openshot/openshot.info
+++ b/multimedia/openshot/openshot.info
@@ -1,10 +1,10 @@
PRGNAM="openshot"
-VERSION="2.5.1"
-HOMEPAGE="http://www.openshotvideo.com"
-DOWNLOAD="https://github.com/OpenShot/openshot-qt/archive/v2.5.1/openshot-qt-2.5.1.tar.gz"
-MD5SUM="e59bf56ac01aee5f43491aebebe479a8"
+VERSION="3.1.1"
+HOMEPAGE="http://www.openshot.org"
+DOWNLOAD="https://github.com/OpenShot/openshot-qt/archive/v3.1.1/openshot-qt-3.1.1.tar.gz"
+MD5SUM="e4d2c4b198ba4f4cc9bb00f54be34e4e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="python3-PyQt5 python3-pyzmq libopenshot python-chardet httplib2 jack python3-certifi python-requests"
+REQUIRES="python3-pyzmq libopenshot python3-httplib2 jack"
MAINTAINER="Christoph Willing"
EMAIL="chris.willing@linux.com"
diff --git a/multimedia/opera-developer-ffmpeg-codecs/README b/multimedia/opera-developer-ffmpeg-codecs/README
deleted file mode 100644
index 64d2fe36b2..0000000000
--- a/multimedia/opera-developer-ffmpeg-codecs/README
+++ /dev/null
@@ -1,10 +0,0 @@
-opera-developer-ffmpeg-codecs (Extra ffmpeg codec for Opera browser)
-
-FFMpeg prebuilt binaries with proprietary codecs and build
-instructions for window, linux and osx.
-
-For tests, go to:
-
- * https://html5test.com
- * https://www.youtube.com/html5
- * http://www.quirksmode.org/html5/tests/video.html
diff --git a/multimedia/opera-developer-ffmpeg-codecs/opera-developer-ffmpeg-codecs.info b/multimedia/opera-developer-ffmpeg-codecs/opera-developer-ffmpeg-codecs.info
deleted file mode 100644
index e6f06943cc..0000000000
--- a/multimedia/opera-developer-ffmpeg-codecs/opera-developer-ffmpeg-codecs.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="opera-developer-ffmpeg-codecs"
-VERSION="0.44.1"
-HOMEPAGE="https://github.com/iteufel/nwjs-ffmpeg-prebuilt"
-DOWNLOAD="UNSUPPORTED"
-MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/iteufel/nwjs-ffmpeg-prebuilt/releases/download/0.44.1/0.44.1-linux-x64.zip"
-MD5SUM_x86_64="0ba67794b67d5160610c46f0bef77a74"
-REQUIRES="opera-developer"
-MAINTAINER="Edinaldo P. Silva"
-EMAIL="edps.mundognu@gmail.com"
diff --git a/multimedia/opera-developer-ffmpeg-codecs/slack-desc b/multimedia/opera-developer-ffmpeg-codecs/slack-desc
deleted file mode 100644
index 744d507e14..0000000000
--- a/multimedia/opera-developer-ffmpeg-codecs/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-opera-developer-ffmpeg-codecs: opera-developer-ffmpeg-codecs (Extra ffmpeg codec for Opera browser)
-opera-developer-ffmpeg-codecs:
-opera-developer-ffmpeg-codecs: FFMpeg prebuilt binaries with proprietary codecs and build
-opera-developer-ffmpeg-codecs: instructions for window, linux and osx.
-opera-developer-ffmpeg-codecs:
-opera-developer-ffmpeg-codecs: Home Page: https://github.com/iteufel/nwjs-ffmpeg-prebuilt
-opera-developer-ffmpeg-codecs:
-opera-developer-ffmpeg-codecs:
-opera-developer-ffmpeg-codecs:
-opera-developer-ffmpeg-codecs:
-opera-developer-ffmpeg-codecs:
diff --git a/multimedia/opera-ffmpeg-codecs/opera-ffmpeg-codecs.SlackBuild b/multimedia/opera-ffmpeg-codecs/opera-ffmpeg-codecs.SlackBuild
index a1b949b5a0..602f041145 100644
--- a/multimedia/opera-ffmpeg-codecs/opera-ffmpeg-codecs.SlackBuild
+++ b/multimedia/opera-ffmpeg-codecs/opera-ffmpeg-codecs.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
+#!/bin/bash
#
# Slackware build script for opera-ffmpeg-codecs.
#
-# Copyright 2016-2020 Edinaldo P. Silva, Rio de Janeiro, Brazil.
+# Copyright 2023-2024 Dimitris Zlatanidis, Orestiada, Greece.
+# Copyright 2016-2022 Edinaldo P. Silva, Rio de Janeiro, Brazil.
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +23,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM="opera-ffmpeg-codecs"
-VERSION=${VERSION:-0.44.1}
+VERSION=${VERSION:-0.86.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -90,4 +101,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/opera-ffmpeg-codecs/opera-ffmpeg-codecs.info b/multimedia/opera-ffmpeg-codecs/opera-ffmpeg-codecs.info
index 13c0969a2d..97163893e5 100644
--- a/multimedia/opera-ffmpeg-codecs/opera-ffmpeg-codecs.info
+++ b/multimedia/opera-ffmpeg-codecs/opera-ffmpeg-codecs.info
@@ -1,10 +1,10 @@
PRGNAM="opera-ffmpeg-codecs"
-VERSION="0.44.1"
+VERSION="0.86.0"
HOMEPAGE="https://github.com/iteufel/nwjs-ffmpeg-prebuilt"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/iteufel/nwjs-ffmpeg-prebuilt/releases/download/0.44.1/0.44.1-linux-x64.zip"
-MD5SUM_x86_64="0ba67794b67d5160610c46f0bef77a74"
+DOWNLOAD_x86_64="https://github.com/nwjs-ffmpeg-prebuilt/nwjs-ffmpeg-prebuilt/releases/download/0.86.0/0.86.0-linux-x64.zip"
+MD5SUM_x86_64="caa6cc0b6858a0fdf54caebdcf458d5c"
REQUIRES="opera"
-MAINTAINER="Edinaldo P. Silva"
-EMAIL="edps.mundognu@gmail.com"
+MAINTAINER="Dimitris Zlatanidis"
+EMAIL="dslackw@gmail.com"
diff --git a/multimedia/parole/README b/multimedia/parole/README
index 38a864e9a0..1f2df6c645 100644
--- a/multimedia/parole/README
+++ b/multimedia/parole/README
@@ -1,9 +1,9 @@
-Parole is a modern, simple media player based on the GStreamer framework
-and written to fit well in the Xfce desktop. Parole features playback of
-local media files, DVD/CD and live streams. Parole is extensible via
-plugins.
+Parole is a modern, simple media player based on the GStreamer
+framework and written to fit well in the Xfce desktop. Parole features
+playback of local media files, DVD/CD and live streams. Parole is
+extensible via plugins.
-The GStreamer framework provides a strong plugin interface to dynamically
-load plugins that support certain media types, the more GStreamer plugins
-you have installed in your system the more media formats you can play with
-Parole.
+The GStreamer framework provides a strong plugin interface to
+dynamically load plugins that support certain media types, the more
+GStreamer plugins you have installed in your system the more media
+formats you can play with Parole.
diff --git a/multimedia/parole/parole.SlackBuild b/multimedia/parole/parole.SlackBuild
index 1b72f9dc0d..52e4d4b3c5 100644
--- a/multimedia/parole/parole.SlackBuild
+++ b/multimedia/parole/parole.SlackBuild
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for parole
# Copyright 2007 Hans Strijards <hannesworst@gmail.com>
-# Copyright 2015-2017 Aaditya Bagga <aaditya_gnulinux@zoho.com>
+# Copyright 2015-2023 Aaditya <aaditya_gnulinux@zoho.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,26 +23,33 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=parole
-VERSION=${VERSION:-0.9.1}
+VERSION=${VERSION:-4.18.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) export ARCH=i486 ;;
- arm*) export ARCH=arm ;;
- *) export ARCH=$( uname -m ) ;;
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -65,10 +72,10 @@ tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -79,7 +86,6 @@ CXXFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
- --enable-debug=no \
--disable-static \
--build=$ARCH-slackware-linux
@@ -90,7 +96,7 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README THANKS TODO \
+ AUTHORS COPYING ChangeLog NEWS README.md THANKS TODO \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -99,4 +105,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/parole/parole.info b/multimedia/parole/parole.info
index 7b2d48621b..95230611fa 100644
--- a/multimedia/parole/parole.info
+++ b/multimedia/parole/parole.info
@@ -1,10 +1,10 @@
PRGNAM="parole"
-VERSION="0.9.1"
-HOMEPAGE="https://docs.xfce.org/apps/parole/introduction"
-DOWNLOAD="https://archive.xfce.org/src/apps/parole/0.9/parole-0.9.1.tar.bz2"
-MD5SUM="85d76320726cda93e29e0ea59141c34c"
+VERSION="4.18.1"
+HOMEPAGE="https://docs.xfce.org/apps/parole/start"
+DOWNLOAD="https://archive.xfce.org/src/apps/parole/4.18/parole-4.18.1.tar.bz2"
+MD5SUM="29a409b4b22c2d91f210679e5708a19d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="gst-libav"
-MAINTAINER="Aaditya Bagga"
+REQUIRES=""
+MAINTAINER="Aaditya"
EMAIL="aaditya_gnulinux@zoho.com"
diff --git a/multimedia/parole/slack-desc b/multimedia/parole/slack-desc
index 4dfcf2bef8..820b0d21f2 100644
--- a/multimedia/parole/slack-desc
+++ b/multimedia/parole/slack-desc
@@ -13,7 +13,7 @@ parole: framework and written to fit well in the Xfce desktop. Parole features
parole: playback of local media files, DVD/CD and live streams. It is designed
parole: with simplicity, speed and resource usage in mind.
parole:
-parole:
+parole: Homepage: https://docs.xfce.org/apps/parole/start
parole:
parole:
parole:
diff --git a/multimedia/pepperflash-plugin/README b/multimedia/pepperflash-plugin/README
deleted file mode 100644
index c595b62f78..0000000000
--- a/multimedia/pepperflash-plugin/README
+++ /dev/null
@@ -1,7 +0,0 @@
-This package contains Adobe's PPAPI Flash Plugin.
-
-You will have to accept the bundled license file if you want to use
-this closed-source plugin.
-
-If you are planning to use this with firefox you have to do it
-together with freshplayerplugin.
diff --git a/multimedia/pepperflash-plugin/pepperflash-plugin.SlackBuild b/multimedia/pepperflash-plugin/pepperflash-plugin.SlackBuild
deleted file mode 100644
index cd3ccaa0df..0000000000
--- a/multimedia/pepperflash-plugin/pepperflash-plugin.SlackBuild
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for pepperflash-plugin
-
-# Copyright 2016-2020 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
-
-PRGNAM=pepperflash-plugin
-SRCNAM=flash_player_ppapi_linux
-VERSION=${VERSION:-32.0.0.344}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i386 ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i386" ]; then
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- LIBDIRSUFFIX="64"
-else
- echo "$ARCH is unsupported." ; exit 1
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $OUTPUT \
- $PKG/usr/doc/$PRGNAM-$VERSION $PKG/usr/lib/pepperflashplugin-nonfree
-cd $PKG/usr/doc/$PRGNAM-$VERSION
-tar xvf $CWD/$SRCNAM.$ARCH.tar.gz
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-mv libpepflashplayer.so manifest.json $PKG/usr/lib/pepperflashplugin-nonfree/
-
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/pepperflash-plugin/pepperflash-plugin.info b/multimedia/pepperflash-plugin/pepperflash-plugin.info
deleted file mode 100644
index 208567cee6..0000000000
--- a/multimedia/pepperflash-plugin/pepperflash-plugin.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="pepperflash-plugin"
-VERSION="32.0.0.344"
-HOMEPAGE="https://get.adobe.com/flashplayer/otherversions/"
-DOWNLOAD="https://fpdownload.adobe.com/pub/flashplayer/pdc/32.0.0.344/flash_player_ppapi_linux.i386.tar.gz"
-MD5SUM="5f669fb6842b7290cf9f3a7f698a5d32"
-DOWNLOAD_x86_64="https://fpdownload.adobe.com/pub/flashplayer/pdc/32.0.0.344/flash_player_ppapi_linux.x86_64.tar.gz"
-MD5SUM_x86_64="5eefa51557b18a96a8b7e4a97c2d906e"
-REQUIRES=""
-MAINTAINER="Matteo Bernardini"
-EMAIL="ponce@slackbuilds.org"
diff --git a/multimedia/pepperflash-plugin/slack-desc b/multimedia/pepperflash-plugin/slack-desc
deleted file mode 100644
index 0b2ccd490b..0000000000
--- a/multimedia/pepperflash-plugin/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-pepperflash-plugin: pepperflash-plugin (flash PPAPI plugin)
-pepperflash-plugin:
-pepperflash-plugin: This package contains Adobe's PPAPI Flash Plugin.
-pepperflash-plugin:
-pepperflash-plugin: You will have to accept the bundled license file if you want to use
-pepperflash-plugin: this closed-source plugin.
-pepperflash-plugin:
-pepperflash-plugin: homepage: https://get.adobe.com/flashplayer/otherversions/
-pepperflash-plugin:
-pepperflash-plugin:
-pepperflash-plugin:
diff --git a/multimedia/picard-plugins/README b/multimedia/picard-plugins/README
index c4d03768fb..9e0322372d 100644
--- a/multimedia/picard-plugins/README
+++ b/multimedia/picard-plugins/README
@@ -1 +1,4 @@
-MusicBrainz Picard Plugins.
+MusicBrainz Picard Plugins
+
+aubio and python3-numpy are optional autodetected dependencies for the
+BPM plugin. The BPM plugin will not be installed without them.
diff --git a/multimedia/picard-plugins/picard-plugins.SlackBuild b/multimedia/picard-plugins/picard-plugins.SlackBuild
index b22de76ca6..be137fba89 100644
--- a/multimedia/picard-plugins/picard-plugins.SlackBuild
+++ b/multimedia/picard-plugins/picard-plugins.SlackBuild
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for "picard-plugins".
# Copyright 2015 Marcel Saegebarth <marc@mos6581.de>
-# Copyright 2018 Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
+# Copyright 2018-2024 Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -25,12 +25,14 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=picard-plugins
-DSTNAM=picard
-VERSION=${VERSION:-7d0cf37}
-COMMIT=${COMMIT:-7d0cf37373e35dcb43ff6597ca2a0becb1406f90}
+VERSION=${VERSION:-7b3b379}
+COMMIT=${COMMIT:-7b3b379a7b3cea5771ba16dd6bfbdf3e25731539}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -40,21 +42,15 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i586" ]; then
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- LIBDIRSUFFIX="64"
-else
- LIBDIRSUFFIX=""
-fi
-
set -e
rm -rf $PKG
@@ -70,13 +66,23 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-PYTHONDIR=$(python -c "import sys, os; print os.path.join('/usr/lib${LIBDIRSUFFIX}', 'python%s' % sys.version[:3], 'site-packages')")
-mkdir -p $PKG/$PYTHONDIR/$DSTNAM/plugins
-(
- cd plugins
- find . -maxdepth 2 -name '__init__.py' -printf '%h\n'|xargs mv -t $PKG/$PYTHONDIR/$DSTNAM/plugins/
- cp -a */* $PKG/$PYTHONDIR/$DSTNAM/plugins/
-)
+PYTHONDIR=$(python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])')
+PLUGINDIR=$PKG/$PYTHONDIR/picard/plugins
+mkdir -p $PLUGINDIR
+
+# Delete haikuattrs plugin as it is only for the Haiku operating system
+rm -rf plugins/haikuattrs
+
+# Move over all directories containing __init__.py
+find plugins/ -maxdepth 2 -name '__init__.py' -printf '%h\n' | xargs mv -t $PLUGINDIR
+
+# Copy over all the remaining .py files
+cp plugins/*/*.py $PLUGINDIR
+
+# Delete bpm plugin if aubio & python3-numpy dependencies are not available
+if ! python3 -c "import aubio; import numpy"; then
+ rm -rf $PLUGINDIR/bpm
+fi
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a README.md $PKG/usr/doc/$PRGNAM-$VERSION
@@ -86,4 +92,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/picard-plugins/picard-plugins.info b/multimedia/picard-plugins/picard-plugins.info
index 60e7cd6f97..69fda26c9c 100644
--- a/multimedia/picard-plugins/picard-plugins.info
+++ b/multimedia/picard-plugins/picard-plugins.info
@@ -1,8 +1,8 @@
PRGNAM="picard-plugins"
-VERSION="7d0cf37"
+VERSION="7b3b379"
HOMEPAGE="https://picard.musicbrainz.org/plugins/"
-DOWNLOAD="https://github.com/metabrainz/picard-plugins/archive/7d0cf37/picard-plugins-7d0cf37373e35dcb43ff6597ca2a0becb1406f90.tar.gz"
-MD5SUM="88cdba544962868cd1a58aeccd9abc0e"
+DOWNLOAD="https://github.com/metabrainz/picard-plugins/archive/7b3b379/picard-plugins-7b3b379a7b3cea5771ba16dd6bfbdf3e25731539.tar.gz"
+MD5SUM="91da71aa74f6a2b639c9e38528d7b713"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="picard"
diff --git a/multimedia/picard/picard.SlackBuild b/multimedia/picard/picard.SlackBuild
index 6ba10d3226..563f8bc7b5 100644
--- a/multimedia/picard/picard.SlackBuild
+++ b/multimedia/picard/picard.SlackBuild
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for "picard".
+# Slackware build script for Picard
# Copyright 2014-2015 Marcel Saegebarth <marc@mos6581.de>
-# Copyright 2018 Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
+# Copyright 2018-2024 Jeremy Hansen <jebrhansen+SBo@gmail.com>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -25,10 +25,13 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=picard
-VERSION=${VERSION:-1.4.2}
+VERSION=${VERSION:-2.11}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -38,23 +41,23 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
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 -fPIC"
- LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
set -e
@@ -62,8 +65,8 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+rm -rf $PRGNAM-release-$VERSION
+tar xvf $CWD/$PRGNAM-release-$VERSION.tar.gz
cd $PRGNAM-release-$VERSION
chown -R root:root .
find -L . \
@@ -74,8 +77,8 @@ find -L . \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
-python setup.py build
-python setup.py install --root $PKG
+
+python3 setup.py install --root $PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
@@ -89,4 +92,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/picard/picard.info b/multimedia/picard/picard.info
index 88b5a45340..d8cb9f47b5 100644
--- a/multimedia/picard/picard.info
+++ b/multimedia/picard/picard.info
@@ -1,10 +1,10 @@
PRGNAM="picard"
-VERSION="1.4.2"
+VERSION="2.11"
HOMEPAGE="https://picard.musicbrainz.org/"
-DOWNLOAD="ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-1.4.2.tar.gz"
-MD5SUM="f39b57aa2e5e71d09e1f664be8b21971"
+DOWNLOAD="https://github.com/metabrainz/picard/archive/release-2.11/picard-release-2.11.tar.gz"
+MD5SUM="106a1b0afa417beb6aaad8c544bbdce6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="mutagen chromaprint"
+REQUIRES="chromaprint python3-fasteners mutagen python3-dateutil python-discid python3-pyjwt"
MAINTAINER="Jeremy Hansen"
EMAIL="jebrhansen+SBo@gmail.com"
diff --git a/multimedia/pipe-viewer/README b/multimedia/pipe-viewer/README
new file mode 100644
index 0000000000..801a5c5327
--- /dev/null
+++ b/multimedia/pipe-viewer/README
@@ -0,0 +1,46 @@
+pipe-viewer (search and stream videos from youtube)
+
+pipe-viewer is a lightweight application for searching and streaming
+videos from YouTube. pipe-viewer is a fork of youtube-viewer that
+does not require a Google API key. Usage and user interface are
+identical to youtube-viewer.
+
+For playing videos, this uses mplayer, vlc, or mpv. However, the
+mplayer that ships with Slackware has some issues with pipe-viewer
+(or actually with youtube: the audio stream cuts out randomly, and
+can be fixed by pressing the left arrow usually).
+
+Optional dependencies:
+
+vlc and/or mpv - for playing videos. highly recommended.
+perl-Gtk3, perl-File-ShareDir - for gtk-pipe-viewer.
+perl-lwp-useragent-cached - for local cache support.
+perl-JSON-XS - for faster JSON deserialization.
+perl-Text-CharWidth, perl-Unicode-LineBreak - for better formatting
+ in the terminal.
+yt-dlp or youtube-dl [1] - if this is present, pipe-viewer will use it
+ to detect available formats for the video.
+
+Counting optional ones, pipe-viewer has over 40 dependencies. To make
+life easier, there's a "pipe-viewer.sqf" queue file included with this
+build, which includes everything listed above (except mpv and vlc).
+
+This build always includes the command-line client (pipe-viewer). For
+the GTK client (gtk-pipe-viewer[3]), install perl-Gtk3 and
+perl-File-ShareDir before running this script. If you have them
+installed but don't want gtk-pipe-viewer, you can set GTK=no in the
+script's environment.
+
+Notes:
+
+[1] A small caveat about yt-dlp and youtube-dl: pipe-viewer works
+ without them, though occasionally it'll choose a lower quality
+ than is available for some videos. However, if yt-dlp or
+ youtube-dl are present but outdated, pipe-viewer will fail to
+ play videos at all! If you suspect this, remove yt-dlp and/or
+ youtube-dl and try without them.
+
+[3] To force gtk-pipe-viewer to use your preferred terminal for
+ downloading with wget and watching in a terminal, set
+ TERMINAL in the script's environment (e.g. TERMINAL="xterm" or
+ TERMINAL="urxvt").
diff --git a/multimedia/pipe-viewer/doinst.sh b/multimedia/pipe-viewer/doinst.sh
new file mode 100644
index 0000000000..daf1ce3148
--- /dev/null
+++ b/multimedia/pipe-viewer/doinst.sh
@@ -0,0 +1,10 @@
+
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/straw-viewer/straw-viewer.SlackBuild b/multimedia/pipe-viewer/pipe-viewer.SlackBuild
index 7ac1fee7a9..eaca62f641 100644
--- a/multimedia/straw-viewer/straw-viewer.SlackBuild
+++ b/multimedia/pipe-viewer/pipe-viewer.SlackBuild
@@ -1,52 +1,42 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for straw-viewer
+# Slackware build script for pipe-viewer
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
-# 20200310 bkw: update to not-quite-latest git. Next commit after 9089523
-# removes mplayer support, which kinda sucks for Slackware users since
-# mplayer ships with the OS (but mpv and vlc don't). My next update will
-# likely re-add mplayer support, unless it's totally broken.
-
-# 20200302 bkw: new build, based on youtube-viewer, of which straw-viewer
-# is a fork. See https://github.com/trizen/youtube-viewer/issues/308 for
-# why. Packaging a git commit because the latest (only) release has some
-# issues that have been fixed.
-
-PRGNAM=straw-viewer
-VERSION=${VERSION:-0.0.2+20200307_9089523}
+# 20240313 bkw: update for v0.5.0.
+# 20240215 bkw: update for v0.4.9.
+# 20240103 bkw: BUILD=2, thanks to Albert Verlinde for patching
+# a missing } in restore_mplayer.diff.
+# 20230926 bkw: update for v0.4.8.
+# 20230629 bkw: update for v0.4.7.
+# 20230103 bkw: v0.4.4 BUILD=2:
+# - size icons correctly.
+# - include doinst.sh if gtk frontend built.
+# - ARCH=noarch, there's no lib vs. lib64 or compiled code here.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=pipe-viewer
+VERSION=${VERSION:-0.5.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
+ARCH=noarch
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
fi
-CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
+# No SLKCFLAGS or LIBDIRSUFFIX needed (pure perl).
set -e
@@ -54,7 +44,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
@@ -76,9 +66,12 @@ esac
echo "=== GTK=$GTK BUILD_GTK=$BUILD_GTK GTKOPT=$GTKOPT"
-# 20200228 bkw: upstream claims gtk+3-3.20 is required, but everything
-# actually works fine with 14.2's 3.18. So:
-sed -i 's,"3.20","3.18",' share/gtk-$PRGNAM.glade
+# Upstream used to support mplayer (in the original youtube-viewer,
+# before the straw-viewer and pipe-viewer forks), then dropped it.
+# That's as may be, but mplayer is included in core Slackware and the
+# other players aren't. So we'll give the user the option to at least
+# try it.
+patch -p1 < $CWD/restore_mplayer.diff
perl Build.PL prefix=/usr installdirs=vendor --destdir="$PKG" $GTKOPT
./Build
@@ -88,18 +81,30 @@ mv $PKG/usr/share/man $PKG/usr/man
gzip -9 $PKG/usr/man/man?/*.?
if [ "$BUILD_GTK" = "yes" ]; then
- # link .desktop and icon to standard locations
+ # link .desktop to standard locations
mkdir -p $PKG/usr/share/applications $PKG/usr/share/pixmaps
- LNPATH="../perl5/vendor_perl/auto/share/dist/WWW-StrawViewer"
+ LNPATH="../perl5/vendor_perl/auto/share/dist/WWW-PipeViewer"
ln -s $LNPATH/gtk-$PRGNAM.desktop \
$PKG/usr/share/applications/gtk-$PRGNAM.desktop
- ln -s $LNPATH/icons/gtk-$PRGNAM.png \
- $PKG/usr/share/pixmaps/gtk-$PRGNAM.png
+
+ # icon is huge (351x313)...
+ for px in 16 32 48 64 128; do
+ size=${px}x${px}
+ dir=$PKG/usr/share/icons/hicolor/$size/apps
+ mkdir -p $dir
+ convert -resize $size! share/icons/gtk-pipe-viewer.png $dir/gtk-$PRGNAM.png
+ done
+
+ ln -s ../icons/hicolor/48x48/apps/gtk-$PRGNAM.png \
+ $PKG/usr/share/pixmaps/gtk-$PRGNAM.png
# support TERMINAL option for user's preferred terminal.
if [ "$TERMINAL" != "" ]; then
sed -i "s/'gnome-terminal'/'$TERMINAL', &/" $PKG/usr/bin/gtk-$PRGNAM
fi
+
+ mkdir -p $PKG/install
+ cat $CWD/doinst.sh > $PKG/install/doinst.sh
fi
find $PKG -name perllocal.pod \
@@ -109,9 +114,10 @@ find $PKG -name perllocal.pod \
find $PKG -depth -type d -empty -delete || true
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a Changes LICENSE README* $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a Changes LICENSE README* $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
# the permissions in the final package are weird.
find $PKG -type f -print0 | xargs -0 chmod 644
@@ -122,4 +128,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/pipe-viewer/pipe-viewer.info b/multimedia/pipe-viewer/pipe-viewer.info
new file mode 100644
index 0000000000..391f448982
--- /dev/null
+++ b/multimedia/pipe-viewer/pipe-viewer.info
@@ -0,0 +1,10 @@
+PRGNAM="pipe-viewer"
+VERSION="0.5.0"
+HOMEPAGE="https://github.com/trizen/pipe-viewer/"
+DOWNLOAD="https://github.com/trizen/pipe-viewer/archive/0.5.0/pipe-viewer-0.5.0.tar.gz"
+MD5SUM="c60d39db9e09c723a53b7bb4185dd13f"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="perl-data-dump perl-JSON perl-LWP-Protocol-https perl-Module-Build perl-Term-ReadLine-Gnu"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/youtube-viewer/youtube-viewer.sqf b/multimedia/pipe-viewer/pipe-viewer.sqf
index 62b97da674..4d23894c09 100644
--- a/multimedia/youtube-viewer/youtube-viewer.sqf
+++ b/multimedia/pipe-viewer/pipe-viewer.sqf
@@ -1,7 +1,4 @@
-perl-Text-CharWidth
-perl-MIME-Charset
-perl-Unicode-LineBreak
-perl-Term-ReadLine-Gnu
+yt-dlp
perl-html-tagset
perl-lwp-mediatypes
perl-http-date
@@ -9,34 +6,37 @@ perl-html-parser
perl-encode-locale
perl-IO-HTML
perl-http-message
+perl-extutils-pkgconfig
+perl-extutils-depends
perl-www-robotrules
perl-net-http
perl-http-negotiate
perl-http-daemon
perl-http-cookies
+perl-glib
perl-file-listing
perl-common-sense
-perl-Net-LibIDN
-Net-SSLeay
+perl-cairo
perl-Types-Serialiser
perl-Test-RequiresInternet
perl-PAR-Dist
perl-Mozilla-CA
-perl-IO-Socket-SSL
+perl-MIME-Charset
+perl-Glib-Object-Introspection
+perl-File-ShareDir-Install
+perl-Class-Inspector
perl-Canary-Stability
+perl-Cairo-GObject
libwww-perl
perl-lwp-useragent-cached
perl-data-dump
+perl-Unicode-LineBreak
+perl-Text-CharWidth
+perl-Term-ReadLine-Gnu
perl-Module-Build
perl-LWP-Protocol-https
perl-JSON-XS
perl-JSON
-perl-Class-Inspector
+perl-Gtk3
perl-File-ShareDir
-perl-extutils-pkgconfig
-perl-extutils-depends
-perl-glib
-perl-cairo
-perl-pango
-perl-gtk2
-youtube-viewer
+pipe-viewer
diff --git a/multimedia/pipe-viewer/restore_mplayer.diff b/multimedia/pipe-viewer/restore_mplayer.diff
new file mode 100644
index 0000000000..7da92dcc64
--- /dev/null
+++ b/multimedia/pipe-viewer/restore_mplayer.diff
@@ -0,0 +1,36 @@
+diff -Naur pipe-viewer-0.4.7/bin/gtk-pipe-viewer pipe-viewer-0.4.7.patched/bin/gtk-pipe-viewer
+--- pipe-viewer-0.4.7/bin/gtk-pipe-viewer 2023-06-11 08:55:44.000000000 -0400
++++ pipe-viewer-0.4.7.patched/bin/gtk-pipe-viewer 2023-06-29 02:19:58.827392189 -0400
+@@ -191,6 +191,13 @@
+ fs => q{--fullscreen},
+ arg => q{--really-quiet --force-media-title=*TITLE* --no-ytdl --no-terminal *VIDEO*},
+ },
++ mplayer => {
++ cmd => q{mplayer},
++ srt => q{-sub *SUB*},
++ audio => q{-audiofile *AUDIO*},
++ fs => q{-fs},
++ arg => q{-prefer-ipv4 -really-quiet -title *TITLE* *VIDEO*},
++ },
+ },
+ video_player_selected => undef, # autodetect it later
+
+diff -Naur pipe-viewer-0.4.7/bin/pipe-viewer pipe-viewer-0.4.7.patched/bin/pipe-viewer
+--- pipe-viewer-0.4.7/bin/pipe-viewer 2023-06-11 08:55:44.000000000 -0400
++++ pipe-viewer-0.4.7.patched/bin/pipe-viewer 2023-06-29 02:36:34.948298445 -0400
+@@ -200,6 +200,15 @@
+ arg => q{--really-quiet --force-media-title=*TITLE* --no-ytdl *VIDEO*},
+ novideo => q{--no-video},
+ },
++
++ mplayer => {
++ cmd => q{mplayer},
++ srt => q{-sub *SUB*},
++ audio => q{-audiofile *AUDIO*},
++ fs => q{-fs},
++ arg => q{-prefer-ipv4 -really-quiet -title *TITLE* *VIDEO*},
++ novideo => q{-novideo},
++ },
+ },
+
+ video_player_selected => (
diff --git a/multimedia/pipe-viewer/slack-desc b/multimedia/pipe-viewer/slack-desc
new file mode 100644
index 0000000000..f68a2363c1
--- /dev/null
+++ b/multimedia/pipe-viewer/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+pipe-viewer: pipe-viewer (search and stream videos from youtube)
+pipe-viewer:
+pipe-viewer: pipe-viewer is lightweight application (fork of straw-viewer) for
+pipe-viewer: searching and playing videos from YouTube. This fork parses the
+pipe-viewer: YouTube website directly and relies on invidious instances only as a
+pipe-viewer: fallback method.
+pipe-viewer:
+pipe-viewer:
+pipe-viewer:
+pipe-viewer:
+pipe-viewer:
diff --git a/multimedia/pitivi/README b/multimedia/pitivi/README
index e945ae8554..e70f61f8e0 100644
--- a/multimedia/pitivi/README
+++ b/multimedia/pitivi/README
@@ -7,15 +7,10 @@ It uses the gstreamer media framework, so it has support for most
audio/video formats. It includes hundreds of animated effects,
transitions and filters.
-Future versions are not currently possible on 14.2 due to requiring
-newer gst libraries than are included on 14.2.
+python3-librosa is an optional dependency to enable beat detection
+functionality
-gst-libav is an optional dependency to add libav support to gstreamer
-
-The following optional dependencies are not currently available on SBo:
-pycanberra - enable sound notification when rendering completes
-GnomeDesktop - file thumbnails provided by GNOME's thumbnailers
-notify - enables visual notifications when rendering is complete
-
-NOTE: Please make sure python3-dateutil and python3-six are installed
-before building python3-matplotlib!
+NOTE: The starting output mentions cvtracker is an optional
+dependency to enable object tracking, however, this wasn't added
+to gst-plugins-bad until v1.19.2, so it will need to wait until
+the next Slackware version (or -current).
diff --git a/multimedia/pitivi/pitivi.SlackBuild b/multimedia/pitivi/pitivi.SlackBuild
index 5b5ea347d2..392737d593 100644
--- a/multimedia/pitivi/pitivi.SlackBuild
+++ b/multimedia/pitivi/pitivi.SlackBuild
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for PiTiVi
# Copyright 2010, 2012 Binh Nguyen <binhvng@gmail.com>
# Copyright 2012-2017 Ryan P.C. McQuen | Everett, WA | ryanpcmcquen@member.fsf.org
-# Copyright 2017 Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
+# Copyright 2017-2023 Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,10 +23,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=pitivi
-VERSION=${VERSION:-0.95}
-BUILD=${BUILD:-3}
+VERSION=${VERSION:-2023.03}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -70,26 +80,24 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ --sysconfdir=/etc
+ ninja
+ DESTDIR=$PKG ninja install
+cd ..
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -97,4 +105,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/pitivi/pitivi.info b/multimedia/pitivi/pitivi.info
index 91cf0945cb..e323ec7c77 100644
--- a/multimedia/pitivi/pitivi.info
+++ b/multimedia/pitivi/pitivi.info
@@ -1,10 +1,10 @@
PRGNAM="pitivi"
-VERSION="0.95"
+VERSION="2023.03"
HOMEPAGE="http://www.pitivi.org/"
-DOWNLOAD="https://download.gnome.org/sources/pitivi/0.95/pitivi-0.95.tar.xz"
-MD5SUM="7bb0bca1b25ef592f0105c3ad93b8c20"
+DOWNLOAD="https://download.gnome.org/sources/pitivi/2023/pitivi-2023.03.tar.xz"
+MD5SUM="9a0ad11679df2a5c9fac004bac88f1a7"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="gst-plugins-bad python3-matplotlib pygobject3-python3 gstreamer-editing-services gst-python3 python3-dateutil python3-six"
+REQUIRES="appstream-glib gsound gst-editing-services gst-python libpeas python3-matplotlib"
MAINTAINER="Jeremy Hansen"
EMAIL="jebrhansen+SBo@gmail.com"
diff --git a/multimedia/plasmatube/README b/multimedia/plasmatube/README
new file mode 100644
index 0000000000..6ec2afc67a
--- /dev/null
+++ b/multimedia/plasmatube/README
@@ -0,0 +1,4 @@
+plasmatube allows you to watch youtube videos on your
+desktop or mobile using a elegant user interface integrated
+with the rest of plasma.
+
diff --git a/multimedia/plasmatube/doinst.sh b/multimedia/plasmatube/doinst.sh
new file mode 100644
index 0000000000..5b35a0a29e
--- /dev/null
+++ b/multimedia/plasmatube/doinst.sh
@@ -0,0 +1,14 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -x /usr/bin/update-mime-database ]; then
+ /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
+fi
+
+# If other icon themes are installed, then add to/modify this as needed
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/plasmatube/plasmatube.SlackBuild b/multimedia/plasmatube/plasmatube.SlackBuild
new file mode 100644
index 0000000000..680d204491
--- /dev/null
+++ b/multimedia/plasmatube/plasmatube.SlackBuild
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+# Slackware build script for plasmatube
+
+# Copyright 2022 Vijay Marcel
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=plasmatube
+VERSION=${VERSION:-22.09}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-v$VERSION.tar.gz
+cd $PRGNAM-v$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+cmake -B build -S $TMP/$PRGNAM-v$VERSION \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_INSTALL_LIBDIR:PATH=/usr/lib${LIBDIRSUFFIX} \
+ -DCMAKE_INSTALL_BINDIR:PATH=/usr/bin \
+ -DCMAKE_BUILD_TYPE=Release
+
+make -C build
+make -C build install DESTDIR=$PKG
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+chmod 0644 $PKG/usr/share/applications/org.kde.plasmatube.desktop
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a README.md LICENSES/* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/plasmatube/plasmatube.info b/multimedia/plasmatube/plasmatube.info
new file mode 100644
index 0000000000..5106ed6d4a
--- /dev/null
+++ b/multimedia/plasmatube/plasmatube.info
@@ -0,0 +1,10 @@
+PRGNAM="plasmatube"
+VERSION="22.09"
+HOMEPAGE="https://apps.kde.org"
+DOWNLOAD="https://invent.kde.org/plasma-mobile/plasmatube/-/archive/v22.09/plasmatube-v22.09.tar.gz"
+MD5SUM="3be983b0a53a2249ab6a3040f38d6be7"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/simpleburn/slack-desc b/multimedia/plasmatube/slack-desc
index 821255fa77..e44a1eb7fe 100644
--- a/multimedia/simpleburn/slack-desc
+++ b/multimedia/plasmatube/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-simpleburn: simpleburn (CD/DVD burning and extraction tool)
-simpleburn:
-simpleburn: SimpleBurn is a minimalistic application for burning and extracting
-simpleburn: CDs and DVDs. It basically is a Cdrtools frontend and is designed in
-simpleburn: two parts: the GUI (GTK) and a BASH script that handle the requested
-simpleburn: actions.
-simpleburn:
-simpleburn:
-simpleburn: http://simpleburn.tuxfamily.org
-simpleburn:
-simpleburn:
+plasmatube: plasmatube (Watch YouTube Videos)
+plasmatube:
+plasmatube: plasmatube allows you to watch youtube videos on your
+plasmatube: desktop or mobile using a elegant user interface integrated
+plasmatube: with the rest of plasma.
+plasmatube:
+plasmatube:
+plasmatube: Homepage:https://apps.kde.org
+plasmatube:
+plasmatube:
+plasmatube:
diff --git a/multimedia/playerctl/playerctl.SlackBuild b/multimedia/playerctl/playerctl.SlackBuild
index 614c3ca937..91d897a166 100644
--- a/multimedia/playerctl/playerctl.SlackBuild
+++ b/multimedia/playerctl/playerctl.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for playerctl
@@ -22,10 +22,16 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230704 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - gzip the man page.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=playerctl
-VERSION=${VERSION:-0.5.0}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-2.4.1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +41,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -65,27 +75,30 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} + -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./autogen.sh \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --disable-static \
- --build=$ARCH-slackware-linux
-
-make -j1
-make install DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
+
+mkdir build
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ -Dbash-completions=true \
+ -Dzsh-completions=true \
+ -Dstrip=true \
+ --sysconfdir=/etc
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+gzip -9 $PKG/usr/man/man*/*
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
@@ -97,4 +110,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/playerctl/playerctl.info b/multimedia/playerctl/playerctl.info
index 471768965a..50e873ed82 100644
--- a/multimedia/playerctl/playerctl.info
+++ b/multimedia/playerctl/playerctl.info
@@ -1,8 +1,8 @@
PRGNAM="playerctl"
-VERSION="0.5.0"
+VERSION="2.4.1"
HOMEPAGE="https://github.com/acrisci/playerctl"
-DOWNLOAD="https://github.com/acrisci/playerctl/archive/v0.5.0/playerctl-0.5.0.tar.gz"
-MD5SUM="1c6059978ca08c32d9f991fdccb30f6f"
+DOWNLOAD="https://github.com/acrisci/playerctl/archive/v2.4.1/playerctl-2.4.1.tar.gz"
+MD5SUM="795c7f66fb865aa87a301b11f2a78940"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/plex-home-theater/README b/multimedia/plex-home-theater/README
deleted file mode 100644
index 9c108a4759..0000000000
--- a/multimedia/plex-home-theater/README
+++ /dev/null
@@ -1,5 +0,0 @@
-Plex Home Theater is optimized for the big screen and supports
-a wide variety of formats with high-definition audio, native
-framerates, and more.
-
-(Some) Optional dependencies: libbluray libcec libnfs
diff --git a/multimedia/plex-home-theater/disable_via_ace.patch b/multimedia/plex-home-theater/disable_via_ace.patch
deleted file mode 100644
index 73b3eb4413..0000000000
--- a/multimedia/plex-home-theater/disable_via_ace.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- plex/Third-Party/aes/aesopt.h.org 2015-02-03 21:32:46.000000000 +0100
-+++ plex/Third-Party/aes/aesopt.h 2015-02-09 11:00:02.966550150 +0100
-@@ -163,11 +163,7 @@
-
- /* 2. Intel AES AND VIA ACE SUPPORT */
-
--#if defined( __GNUC__ ) && defined( __i386__ ) \
-- || defined(_WIN32) && defined(_M_IX86) \
-- && !(defined(_WIN64) || defined(_WIN32_WCE) || defined(_MSC_VER) && (_MSC_VER <= 800))
--# define VIA_ACE_POSSIBLE
--#endif
-+# undef VIA_ACE_POSSIBLE
-
- /* Define this option if support for the Intel AESNI is required (not
- currently available with GCC). If AESNI is known to be present, then
diff --git a/multimedia/plex-home-theater/fribidi.patch b/multimedia/plex-home-theater/fribidi.patch
deleted file mode 100644
index 3b135bdfc3..0000000000
--- a/multimedia/plex-home-theater/fribidi.patch
+++ /dev/null
@@ -1,47 +0,0 @@
---- a/plex/CMakeModules/FindFriBiDi.cmake
-+++ b/plex/CMakeModules/FindFriBiDi.cmake
-@@ -10,43 +10,9 @@
- # FRIBIDI_LIBRARY, where to find the FriBiDi library.
-
- include(CheckSymbolExists)
-+include(FindPkgConfig)
-+pkg_check_modules(FRIBIDI fribidi)
-
--SET(FRIBIDI_FOUND "NO")
--
--# Set variable in temp var, otherwise FIND_PATH might fail
--# unset isn't present in the required version of cmake.
--FIND_PATH(xFRIBIDI_INCLUDE_DIR fribidi.h
-- PATHS /usr/local/include
-- /usr/include
-- PATH_SUFFIXES fribidi
-- )
--set(FRIBIDI_INCLUDE_DIR ${xFRIBIDI_INCLUDE_DIR})
--
--SET(FRIBIDI_NAMES ${FRIBIDI_NAMES} fribidi libfribidi)
--FIND_LIBRARY(FRIBIDI_LIBRARY
-- NAMES ${FRIBIDI_NAMES}
-- PATHS /usr/lib /usr/local/lib
-- )
--
--IF (FRIBIDI_LIBRARY AND FRIBIDI_INCLUDE_DIR)
-- SET(CMAKE_REQUIRED_INCLUDES ${FRIBIDI_INCLUDE_DIR})
-- SET(CMAKE_REQUIRED_LIBRARIES ${FRIBIDI_LIBRARY})
-- CHECK_SYMBOL_EXISTS(fribidi_utf8_to_unicode fribidi.h FOUND_fribidi_utf8_to_unicode)
-- CHECK_SYMBOL_EXISTS(fribidi_charset_to_unicode fribidi.h FOUND_fribidi_charset_to_unicode)
-- if(FOUND_fribidi_charset_to_unicode)
-- SET(FRIBIDI_LIBRARIES ${FRIBIDI_LIBRARY})
-- SET(FRIBIDI_FOUND "YES")
-- elseif(FOUND_fribidi_utf8_to_unicode)
-- SET(FRIBIDI_LIBRARIES ${FRIBIDI_LIBRARY})
-- SET(FRIBIDI_FOUND "YES")
-- add_definitions(-DOLD_FRIBIDI)
-- MESSAGE(STATUS "Legacy FriBiDi: ${FRIBIDI_LIBRARY}")
-- else()
-- SET(FRIBIDI_LIBRARIES "NOTFOUND")
-- SET(FRIBIDI_INCLUDE_DIR "NOTFOUND")
-- SET(FRIBIDI_FOUND "NO")
-- endif()
--ENDIF (FRIBIDI_LIBRARY AND FRIBIDI_INCLUDE_DIR)
-
- IF (FRIBIDI_FOUND)
diff --git a/multimedia/plex-home-theater/plex-home-theater b/multimedia/plex-home-theater/plex-home-theater
deleted file mode 100644
index d2ce5b48a8..0000000000
--- a/multimedia/plex-home-theater/plex-home-theater
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# disable PulseAudio
-export AE_ENGINE=Soft
-
-export XBMC_HOME=/opt/plex-home-theater/share/XBMC
-exec /opt/plex-home-theater/bin/plexhometheater
diff --git a/multimedia/plex-home-theater/plex-home-theater.SlackBuild b/multimedia/plex-home-theater/plex-home-theater.SlackBuild
deleted file mode 100644
index ed7ca38074..0000000000
--- a/multimedia/plex-home-theater/plex-home-theater.SlackBuild
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for "plex-home-theater".
-
-# Copyright 2014-2015 Marcel Saegebarth <marc@mos6581.de>
-# All rights reserved.
-#
-# 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.
-#
-# 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.
-
-PRGNAM=plex-home-theater
-VERSION=${VERSION:-1.4.1.469}
-REV=${REV:-47a90f01}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-public-$VERSION-$REV
-tar xvf $CWD/$PRGNAM-public-$VERSION-$REV.tar.gz || tar xvf $CWD/v$VERSION-$REV.tar.gz
-cd $PRGNAM-public-$VERSION-$REV
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-# remove AirTunes dependency (would require libshairport)
-sed -i 's/ ShairPort//' plex/CMakeModules/PlatformConfigLINUX.cmake
-
-# Disables AES for VIA CPU's due to segfaults. Thanks to Philip van der Hoeven.
-patch -p0 < $CWD/disable_via_ace.patch
-
-# Find fribidi-0.19.7
-# https://raw.githubusercontent.com/foux/fouxlay/master/media-tv/plex-home-theater/files/fribidi.patch
-patch -p1 < $CWD/fribidi.patch
-
-# Fix "'asm' operand has impossible constraints" build failure in embedded ffmpeg
-if [ "$ARCH" != 'x86_64' ]; then
- sed -i -e 's/get_cabac(/get_cabac_noinline(/g' lib/ffmpeg/libavcodec/cabac.c
- sed -i -e 's/get_cabac(/get_cabac_noinline(/g' lib/ffmpeg/libavcodec/h264_cabac.c
-fi
-
-mkdir build
-cd build
-
-cmake \
- -DCMAKE_C_FLAGS="$SLKCFLAGS" \
- -DCMAKE_CXX_FLAGS="$SLKCFLAGS" \
- -DCMAKE_INSTALL_PREFIX=/opt/$PRGNAM \
- -DCMAKE_BUILD_TYPE=Release \
- -DENABLE_AUTOUPDATE='FALSE' \
- -DENABLE_DUMP_SYMBOLS='FALSE' \
- -DENABLE_PYTHON='TRUE' \
- -DUSE_INTERNAL_FFMPEG='TRUE' \
- -DCREATE_BUNDLE='FALSE' \
- ..
-
-# internal ffmpeg version doesn't build with multiple jobs
-make -j1
-make install DESTDIR=$PKG
-
-cd ..
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/bin
-install -D -m 0755 $CWD/plex-home-theater $PKG/usr/bin
-
-mkdir -p $PKG/usr/share/applications
-install -D -m 0644 $CWD/$PRGNAM.desktop $PKG/usr/share/applications
-
-mkdir -p $PKG/usr/share/pixmaps
-install -D -m 0644 $CWD/${PRGNAM}_512x512.png $PKG/usr/share/pixmaps
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- CONTRIBUTORS LICENSE.GPL README README-BUILD-PLEX.md docs/README.* \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/plex-home-theater/plex-home-theater.desktop b/multimedia/plex-home-theater/plex-home-theater.desktop
deleted file mode 100644
index b0f6879153..0000000000
--- a/multimedia/plex-home-theater/plex-home-theater.desktop
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Name=Plex Home Theater
-GenericName=Media Center
-Exec=plex-home-theater
-StartupNotify=true
-Terminal=false
-Type=Application
-Icon=/usr/share/pixmaps/plex-home-theater_512x512.png
-Categories=Audio;Music;Video;Player;AudioVideo;
diff --git a/multimedia/plex-home-theater/plex-home-theater.info b/multimedia/plex-home-theater/plex-home-theater.info
deleted file mode 100644
index 309044321b..0000000000
--- a/multimedia/plex-home-theater/plex-home-theater.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="plex-home-theater"
-VERSION="1.4.1.469"
-HOMEPAGE="https://github.com/plexinc/plex-home-theater-public/"
-DOWNLOAD="https://github.com/plexinc/plex-home-theater-public/archive/v1.4.1.469-47a90f01.tar.gz"
-MD5SUM="8fb20dac7aefa694819f66c39aaa5814"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="yajl libmicrohttpd tinyxml avahi libmpeg2 libass rtmpdump libmodplug lame openjdk7"
-MAINTAINER="Marcel Saegebarth"
-EMAIL="marc@mos6581.de"
diff --git a/multimedia/plex-home-theater/plex-home-theater_512x512.png b/multimedia/plex-home-theater/plex-home-theater_512x512.png
deleted file mode 100644
index 89f68bb648..0000000000
--- a/multimedia/plex-home-theater/plex-home-theater_512x512.png
+++ /dev/null
Binary files differ
diff --git a/multimedia/plex-home-theater/slack-desc b/multimedia/plex-home-theater/slack-desc
deleted file mode 100644
index d0d0f5eb8d..0000000000
--- a/multimedia/plex-home-theater/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-plex-home-theater: plex-home-theater (Media Center)
-plex-home-theater:
-plex-home-theater: Plex Home Theater is optimized for the big screen and supports
-plex-home-theater: a wide variety of formats with high-definition audio, native
-plex-home-theater: framerates, and more.
-plex-home-theater:
-plex-home-theater: Homepage: http://plex.tv/
-plex-home-theater:
-plex-home-theater:
-plex-home-theater:
-plex-home-theater:
diff --git a/multimedia/plexmediaserver/README b/multimedia/plexmediaserver/README
index 755950fce4..3c0e127c73 100644
--- a/multimedia/plexmediaserver/README
+++ b/multimedia/plexmediaserver/README
@@ -1,9 +1,10 @@
Plex Media Server is the backend for the Plex media system.
Plex's frontend media player, Plex Home Theater, is Windows/Mac only;
-however, you can stream your local files on Linux from your web browser.
-Plex Home Theater allows the user to manage and play video, photos, music,
-and podcasts from a local or remote computer running Plex Media Server.
+however, you can stream your local files on Linux from your web
+browser. Plex Home Theater allows the user to manage and play video,
+photos, music, and podcasts from a local or remote computer running
+Plex Media Server.
Plex Media Server runs as plex:plex (UID/GID 279) with its $HOME as
/var/lib/plexmediaserver:
diff --git a/multimedia/plexmediaserver/doinst.sh b/multimedia/plexmediaserver/doinst.sh
index 0908c4e6c4..b295ab1144 100644
--- a/multimedia/plexmediaserver/doinst.sh
+++ b/multimedia/plexmediaserver/doinst.sh
@@ -11,15 +11,19 @@ config() {
# Otherwise, we leave the .new copy for the admin to consider...
}
-# Keep same perms on rc.plexmediaserver.new:
-if [ -e etc/rc.d/rc.plexmediaserver ]; then
- cp -a etc/rc.d/rc.plexmediaserver etc/rc.d/rc.plexmediaserver.new.incoming
- cat etc/rc.d/rc.plexmediaserver.new > etc/rc.d/rc.plexmediaserver.new.incoming
- mv etc/rc.d/rc.plexmediaserver.new.incoming etc/rc.d/rc.plexmediaserver.new
-fi
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ if [ -e $OLD ]; then
+ cp -a $OLD ${NEW}.incoming
+ cat $NEW > ${NEW}.incoming
+ mv ${NEW}.incoming $NEW
+ fi
+ config $NEW
+}
-config etc/rc.d/rc.plexmediaserver.new
-config etc/default/plexmediaserver
+preserve_perms etc/rc.d/rc.plexmediaserver.new
+config etc/default/plexmediaserver.new
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
diff --git a/multimedia/plexmediaserver/plexmediaserver.SlackBuild b/multimedia/plexmediaserver/plexmediaserver.SlackBuild
index a5a71d2c2d..9984cfe6aa 100644
--- a/multimedia/plexmediaserver/plexmediaserver.SlackBuild
+++ b/multimedia/plexmediaserver/plexmediaserver.SlackBuild
@@ -1,10 +1,11 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for "plexmediaserver".
# Copyright 2014-2015 Lionel Young <lionelyoung@gmail.com>
# Copyright 2015-2017 Marcel Saegebarth <marc@mos6581.de>
# Copyright 2017-2020 Kevin Matthew <kevin@kevinmatthew.com>
+# Copyright 2020-2023 Stu Miller <slackbuilds@go4it2day.com>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -26,11 +27,20 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230528 bkw: modified by SlackBuilds.org:
+# - use standard ARCH (not i386). note that this is cosmetic (the package
+# contents do not change, only the filename of the .tgz package).
+# - speed up find and strip stuff (build now runs ~3.2x faster).
+# - fix permission on .desktop file.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=plexmediaserver
-VERSION=${VERSION:-1.18.9.2578_513b381af}
+VERSION=${VERSION:-1.40.2.8395_c67dce28e}
PKG_VERSION=$(echo $VERSION | tr _ -)
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -40,7 +50,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -48,15 +62,12 @@ OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
DEBARCH="i386"
LIBDIRSUFFIX=""
- ARCH="i386"
elif [ "$ARCH" = "i686" ]; then
DEBARCH="i386"
LIBDIRSUFFIX=""
- ARCH="i386"
elif [ "$ARCH" = "x86_64" ]; then
DEBARCH="amd64"
LIBDIRSUFFIX="64"
- ARCH="x86_64"
else
echo "Package for $(uname -m) architecture is not available."
exit 1
@@ -91,37 +102,42 @@ fi
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
-cd $PKG
-rm -rf $PRGNAM-$PKG_VERSION
-ar xv $CWD/${PRGNAM}_${PKG_VERSION}_${DEBARCH}.deb
-tar xvf data.tar.?z
-rm -f debian-binary control.tar.?z data.tar.?z
-rm -rf $PKG/etc/apt/ $PKG/etc/init $PKG/etc/init.d
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+mkdir $PRGNAM-$VERSION
+ar xv $CWD/${PRGNAM}_${PKG_VERSION}_${DEBARCH}.deb data.tar.xz
+tar xvf data.tar.xz -C $PRGNAM-$VERSION
+rm -f data.tar.xz
+cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} + \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
-mkdir -p $PKG/opt/$PRGNAM/bin/
-mv $PKG/usr/lib/plexmediaserver $PKG/opt/$PRGNAM/lib
+mkdir -p $PKG/usr/lib/
+mv usr/lib/plexmediaserver $PKG/usr/lib
-mv usr/sbin/start_pms $PKG/opt/$PRGNAM/bin/
-sed -i -e "s#/usr/lib/plexmediaserver#/opt/$PRGNAM/lib#" \
- $PKG/opt/$PRGNAM/bin/start_pms
-mkdir -p $PKG/usr/bin/
-ln -s /opt/$PRGNAM/bin/start_pms \
- $PKG/usr/bin/start_pms
+# 20230528 bkw: This strip command is *way* faster than the find|grep|xargs
+# stuff (runs in about 1 sec, vs. over a minute) and has the same effect.
+strip --strip-unneeded \
+ $PKG/usr/lib/$PRGNAM/* \
+ $PKG/usr/lib/$PRGNAM/lib/*.so* \
+ $PKG/usr/lib/$PRGNAM/Resources/Python/lib/python*/site-packages/*/*.so \
+ 2>/dev/null || true
-mv usr/share/applications/plexmediaserver.desktop $PKG/opt/$PRGNAM/
-sed -i -e "s/x-www-browser/xdg-open/" \
- $PKG/opt/$PRGNAM/plexmediaserver.desktop
-mkdir -p $PKG/usr/share/applications
-ln -s /opt/$PRGNAM/plexmediaserver.desktop \
- $PKG/usr/share/applications/plexmediaserver.desktop
+DESKTOP=usr/share/applications/$PRGNAM.desktop
+install -D -m0644 $DESKTOP $PKG/$DESKTOP
+sed -i -e "s/x-www-browser/xdg-open/" $PKG/$DESKTOP
-rm -rf $PKG/etc/systemd $PKG/usr/share/doc $PKG/usr/sbin $PKG/usr/lib
+mkdir -p $PKG/etc/rc.d
+cat $PKG/usr/lib/$PRGNAM/lib/$PRGNAM.init > $PKG/etc/rc.d/rc.$PRGNAM.new
+chmod 0644 $PKG/etc/rc.d/rc.$PRGNAM.new
+
+mkdir -p $PKG/etc/default
+cat $PKG/usr/lib/plexmediaserver/lib/plexmediaserver.default > $PKG/etc/default/$PRGNAM.new
+chmod 0644 $PKG/etc/default/$PRGNAM.new
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -129,19 +145,9 @@ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/var/lib/$PRGNAM
chown -R $PLEX_USER:$PLEX_GROUP $PKG/var/lib/$PRGNAM
-mkdir -p $PKG/etc/rc.d/
-cat $CWD/rc.$PRGNAM > $PKG/etc/rc.d/rc.$PRGNAM.new
-chmod 0644 $PKG/etc/rc.d/rc.$PRGNAM.new
-
-# cleanup
-(
- cd $PKG
- rm -rf _gpgplex lib
-)
-
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/plexmediaserver/plexmediaserver.info b/multimedia/plexmediaserver/plexmediaserver.info
index 1c68aad23a..d4128b5fda 100644
--- a/multimedia/plexmediaserver/plexmediaserver.info
+++ b/multimedia/plexmediaserver/plexmediaserver.info
@@ -1,10 +1,10 @@
PRGNAM="plexmediaserver"
-VERSION="1.18.9.2578_513b381af"
+VERSION="1.40.2.8395_c67dce28e"
HOMEPAGE="https://plex.tv/"
-DOWNLOAD="https://downloads.plex.tv/plex-media-server-new/1.18.9.2578-513b381af/debian/plexmediaserver_1.18.9.2578-513b381af_i386.deb"
-MD5SUM="a134d7398e8cb43cb0ba5bd01317338b"
-DOWNLOAD_x86_64="https://downloads.plex.tv/plex-media-server-new/1.18.9.2578-513b381af/debian/plexmediaserver_1.18.9.2578-513b381af_amd64.deb"
-MD5SUM_x86_64="9cfed19fbff2c71b45bece6bc15ba679"
+DOWNLOAD="https://downloads.plex.tv/plex-media-server-new/1.40.2.8395-c67dce28e/debian/plexmediaserver_1.40.2.8395-c67dce28e_i386.deb"
+MD5SUM="29932efda14d2bea2024b0feb9f7da26"
+DOWNLOAD_x86_64="https://downloads.plex.tv/plex-media-server-new/1.40.2.8395-c67dce28e/debian/plexmediaserver_1.40.2.8395-c67dce28e_amd64.deb"
+MD5SUM_x86_64="96756b4ea968fd59c75b17143e13c951"
REQUIRES=""
-MAINTAINER="Kevin Matthew"
-EMAIL="kevin@kevinmatthew.com"
+MAINTAINER="Stu Miller"
+EMAIL="slackbuilds@go4it2day.com"
diff --git a/multimedia/plexmediaserver/rc.plexmediaserver b/multimedia/plexmediaserver/rc.plexmediaserver
deleted file mode 100644
index 0ca0d327e4..0000000000
--- a/multimedia/plexmediaserver/rc.plexmediaserver
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/bin/sh
-
-# Copyright 2016 Marcel Saegebarth <marc@mos6581.de>
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
-
-RUN_USER=plex
-
-plexmediaserver_start() {
- PIDOF=$(pidof "Plex Media Server")
-
- if [ -z "$PIDOF" ]; then
- echo "Starting plexmediaserver..."
- /bin/su -s /bin/sh -l $RUN_USER -c '/usr/bin/start_pms &> /dev/null &'
- else
- echo "plexmediaserver is already active (PID: $PIDOF)."
- exit 1
- fi
-}
-
-plexmediaserver_stop() {
- PIDOF=$(pidof "Plex Media Server")
- # plugins may still running when stopping plexmediaserver on its startup
- # process
- PGREP_PLUGINS=$(pgrep -f "Plex Plug-in")
- PGREP_DLNA=$(pgrep -f "Plex DLNA Server")
- PGREP_TUNER=$(pgrep -f "Plex Tuner Service")
- PGREP_EGP=$(pgrep -f "Plex EAE Service")
- PGREP_TRANSCODER=$(pgrep -f "Plex Transcoder")
- PGREP_PLEXRELAY=$(pgrep -f "Plex Relay")
-
-
- if [ -z "$PIDOF" ] && [ -z "$PGREP_PLUGINS" ]; then
- echo "plexmediaserver is not running..."
- exit 1
- else
- echo -n "Stopping plexmediaserver..."
-
- if [ -n "$PIDOF" ]; then
- kill -9 $PIDOF
- fi
-
- if [ -n "$PGREP_PLUGINS" ]; then
- for i in "$PGREP_PLUGINS"; do
- kill -9 $i
- done
- fi
-
- if [ -n "$PGREP_DLNA" ]; then
- for i in "$PGREP_DLNA"; do
- kill -9 $i
- done
- fi
-
- if [ -n "$PGREP_TUNER" ]; then
- for i in "$PGREP_TUNER"; do
- kill -9 $i
- done
- fi
-
- if [ -n "$PGREP_EGP" ]; then
- for i in "$PGREP_EGP"; do
- kill -9 $i
- done
- fi
-
- if [ -n "$PGREP_TRANSCODER" ]; then
- for i in "$PGREP_TRANSCODER"; do
- kill -9 $i
- done
- fi
-
- if [ -n "$PGREP_PLEXRELAY" ]; then
- for i in "$PGREP_PLEXRELAY"; do
- kill -9 $i
- done
- fi
-
-
-
- echo "done"
- fi
-}
-
-plexmediaserver_restart() {
- plexmediaserver_stop
- sleep 3
- plexmediaserver_start
-}
-
-case "$1" in
- start) plexmediaserver_start ;;
- stop) plexmediaserver_stop ;;
- restart) plexmediaserver_restart ;;
- *) echo "USAGE: $0 start|stop|restart"
- exit 1 ;;
-esac
diff --git a/multimedia/pngnq-s9/pngnq-s9.SlackBuild b/multimedia/pngnq-s9/pngnq-s9.SlackBuild
index 229087f6c3..6094c6c109 100644
--- a/multimedia/pngnq-s9/pngnq-s9.SlackBuild
+++ b/multimedia/pngnq-s9/pngnq-s9.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for pngnq-s9
# Copyright 2014-2016 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
@@ -19,10 +19,13 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=pngnq-s9
VERSION=${VERSION:-2.0.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -32,7 +35,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -100,4 +110,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/pocketsphinx/README b/multimedia/pocketsphinx/README
new file mode 100644
index 0000000000..7ea1e815a7
--- /dev/null
+++ b/multimedia/pocketsphinx/README
@@ -0,0 +1,3 @@
+pocketsphinx is a lightweight speech recognition engine
+tuned for handheld and mobile devices and also for
+desktop.
diff --git a/multimedia/pocketsphinx/changelog b/multimedia/pocketsphinx/changelog
new file mode 100644
index 0000000000..16d62a9923
--- /dev/null
+++ b/multimedia/pocketsphinx/changelog
@@ -0,0 +1,26 @@
+Changelog for pocketsphinx SlackBuild Script
+--------------------------------------------------------------------
+
+03/09/2022:
+
+Added to SBo
+
+14/07/2023:
+
+Updated to github commit id 8221706.
+This version joins Opencv4 and lensfun
+in not compiling with FFmpeg. FFmpeg will
+detect pocketsphinx but it will eventually
+run into error during compilation.This
+seems to be FFmpeg upstream problem so
+don't enable pocketsphinx in FFmpeg when
+you try to recompile it.
+
+19/02/2024:
+
+Updated to version 5.0.3
+Removed python plugin.
+one of the reasons why pocketsphinx fails to
+build with FFmpeg is due to intentional API break
+in pocketsphinx. This is an upstream FFmpeg
+problem see https://trac.ffmpeg.org/ticket/10520
diff --git a/multimedia/pocketsphinx/pocketsphinx.SlackBuild b/multimedia/pocketsphinx/pocketsphinx.SlackBuild
new file mode 100644
index 0000000000..226c47e580
--- /dev/null
+++ b/multimedia/pocketsphinx/pocketsphinx.SlackBuild
@@ -0,0 +1,119 @@
+#!/bin/bash
+
+# Slackware build script for pocketsphinx
+
+# Copyright 2022-2024 Vijay Marcel
+
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=pocketsphinx
+VERSION=${VERSION:-5.0.3}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-march=i586 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-march=i686 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-march=x86-64 -mtune=generic -pipe -O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+cmake -B build -S $TMP/$PRGNAM-$VERSION \
+ -DCMAKE_C_FLAGS="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_BINDIR=/usr/bin \
+ -DCMAKE_INSTALL_DOCDIR=/usr/doc \
+ -DCMAKE_INSTALL_INCLUDEDIR=/usr/include \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib${LIBDIRSUFFIX} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DBUILD_SHARED_LIBS:BOOL=ON \
+ -DCMAKE_INSTALL_MANDIR=/usr/man \
+ -DFIXED_POINT:BOOL=ON \
+ -DBUILD_GSTREAMER:BOOL=ON
+
+cmake --build build
+DESTDIR=$PKG cmake --install build
+
+cp $PKG/usr/include/pocketsphinx.h $PKG/usr/include/pocketsphinx
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded --remove-section=.comment --remove-section=.note 2> /dev/null || true
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+mkdir -pv $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS NEWS LICENSE README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 0644 {} \+
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/pocketsphinx/pocketsphinx.info b/multimedia/pocketsphinx/pocketsphinx.info
new file mode 100644
index 0000000000..e4e61bf272
--- /dev/null
+++ b/multimedia/pocketsphinx/pocketsphinx.info
@@ -0,0 +1,10 @@
+PRGNAM="pocketsphinx"
+VERSION="5.0.3"
+HOMEPAGE="https://github.com/cmusphinx/pocketsphinx"
+DOWNLOAD="https://github.com/cmusphinx/pocketsphinx/archive/v5.0.3/pocketsphinx-5.0.3.tar.gz"
+MD5SUM="92e68dfc07ac2e6d82b4f29be89502c3"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="portaudio"
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/pocketsphinx/slack-desc b/multimedia/pocketsphinx/slack-desc
new file mode 100644
index 0000000000..114150a5cc
--- /dev/null
+++ b/multimedia/pocketsphinx/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+pocketsphinx: pocketsphinx (Lightweight Speech Recognition Engine )
+pocketsphinx:
+pocketsphinx: pocketsphinx is a lightweight speech recognition engine
+pocketsphinx: tuned for handheld and mobile devices and also for
+pocketsphinx: desktop
+pocketsphinx:
+pocketsphinx: Homepage: https://github.com/cmusphinx/pocketsphinx
+pocketsphinx:
+pocketsphinx:
+pocketsphinx:
+pocketsphinx:
diff --git a/multimedia/podcastparser/README b/multimedia/podcastparser/README
deleted file mode 100644
index d8e6f83202..0000000000
--- a/multimedia/podcastparser/README
+++ /dev/null
@@ -1,2 +0,0 @@
-podcastparser is a simple, fast and efficient podcast parser written in
-Python.
diff --git a/multimedia/podcastparser/podcastparser.SlackBuild b/multimedia/podcastparser/podcastparser.SlackBuild
deleted file mode 100644
index 65cdb54a1a..0000000000
--- a/multimedia/podcastparser/podcastparser.SlackBuild
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for podcastparser
-
-# Copyright 2017 Chris Farrell <timcowchip@gmail.com>
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
-
-PRGNAM=podcastparser
-VERSION=${VERSION:-0.6.4}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-python3 setup.py build
-python3 setup.py install --root $PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS LICENSE README.md $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/podcastparser/podcastparser.info b/multimedia/podcastparser/podcastparser.info
deleted file mode 100644
index 4319ad13ed..0000000000
--- a/multimedia/podcastparser/podcastparser.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="podcastparser"
-VERSION="0.6.4"
-HOMEPAGE="http://gpodder.org/podcastparser/"
-DOWNLOAD="https://github.com/gpodder/podcastparser/archive/0.6.4/podcastparser-0.6.4.tar.gz"
-MD5SUM="93eb67ce21165bf3f79a4a8b40e021fd"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="python3"
-MAINTAINER="Chris Farrell"
-EMAIL="timcowchip@gorge.net"
diff --git a/multimedia/popcorntime/popcorntime.SlackBuild b/multimedia/popcorntime/popcorntime.SlackBuild
index b631c541ae..9e6510bdb0 100644
--- a/multimedia/popcorntime/popcorntime.SlackBuild
+++ b/multimedia/popcorntime/popcorntime.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for popcorntime
@@ -22,11 +22,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM='popcorntime'
SRCNAM='Popcorn-Time'
VERSION=${VERSION:-0.3.10}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -37,7 +40,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -97,4 +107,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/popcorntime/popcorntime.info b/multimedia/popcorntime/popcorntime.info
index 7eb850000e..6d06fbf5ef 100644
--- a/multimedia/popcorntime/popcorntime.info
+++ b/multimedia/popcorntime/popcorntime.info
@@ -1,9 +1,9 @@
PRGNAM="popcorntime"
VERSION="0.3.10"
HOMEPAGE="https://get.popcorntime.sh"
-DOWNLOAD="https://get.popcorntime.sh/repo/build/Popcorn-Time-0.3.10-Linux-32.tar.xz"
+DOWNLOAD="https://slackware.uk/~urchlay/src/Popcorn-Time-0.3.10-Linux-32.tar.xz"
MD5SUM="3a0169d0cbe015ff3a29b442844d97e2"
-DOWNLOAD_x86_64="https://get.popcorntime.sh/repo/build/Popcorn-Time-0.3.10-Linux-64.tar.xz"
+DOWNLOAD_x86_64="https://slackware.uk/~urchlay/src/Popcorn-Time-0.3.10-Linux-64.tar.xz"
MD5SUM_x86_64="42bfbd562dc712e06679740ed53a07de"
REQUIRES=""
MAINTAINER="Matthew Kuzminski"
diff --git a/multimedia/pragha/README b/multimedia/pragha/README
index 14133313e1..babff9a887 100644
--- a/multimedia/pragha/README
+++ b/multimedia/pragha/README
@@ -1,12 +1,13 @@
-Pragha is a Lightweight Music Player for GNU/Linux, based on Gtk and sqlite.
-It is completely written in C, constructed to be fast, light, and
-simultaneously tries to be complete without obstructing the daily work. ;)
+Pragha is a Lightweight Music Player for GNU/Linux, based on Gtk and
+sqlite. It is completely written in C, constructed to be fast, light,
+and simultaneously tries to be complete without obstructing the daily
+work. ;)
Main features:
* Full integration with GTK+3, but always completely independent of
gnome or xfce.
- * Two panel design inspired by Amarok 1.4. Library and current playlist.
+ * Two panel design inspired by Amarok 1.4: Library & current playlist.
* Library with multiple views, according to tags or folder structure.
* Search, filter and queue songs on current playlist.
* Play and edit tags of mp3, m4a, ogg, flac, asf, wma, and ape files.
@@ -18,10 +19,10 @@ Main features:
Optional packages available on https://slackbuilds.org, they are auto
detected by the script:
- * totem-pl-parser
- * jmtpfs
- * mtpfs
- * gmtp
+ * glyr (search lyrics, artist info, album art)
+ * gst-plugins-bad-nonfree (extra codecs)
+ * gst-plugins-ugly (extra codecs)
+ * totem-pl-parser (used to open playlists)
Optional dependencies that aren't on https://slackbuilds.org
diff --git a/multimedia/pragha/pragha.SlackBuild b/multimedia/pragha/pragha.SlackBuild
index ffffe12824..f1aae8f83f 100644
--- a/multimedia/pragha/pragha.SlackBuild
+++ b/multimedia/pragha/pragha.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for pragha
# Copyright 2016 Luís Fernando Carvalho Cavalheiro
@@ -22,10 +22,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220308 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - fix dependency info: gst0-* and gst-python were unused, gst-plugins-bad
+# no longer exists, gst-plugins-ugly is optional. left libpeas as
+# required, since it's required for any plugins to be built at all.
+# - do not install 0-byte AUTHORS and useless INSTALL in doc dir.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=pragha
VERSION=${VERSION:-1.3.3}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ] ; then
case "$( uname -m )" in
@@ -35,7 +44,11 @@ if [ -z "$ARCH" ] ; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -54,7 +67,7 @@ else
LIBDIRSUFFIX=""
fi
-DOCS="AUTHORS COPYING FAQ INSTALL NEWS README ChangeLog"
+DOCS="COPYING FAQ NEWS README ChangeLog"
set -e
@@ -67,9 +80,9 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -83,13 +96,8 @@ CXXFLAGS="$SLKCFLAGS" \
--build=$ARCH-slackware-linux
make
-make install DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+make install-strip DESTDIR=$PKG
+gzip -9 $PKG/usr/man/man*/*
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
@@ -99,4 +107,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/pragha/pragha.info b/multimedia/pragha/pragha.info
index 2222395d95..4d98da646e 100644
--- a/multimedia/pragha/pragha.info
+++ b/multimedia/pragha/pragha.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/pragha-music-player/pragha/releases/download/v1.3.3
MD5SUM="eac512bcb42b000f5622e6abd867f5b2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="gst0-plugins-bad gst0-plugins-ugly gst-plugins-bad gst-plugins-ugly gst0-python gst-python gst-libav libpeas"
+REQUIRES="libpeas"
MAINTAINER="Luís Fernando Carvalho Cavalheiro"
EMAIL="pessoal@profcavalheiro.com"
diff --git a/multimedia/pyradio/pyradio.SlackBuild b/multimedia/pyradio/pyradio.SlackBuild
index 69a85bb7a2..dfa0adf3b5 100644
--- a/multimedia/pyradio/pyradio.SlackBuild
+++ b/multimedia/pyradio/pyradio.SlackBuild
@@ -1,31 +1,41 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for pyradio
-# Written by Jostein Berntsen <jbernts@broadpark.no>
-
+# Written by Jostein Berntsen <jvbernts@online.no>
+
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=pyradio
VERSION=${VERSION:-0.5.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -69,5 +79,5 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/pyradio/pyradio.info b/multimedia/pyradio/pyradio.info
index 3bc67d90b0..2f8d48ed97 100644
--- a/multimedia/pyradio/pyradio.info
+++ b/multimedia/pyradio/pyradio.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Jostein Berntsen"
-EMAIL="jbernts@broadpark.no"
+EMAIL="jvbernts@online.no"
diff --git a/multimedia/qsampler/qsampler.SlackBuild b/multimedia/qsampler/qsampler.SlackBuild
index 0dda004f9b..d10c715b38 100644
--- a/multimedia/qsampler/qsampler.SlackBuild
+++ b/multimedia/qsampler/qsampler.SlackBuild
@@ -1,27 +1,37 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <qsampler>
# Written by Michales Michaloudes korgie@gmail.com
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=qsampler
-VERSION=${VERSION:-0.2.2.511svn}
+VERSION=${VERSION:-0.9.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -41,36 +51,37 @@ mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-svn
+cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-make -f Makefile.svn
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_MANDIR=man \
+ -DCMAKE_BUILD_TYPE='None' \
+ -Wno-dev \
+ ..
+ make
+ make install DESTDIR=$PKG
+cd ..
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --build=$ARCH-slackware-linux
-
-make -j1
-make install DESTDIR=$PKG
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- AUTHORS COPYING ChangeLog INSTALL TODO README TRANSLATORS \
+ AUTHORS COPYING ChangeLog README TODO TRANSLATORS \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -79,4 +90,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/qsampler/qsampler.info b/multimedia/qsampler/qsampler.info
index 62a558355e..6e8bbdd955 100644
--- a/multimedia/qsampler/qsampler.info
+++ b/multimedia/qsampler/qsampler.info
@@ -1,8 +1,8 @@
PRGNAM="qsampler"
-VERSION="0.2.2.511svn"
+VERSION="0.9.4"
HOMEPAGE="http://linuxsampler.org"
-DOWNLOAD="http://ponce.cc/slackware/sources/repo/qsampler-0.2.2.511svn.tar.gz"
-MD5SUM="22d9151b4635019d2da3e96be675af5e"
+DOWNLOAD="https://downloads.sourceforge.net/qsampler/qsampler-0.9.4.tar.gz"
+MD5SUM="a1f67150f4f6a5771926dc0d4783f29d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="liblscp linuxsampler"
diff --git a/multimedia/radiotray/radiotray.SlackBuild b/multimedia/radiotray/radiotray.SlackBuild
index 8092354d76..4866e83e85 100644
--- a/multimedia/radiotray/radiotray.SlackBuild
+++ b/multimedia/radiotray/radiotray.SlackBuild
@@ -1,29 +1,39 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for radiotray
# Written by Andrey Maraev <andrew.maraev60@yandex.ru>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=radiotray
VERSION=${VERSION:-0.7.3}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -64,4 +74,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/radiotray/radiotray.info b/multimedia/radiotray/radiotray.info
index b485f6aaf0..86993c6ce5 100644
--- a/multimedia/radiotray/radiotray.info
+++ b/multimedia/radiotray/radiotray.info
@@ -5,6 +5,6 @@ DOWNLOAD="http://downloads.sourceforge.net/project/radiotray/releases/radiotray-
MD5SUM="274efddcf5183a4f5cb193f8c417a45c"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="gst0-ffmpeg gst0-plugins-ugly gst0-python lxml pyxdg"
+REQUIRES="gst0-ffmpeg gst0-plugins-ugly gst0-python python2-lxml"
MAINTAINER="Andrey Maraev"
EMAIL="andrew.maraev60@yandex.ru"
diff --git a/multimedia/rav1e/README b/multimedia/rav1e/README
new file mode 100644
index 0000000000..e365043682
--- /dev/null
+++ b/multimedia/rav1e/README
@@ -0,0 +1,20 @@
+rav1e is the fastest and safest AV1 video encoder. It is designed to
+eventually cover all use cases, though in its current form it is most
+suitable for cases where aom (the reference encoder) is too slow.
+
+Features:
+
+* Intra, inter, and switch frames
+* 64x64 superblocks
+* 4x4 to 64x64 RDO-selected square and rectangular blocks
+* DC, H, V, Paeth, smooth, and all directional prediction modes
+* DCT, (FLIP-)ADST and identity transforms (up to 64x64, 16x16 and 32x32
+ respectively)
+* 8-, 10- and 12-bit depth color
+* 4:2:0, 4:2:2 and 4:4:4 chroma sampling
+* 11 speed settings (0-10, exhaustive to near real-time)
+* Constant quantizer and target bitrate (single- and multi-pass)
+ encoding modes
+* Still picture mode
+
+rust16 and cargo-c are needed only at build time.
diff --git a/multimedia/rav1e/rav1e.SlackBuild b/multimedia/rav1e/rav1e.SlackBuild
new file mode 100644
index 0000000000..5890808369
--- /dev/null
+++ b/multimedia/rav1e/rav1e.SlackBuild
@@ -0,0 +1,174 @@
+#!/bin/bash
+
+# Slackware build script for rav1e
+
+# Copyright 2023-2024, Alexander Verbovetsky, Moscow, Russia
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=rav1e
+VERSION=${VERSION:-0.7.1}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+
+ if [ "$ARCH" = "i586" ]; then
+ if LD_LIBRARY_PATH="/opt/rust16/lib" /opt/rust16/bin/rustc -Vv \
+ | grep host | grep i686 > /dev/null ; then
+ ARCH=i686
+ fi
+ fi
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+ CARGOTARGET="--target i586-unknown-linux-gnu"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+ CARGOTARGET="--target i686-unknown-linux-gnu"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+ CARGOTARGET="--target x86_64-unknown-linux-gnu"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ CARGOTARGET=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+
+mkdir .cargo
+cat << EOF >> .cargo/config
+[source.crates-io]
+registry = 'https://github.com/rust-lang/crates.io-index'
+replace-with = 'vendored-sources'
+
+[source.vendored-sources]
+directory = '$(pwd)/vendor'
+EOF
+
+mkdir vendor
+(
+ cd vendor
+
+ grep -h -A 4 "\[\[package\]\]" \
+ $(find "../" -maxdepth 1 -mindepth 1 -name Cargo.lock | tr '\n' ' ') | \
+ sed 's/[[:space:]]*=[[:space:]]*/=/g;s/^--//;s/^\[\[/--\n[[/' | \
+ awk 'BEGIN { RS = "--\n" ; FS="\n" } { print $2, $3, $4, $5 }' | \
+ sed 's/"//g;s/name=//;s/ version=/=/' | \
+ grep " source=" | \
+ sed 's/ dependencies=.*$//' | \
+ sed 's/ source=[^ ]*//' | \
+ sed 's/ checksum=/=/' | \
+ sort -u | \
+ while read -r dep ; do
+
+ cksum="$(printf "%s\n" "$dep" | cut -d= -f3)"
+ ver="$(printf "%s\n" "$dep" | cut -d= -f2)"
+ dep="$(printf "%s\n" "$dep" | cut -d= -f1)"
+
+ tar xvf $CWD/$dep-$ver.crate
+
+ touch $dep-$ver/.cargo-ok
+
+ {
+ printf "{\n"
+ printf ' "files": {\n'
+
+ (
+ cd $dep-$ver
+ find . -type f -print0 | xargs -0 sha256sum | sed -n '/\.cargo-checksum\.json/!p' | sed 's/\.\///;s/^\([^ ]*\)[[:space:]][[:space:]]*\(.*\)$/"\2":"\1",/'
+ ) | sed '$ s/,$//'
+
+ printf " },\n"
+ printf ' "package": "%s"' "$cksum"
+
+ printf "}\n"
+ } > $dep-$ver/.cargo-checksum.json
+ done
+)
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CARGO_HOME=.cargo \
+PATH="/opt/rust16/bin:$PATH" \
+LD_LIBRARY_PATH="/opt/rust16/lib$LIBDIRSUFFIX" \
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+cargo build --offline --release $CARGOTARGET
+CARGO_HOME=.cargo \
+PATH="/opt/rust16/bin:$PATH" \
+LD_LIBRARY_PATH="/opt/rust16/lib$LIBDIRSUFFIX" \
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+cargo cbuild --offline --release $CARGOTARGET
+PATH="/opt/rust16/bin:$PATH" \
+LD_LIBRARY_PATH="/opt/rust16/lib$LIBDIRSUFFIX" \
+cargo install --offline --no-track --root "${PKG}/usr" --path="."
+PATH="/opt/rust16/bin:$PATH" \
+LD_LIBRARY_PATH="/opt/rust16/lib$LIBDIRSUFFIX" \
+cargo cinstall --offline --destdir=${PKG} --prefix=/usr --libdir=/usr/lib$LIBDIRSUFFIX
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a *.md doc $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/rav1e/rav1e.info b/multimedia/rav1e/rav1e.info
new file mode 100644
index 0000000000..a4079c3fd7
--- /dev/null
+++ b/multimedia/rav1e/rav1e.info
@@ -0,0 +1,464 @@
+PRGNAM="rav1e"
+VERSION="0.7.1"
+HOMEPAGE="https://github.com/xiph/rav1e/"
+DOWNLOAD="https://github.com/xiph/rav1e/archive/v0.7.1/rav1e-0.7.1.tar.gz \
+ https://static.crates.io/crates/addr2line/addr2line-0.21.0.crate \
+ https://static.crates.io/crates/adler/adler-1.0.2.crate \
+ https://static.crates.io/crates/aho-corasick/aho-corasick-1.1.2.crate \
+ https://static.crates.io/crates/anes/anes-0.1.6.crate \
+ https://static.crates.io/crates/anstream/anstream-0.6.5.crate \
+ https://static.crates.io/crates/anstyle-parse/anstyle-parse-0.2.3.crate \
+ https://static.crates.io/crates/anstyle-query/anstyle-query-1.0.2.crate \
+ https://static.crates.io/crates/anstyle-wincon/anstyle-wincon-3.0.2.crate \
+ https://static.crates.io/crates/anstyle/anstyle-1.0.4.crate \
+ https://static.crates.io/crates/anyhow/anyhow-1.0.79.crate \
+ https://static.crates.io/crates/aom-sys/aom-sys-0.3.3.crate \
+ https://static.crates.io/crates/arbitrary/arbitrary-1.3.2.crate \
+ https://static.crates.io/crates/arg_enum_proc_macro/arg_enum_proc_macro-0.3.4.crate \
+ https://static.crates.io/crates/arrayvec/arrayvec-0.7.4.crate \
+ https://static.crates.io/crates/assert_cmd/assert_cmd-2.0.12.crate \
+ https://static.crates.io/crates/autocfg/autocfg-1.1.0.crate \
+ https://static.crates.io/crates/av-metrics/av-metrics-0.9.1.crate \
+ https://static.crates.io/crates/av1-grain/av1-grain-0.2.3.crate \
+ https://static.crates.io/crates/backtrace/backtrace-0.3.69.crate \
+ https://static.crates.io/crates/bindgen/bindgen-0.69.1.crate \
+ https://static.crates.io/crates/bitflags/bitflags-1.3.2.crate \
+ https://static.crates.io/crates/bitflags/bitflags-2.4.1.crate \
+ https://static.crates.io/crates/bitstream-io/bitstream-io-2.2.0.crate \
+ https://static.crates.io/crates/bstr/bstr-1.9.0.crate \
+ https://static.crates.io/crates/built/built-0.7.1.crate \
+ https://static.crates.io/crates/bumpalo/bumpalo-3.14.0.crate \
+ https://static.crates.io/crates/bytemuck/bytemuck-1.14.0.crate \
+ https://static.crates.io/crates/byteorder/byteorder-1.5.0.crate \
+ https://static.crates.io/crates/cast/cast-0.3.0.crate \
+ https://static.crates.io/crates/cc/cc-1.0.83.crate \
+ https://static.crates.io/crates/cexpr/cexpr-0.6.0.crate \
+ https://static.crates.io/crates/cfg-expr/cfg-expr-0.15.6.crate \
+ https://static.crates.io/crates/cfg-if/cfg-if-1.0.0.crate \
+ https://static.crates.io/crates/ciborium-io/ciborium-io-0.2.1.crate \
+ https://static.crates.io/crates/ciborium-ll/ciborium-ll-0.2.1.crate \
+ https://static.crates.io/crates/ciborium/ciborium-0.2.1.crate \
+ https://static.crates.io/crates/clang-sys/clang-sys-1.7.0.crate \
+ https://static.crates.io/crates/clap/clap-4.4.14.crate \
+ https://static.crates.io/crates/clap_builder/clap_builder-4.4.14.crate \
+ https://static.crates.io/crates/clap_complete/clap_complete-4.4.6.crate \
+ https://static.crates.io/crates/clap_derive/clap_derive-4.4.7.crate \
+ https://static.crates.io/crates/clap_lex/clap_lex-0.6.0.crate \
+ https://static.crates.io/crates/color_quant/color_quant-1.1.0.crate \
+ https://static.crates.io/crates/colorchoice/colorchoice-1.0.0.crate \
+ https://static.crates.io/crates/console/console-0.15.8.crate \
+ https://static.crates.io/crates/crc32fast/crc32fast-1.3.2.crate \
+ https://static.crates.io/crates/criterion-plot/criterion-plot-0.5.0.crate \
+ https://static.crates.io/crates/criterion/criterion-0.5.1.crate \
+ https://static.crates.io/crates/crossbeam-channel/crossbeam-channel-0.5.11.crate \
+ https://static.crates.io/crates/crossbeam-deque/crossbeam-deque-0.8.5.crate \
+ https://static.crates.io/crates/crossbeam-epoch/crossbeam-epoch-0.9.18.crate \
+ https://static.crates.io/crates/crossbeam-queue/crossbeam-queue-0.3.11.crate \
+ https://static.crates.io/crates/crossbeam-utils/crossbeam-utils-0.8.19.crate \
+ https://static.crates.io/crates/crossbeam/crossbeam-0.8.4.crate \
+ https://static.crates.io/crates/diff/diff-0.1.13.crate \
+ https://static.crates.io/crates/difflib/difflib-0.4.0.crate \
+ https://static.crates.io/crates/doc-comment/doc-comment-0.3.3.crate \
+ https://static.crates.io/crates/either/either-1.9.0.crate \
+ https://static.crates.io/crates/encode_unicode/encode_unicode-0.3.6.crate \
+ https://static.crates.io/crates/env_logger/env_logger-0.8.4.crate \
+ https://static.crates.io/crates/equivalent/equivalent-1.0.1.crate \
+ https://static.crates.io/crates/errno/errno-0.3.8.crate \
+ https://static.crates.io/crates/fdeflate/fdeflate-0.3.3.crate \
+ https://static.crates.io/crates/fern/fern-0.6.2.crate \
+ https://static.crates.io/crates/flate2/flate2-1.0.28.crate \
+ https://static.crates.io/crates/form_urlencoded/form_urlencoded-1.2.1.crate \
+ https://static.crates.io/crates/getrandom/getrandom-0.2.12.crate \
+ https://static.crates.io/crates/gimli/gimli-0.28.1.crate \
+ https://static.crates.io/crates/git2/git2-0.18.1.crate \
+ https://static.crates.io/crates/glob/glob-0.3.1.crate \
+ https://static.crates.io/crates/half/half-1.8.2.crate \
+ https://static.crates.io/crates/hashbrown/hashbrown-0.14.3.crate \
+ https://static.crates.io/crates/heck/heck-0.4.1.crate \
+ https://static.crates.io/crates/hermit-abi/hermit-abi-0.3.3.crate \
+ https://static.crates.io/crates/home/home-0.5.9.crate \
+ https://static.crates.io/crates/idna/idna-0.5.0.crate \
+ https://static.crates.io/crates/image/image-0.24.7.crate \
+ https://static.crates.io/crates/indexmap/indexmap-2.1.0.crate \
+ https://static.crates.io/crates/interpolate_name/interpolate_name-0.2.4.crate \
+ https://static.crates.io/crates/is-terminal/is-terminal-0.4.10.crate \
+ https://static.crates.io/crates/itertools/itertools-0.10.5.crate \
+ https://static.crates.io/crates/itertools/itertools-0.11.0.crate \
+ https://static.crates.io/crates/itertools/itertools-0.12.0.crate \
+ https://static.crates.io/crates/itoa/itoa-1.0.10.crate \
+ https://static.crates.io/crates/jobserver/jobserver-0.1.27.crate \
+ https://static.crates.io/crates/js-sys/js-sys-0.3.66.crate \
+ https://static.crates.io/crates/lab/lab-0.11.0.crate \
+ https://static.crates.io/crates/lazy_static/lazy_static-1.4.0.crate \
+ https://static.crates.io/crates/lazycell/lazycell-1.3.0.crate \
+ https://static.crates.io/crates/libc/libc-0.2.152.crate \
+ https://static.crates.io/crates/libdav1d-sys/libdav1d-sys-0.6.0.crate \
+ https://static.crates.io/crates/libfuzzer-sys/libfuzzer-sys-0.4.7.crate \
+ https://static.crates.io/crates/libgit2-sys/libgit2-sys-0.16.1+1.7.1.crate \
+ https://static.crates.io/crates/libloading/libloading-0.8.1.crate \
+ https://static.crates.io/crates/libz-sys/libz-sys-1.1.14.crate \
+ https://static.crates.io/crates/linux-raw-sys/linux-raw-sys-0.4.12.crate \
+ https://static.crates.io/crates/log/log-0.4.20.crate \
+ https://static.crates.io/crates/maybe-rayon/maybe-rayon-0.1.1.crate \
+ https://static.crates.io/crates/memchr/memchr-2.7.1.crate \
+ https://static.crates.io/crates/minimal-lexical/minimal-lexical-0.2.1.crate \
+ https://static.crates.io/crates/miniz_oxide/miniz_oxide-0.7.1.crate \
+ https://static.crates.io/crates/nasm-rs/nasm-rs-0.2.5.crate \
+ https://static.crates.io/crates/new_debug_unreachable/new_debug_unreachable-1.0.4.crate \
+ https://static.crates.io/crates/nom/nom-7.1.3.crate \
+ https://static.crates.io/crates/noop_proc_macro/noop_proc_macro-0.3.0.crate \
+ https://static.crates.io/crates/nu-ansi-term/nu-ansi-term-0.46.0.crate \
+ https://static.crates.io/crates/num-bigint/num-bigint-0.4.4.crate \
+ https://static.crates.io/crates/num-derive/num-derive-0.4.1.crate \
+ https://static.crates.io/crates/num-integer/num-integer-0.1.45.crate \
+ https://static.crates.io/crates/num-rational/num-rational-0.4.1.crate \
+ https://static.crates.io/crates/num-traits/num-traits-0.2.17.crate \
+ https://static.crates.io/crates/object/object-0.32.2.crate \
+ https://static.crates.io/crates/once_cell/once_cell-1.19.0.crate \
+ https://static.crates.io/crates/oorandom/oorandom-11.1.3.crate \
+ https://static.crates.io/crates/overload/overload-0.1.1.crate \
+ https://static.crates.io/crates/paste/paste-1.0.14.crate \
+ https://static.crates.io/crates/peeking_take_while/peeking_take_while-0.1.2.crate \
+ https://static.crates.io/crates/percent-encoding/percent-encoding-2.3.1.crate \
+ https://static.crates.io/crates/pin-project-lite/pin-project-lite-0.2.13.crate \
+ https://static.crates.io/crates/pkg-config/pkg-config-0.3.28.crate \
+ https://static.crates.io/crates/plotters-backend/plotters-backend-0.3.5.crate \
+ https://static.crates.io/crates/plotters-svg/plotters-svg-0.3.5.crate \
+ https://static.crates.io/crates/plotters/plotters-0.3.5.crate \
+ https://static.crates.io/crates/png/png-0.17.10.crate \
+ https://static.crates.io/crates/ppv-lite86/ppv-lite86-0.2.17.crate \
+ https://static.crates.io/crates/predicates-core/predicates-core-1.0.6.crate \
+ https://static.crates.io/crates/predicates-tree/predicates-tree-1.0.9.crate \
+ https://static.crates.io/crates/predicates/predicates-3.0.4.crate \
+ https://static.crates.io/crates/pretty_assertions/pretty_assertions-1.4.0.crate \
+ https://static.crates.io/crates/prettyplease/prettyplease-0.2.16.crate \
+ https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.76.crate \
+ https://static.crates.io/crates/profiling-procmacros/profiling-procmacros-1.0.13.crate \
+ https://static.crates.io/crates/profiling/profiling-1.0.13.crate \
+ https://static.crates.io/crates/quickcheck/quickcheck-1.0.3.crate \
+ https://static.crates.io/crates/quote/quote-1.0.35.crate \
+ https://static.crates.io/crates/rand/rand-0.8.5.crate \
+ https://static.crates.io/crates/rand_chacha/rand_chacha-0.3.1.crate \
+ https://static.crates.io/crates/rand_core/rand_core-0.6.4.crate \
+ https://static.crates.io/crates/rayon-core/rayon-core-1.12.0.crate \
+ https://static.crates.io/crates/rayon/rayon-1.8.0.crate \
+ https://static.crates.io/crates/regex-automata/regex-automata-0.4.3.crate \
+ https://static.crates.io/crates/regex-syntax/regex-syntax-0.8.2.crate \
+ https://static.crates.io/crates/regex/regex-1.10.2.crate \
+ https://static.crates.io/crates/rustc-demangle/rustc-demangle-0.1.23.crate \
+ https://static.crates.io/crates/rustc-hash/rustc-hash-1.1.0.crate \
+ https://static.crates.io/crates/rustix/rustix-0.38.28.crate \
+ https://static.crates.io/crates/ryu/ryu-1.0.16.crate \
+ https://static.crates.io/crates/same-file/same-file-1.0.6.crate \
+ https://static.crates.io/crates/scan_fmt/scan_fmt-0.2.6.crate \
+ https://static.crates.io/crates/semver/semver-1.0.21.crate \
+ https://static.crates.io/crates/serde-big-array/serde-big-array-0.5.1.crate \
+ https://static.crates.io/crates/serde/serde-1.0.195.crate \
+ https://static.crates.io/crates/serde_derive/serde_derive-1.0.195.crate \
+ https://static.crates.io/crates/serde_json/serde_json-1.0.111.crate \
+ https://static.crates.io/crates/serde_spanned/serde_spanned-0.6.5.crate \
+ https://static.crates.io/crates/sharded-slab/sharded-slab-0.1.7.crate \
+ https://static.crates.io/crates/shlex/shlex-1.2.0.crate \
+ https://static.crates.io/crates/signal-hook-registry/signal-hook-registry-1.4.1.crate \
+ https://static.crates.io/crates/signal-hook/signal-hook-0.3.17.crate \
+ https://static.crates.io/crates/simd-adler32/simd-adler32-0.3.7.crate \
+ https://static.crates.io/crates/simd_helpers/simd_helpers-0.1.0.crate \
+ https://static.crates.io/crates/smallvec/smallvec-1.11.2.crate \
+ https://static.crates.io/crates/syn/syn-2.0.48.crate \
+ https://static.crates.io/crates/system-deps/system-deps-6.2.0.crate \
+ https://static.crates.io/crates/target-lexicon/target-lexicon-0.12.13.crate \
+ https://static.crates.io/crates/terminal_size/terminal_size-0.3.0.crate \
+ https://static.crates.io/crates/termtree/termtree-0.4.1.crate \
+ https://static.crates.io/crates/thiserror-impl/thiserror-impl-1.0.56.crate \
+ https://static.crates.io/crates/thiserror/thiserror-1.0.56.crate \
+ https://static.crates.io/crates/thread_local/thread_local-1.1.7.crate \
+ https://static.crates.io/crates/tinytemplate/tinytemplate-1.2.1.crate \
+ https://static.crates.io/crates/tinyvec/tinyvec-1.6.0.crate \
+ https://static.crates.io/crates/tinyvec_macros/tinyvec_macros-0.1.1.crate \
+ https://static.crates.io/crates/toml/toml-0.8.8.crate \
+ https://static.crates.io/crates/toml_datetime/toml_datetime-0.6.5.crate \
+ https://static.crates.io/crates/toml_edit/toml_edit-0.21.0.crate \
+ https://static.crates.io/crates/tracing-attributes/tracing-attributes-0.1.27.crate \
+ https://static.crates.io/crates/tracing-chrome/tracing-chrome-0.7.1.crate \
+ https://static.crates.io/crates/tracing-core/tracing-core-0.1.32.crate \
+ https://static.crates.io/crates/tracing-log/tracing-log-0.2.0.crate \
+ https://static.crates.io/crates/tracing-subscriber/tracing-subscriber-0.3.18.crate \
+ https://static.crates.io/crates/tracing/tracing-0.1.40.crate \
+ https://static.crates.io/crates/unicode-bidi/unicode-bidi-0.3.14.crate \
+ https://static.crates.io/crates/unicode-ident/unicode-ident-1.0.12.crate \
+ https://static.crates.io/crates/unicode-normalization/unicode-normalization-0.1.22.crate \
+ https://static.crates.io/crates/unicode-width/unicode-width-0.1.11.crate \
+ https://static.crates.io/crates/url/url-2.5.0.crate \
+ https://static.crates.io/crates/utf8parse/utf8parse-0.2.1.crate \
+ https://static.crates.io/crates/v_frame/v_frame-0.3.7.crate \
+ https://static.crates.io/crates/valuable/valuable-0.1.0.crate \
+ https://static.crates.io/crates/vcpkg/vcpkg-0.2.15.crate \
+ https://static.crates.io/crates/version-compare/version-compare-0.1.1.crate \
+ https://static.crates.io/crates/wait-timeout/wait-timeout-0.2.0.crate \
+ https://static.crates.io/crates/walkdir/walkdir-2.4.0.crate \
+ https://static.crates.io/crates/wasi/wasi-0.11.0+wasi-snapshot-preview1.crate \
+ https://static.crates.io/crates/wasm-bindgen-backend/wasm-bindgen-backend-0.2.89.crate \
+ https://static.crates.io/crates/wasm-bindgen-macro-support/wasm-bindgen-macro-support-0.2.89.crate \
+ https://static.crates.io/crates/wasm-bindgen-macro/wasm-bindgen-macro-0.2.89.crate \
+ https://static.crates.io/crates/wasm-bindgen-shared/wasm-bindgen-shared-0.2.89.crate \
+ https://static.crates.io/crates/wasm-bindgen/wasm-bindgen-0.2.89.crate \
+ https://static.crates.io/crates/web-sys/web-sys-0.3.66.crate \
+ https://static.crates.io/crates/which/which-4.4.2.crate \
+ https://static.crates.io/crates/winapi-i686-pc-windows-gnu/winapi-i686-pc-windows-gnu-0.4.0.crate \
+ https://static.crates.io/crates/winapi-util/winapi-util-0.1.6.crate \
+ https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/winapi-x86_64-pc-windows-gnu-0.4.0.crate \
+ https://static.crates.io/crates/winapi/winapi-0.3.9.crate \
+ https://static.crates.io/crates/windows-sys/windows-sys-0.48.0.crate \
+ https://static.crates.io/crates/windows-sys/windows-sys-0.52.0.crate \
+ https://static.crates.io/crates/windows-targets/windows-targets-0.48.5.crate \
+ https://static.crates.io/crates/windows-targets/windows-targets-0.52.0.crate \
+ https://static.crates.io/crates/windows_aarch64_gnullvm/windows_aarch64_gnullvm-0.48.5.crate \
+ https://static.crates.io/crates/windows_aarch64_gnullvm/windows_aarch64_gnullvm-0.52.0.crate \
+ https://static.crates.io/crates/windows_aarch64_msvc/windows_aarch64_msvc-0.48.5.crate \
+ https://static.crates.io/crates/windows_aarch64_msvc/windows_aarch64_msvc-0.52.0.crate \
+ https://static.crates.io/crates/windows_i686_gnu/windows_i686_gnu-0.48.5.crate \
+ https://static.crates.io/crates/windows_i686_gnu/windows_i686_gnu-0.52.0.crate \
+ https://static.crates.io/crates/windows_i686_msvc/windows_i686_msvc-0.48.5.crate \
+ https://static.crates.io/crates/windows_i686_msvc/windows_i686_msvc-0.52.0.crate \
+ https://static.crates.io/crates/windows_x86_64_gnu/windows_x86_64_gnu-0.48.5.crate \
+ https://static.crates.io/crates/windows_x86_64_gnu/windows_x86_64_gnu-0.52.0.crate \
+ https://static.crates.io/crates/windows_x86_64_gnullvm/windows_x86_64_gnullvm-0.48.5.crate \
+ https://static.crates.io/crates/windows_x86_64_gnullvm/windows_x86_64_gnullvm-0.52.0.crate \
+ https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.48.5.crate \
+ https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.52.0.crate \
+ https://static.crates.io/crates/winnow/winnow-0.5.33.crate \
+ https://static.crates.io/crates/y4m/y4m-0.8.0.crate \
+ https://static.crates.io/crates/yansi/yansi-0.5.1.crate"
+MD5SUM="2e48f60bea23049a750f0721e30cdd54 \
+ 55e15000c4c210f0bb2aca6f38fbe424 \
+ 669215548c64019c08c92b2c1afd3deb \
+ 95e5f8d0b7ab37171b8d3118542ba06a \
+ a5edbb16fb71d6000e6978cba3dbce14 \
+ 2764314f4afc9f9751d60ebad48f6ea6 \
+ e188f6de00a35235da008cd39e1a003d \
+ b06d6c6d9a7bdcdd9bf78f20f2d08f01 \
+ 87cc1a50f0dcc09d7223df42eae95119 \
+ b4f71ffecd3694a82ffb62c357d997a8 \
+ 707d92b6f4d9920a0b25f69f5291c826 \
+ bf22fd51c3068951104ac0aaaf1cb637 \
+ c1a0202e60c31330720a70210f0d0080 \
+ 5f1f0d90556bfcd0fb1b1f021912e949 \
+ 504b5d258d68bdb980c997b93f0c6e6e \
+ 74e97e374c0c05d2dffc9568b7e135b8 \
+ 05d77ef52e90ad161fdd41b252420467 \
+ bd71ce85e6db425c2d389ff381ae8c75 \
+ 897bb747c1bffb5f7fe96d70d4619d3c \
+ 66c5beb5a77eccb0d86ce626651f393b \
+ 8b2b25ee633885681e30646249d211f4 \
+ a295edb6953237ebbdfa8e731229f9a3 \
+ ebcf604c44976809506192718f439dc1 \
+ e5c11658b166fd63536c18febc5a0cc8 \
+ 20f5631bb8dce73c1388fd70feb9192a \
+ e65a89875d146a27ac9b4be1746288cc \
+ d8cacbb844fca8c0ca102c7576946131 \
+ 9dd8e437188fced85429d9d0d9db145f \
+ 45339d90b2b3a4f123af5ec459954102 \
+ f686e99053239b98e9aca46c3e06c6f9 \
+ 9241fa90ea8b17c00010be46c9aa1ac5 \
+ 10b68ba1e7093d889e9198dcd0ea2a3e \
+ 5b0d8b9306028a9b56fda9066c1f157a \
+ 74634128440dbc3766bda76fdf0aaa05 \
+ aa7628187a64682bef0500d38db6b309 \
+ 435b8bef0d3bd0b0ab5297728f1073c2 \
+ 43f8415008eb5775962023405a445462 \
+ 888f3db20a6784c43e1d68bb8ca2f9a0 \
+ fc7602116b7e1f2f6572fa81bf5c4ecd \
+ 9a95be61db13af4b6b57bc19015e90da \
+ 8341a1dfb0532fd7574a295470513720 \
+ 08b9a34eadbb01ac16e36694e53eb254 \
+ 8f177f61a37d63f805acb925b30a0e58 \
+ ee1260862a62c0d8824b664a1abda7b8 \
+ 010f6d0e98cc2a2b99907a23c6cd6bbc \
+ 81b27d290b68620784d664b46394ae46 \
+ a9d6492a1bd21d93dbc27c32eabd0c70 \
+ 4cb359fe1ce3ec8463a78cabc468037e \
+ c3ca987d21c9d0af2c1e9794f70e7175 \
+ 4093130fbcb4cc266e967cf25d744db8 \
+ 396f4f63322338c26d76b2f638646178 \
+ 44505199ec0964feb5488051b4ac92d5 \
+ 8479d87e6c3e396334e8701475e085bf \
+ 398f4cce1d3067cc7a56662e52a33384 \
+ 852778f7d6efdb9009f9539bf1966b29 \
+ 434e2423f372fed80f69ed8873fdd2a3 \
+ bebc8338ae113a87a04564c97c1e3f0c \
+ dd1e49c76e9d5853e673a3b41ba02917 \
+ 3c3ab76bd9ed94de350152f1af4c61e8 \
+ 95a243b2d7c30018a643e218b3c5d693 \
+ 3fa75bcd254d37247ec3e97bad1dd445 \
+ bdf329a72ecd0605c296f25e53136706 \
+ 349e0ae5420f0b7e6ff835cd03cc7428 \
+ 597b5678e74f368f512931d828e8ff97 \
+ 90dd7e5de8d668d26234ac4e308ef6a2 \
+ 110e56f20886997bc288b6fea8617ce1 \
+ c3e51926c9853b714191ef1bec90e2ce \
+ ba5684833f6b40a3aa32ae4989c40f79 \
+ fbc6f6d82084b19c006198508b1ac489 \
+ b715373f9fd133773fb24f299e11f588 \
+ 2d6d28ec311884da69bcaf320ada8ad5 \
+ fea840ce07a32bdace46c59c41362f3b \
+ 3451a2e54a12d567bbb1bf2815aedc37 \
+ b92fa50f56a1e06a7f1bf665442d4a73 \
+ b5fc3a27c94dc7bab487e15228c82d58 \
+ d81f9251921f8a289dcf69fe4ccc3788 \
+ b5305bde14813da51d536a9df564db69 \
+ b6ae94522dcb19c7e8248b25d3cf725c \
+ f429c89da1e2d0ba564a0cb5e2ed928c \
+ 5da39427e196c0609d3d5aee2635c0db \
+ dfdd094e13ba782ccdea70f0867b66d9 \
+ 20b9f5d97aaf06b0f580f12860b67ba8 \
+ d629ca093dfd23b5e9b4262c5f801928 \
+ 49d3ae8e46ac6a01fe3e590f755bcb32 \
+ 0403f58e42c94609207c40a310cfe78a \
+ 9aaf13d622cd02548feaaca35687da9c \
+ 6b33b0539f6c25c66268868b6b61e240 \
+ 6e07b9fe1df76f96f75843ad332d4b7e \
+ fba3b040a55c01be7376d3dd5c4d4920 \
+ 23cc9e52c52465f5b225e62ab7cc3457 \
+ 9260aed7d90428c1a4d04b0d0efcae47 \
+ a53fc4c00f3cbd681afaacf70129ed40 \
+ fc0b36ba61e728780ae755ee4353b939 \
+ 5fbf6c7a4728d530f3dcec869dc1e1d7 \
+ feb5919f3a98172d047e10b0bc1ea5ae \
+ ebb675b20a027de8d713aaa175bf601c \
+ 1d1b2033b4272a22654e55447ae7f404 \
+ 8ee79b4fe4c43d9ab09f16344612a656 \
+ a84f2eb0538582f5449a70ccdd1940bb \
+ f8cc1978aae22df3e656d12810cdf994 \
+ 8b708bc4b33c5e1683467444c9ed41b0 \
+ eb7e04508518ed8f29935ec874e1740a \
+ 3a4b59ef1201a1a7e3d469f6a0d6281f \
+ 75b8063cab37a099b45204f2e6b1738f \
+ f17aecb8887cf0ecd823623160aed7db \
+ a584467fc24841b97d682fe620dfe708 \
+ a56461a712a83abc691cf473d1835228 \
+ 29dc2c0d8955325173a3f13b2b00833d \
+ 11f77e04b55da2bc9779e4b54b46924a \
+ 073b4c53e303ccf2a807dfce7f5e986a \
+ 00ebf3254ed74711c1f6717de3012350 \
+ 512bcd4470f351b2049adeb39cfcdec4 \
+ 0d98aaf27d3cace75f9959c04b910891 \
+ 8390247ae7126c00e162732b249be9d7 \
+ 6b79a1dbccc9351cbc297cfa3d98d651 \
+ 03a7ad2814bd9dd34e0acec8ca4f855e \
+ 1781b204ec7b6b1ef9232d429e6a973a \
+ 7e264bc8f23a45ad680668cb5e57d9fd \
+ 0ba30a94d7b8865c23e86d4d64e5b91e \
+ ffc7c4e1b2639ba6c8579a1c47c5f97c \
+ 76c281577ef136b9484166302e37c9bd \
+ bd8a914851fd9e6351082f98b7e7fa84 \
+ a6b32988425a3fcfa02e2330d47715a1 \
+ 24171d9c31ec6e5ccb4cb2ab5494d0c0 \
+ 7b5035f3ae2acd6abe959249308bb5a1 \
+ 5c69337d37e58a380e00eac9ce0373bb \
+ be08d75820c528ad6143e9e42efccee0 \
+ 175aaa67c5c9a4c8de2b944d51d0753d \
+ 21574d08e3527cc2d944698767770300 \
+ 20bc0926b659e86cc5ea66cf928caec9 \
+ fe30a91ded3a5f597b461049f4600d7a \
+ 43e3e8b01023835d05b82befc379769d \
+ c3c9b656c849ac21c80420422bfa0b28 \
+ 1148019c3131495e0b5d21f758c6ee74 \
+ 08fb966593abcba7e24aced65041140c \
+ 0358b31bf59c7915bb03f9e66f2d1ea3 \
+ ee7a5f842c39bc47c474196e83b0df5f \
+ e30085994bbeb4b7f4895d48216d5476 \
+ a1626b8f4d165b1b60d960862eba4cf0 \
+ 4311e7e5548d3aaa04ffea5334fc50e0 \
+ 00056853ca41c1a1448253be06daf010 \
+ 4f496143a21775fa7bd22bf329c37f37 \
+ 91b60a71d44302a8b05bd398eca56c37 \
+ e90f2809a34e2bea0bd5c1120475fb36 \
+ 24fcbc2986fad09b25c9a4f9aef0a9e4 \
+ 7b1261ea730a9314bc9bcdf4a379bf98 \
+ 47d0bafb79db67c4259e3420c62a986c \
+ ca664d757b2c95424cf3465e412cce90 \
+ 2d8d8b377d144f5e32b4f65a69eb0b24 \
+ 1622097aab95577f9928753c4a6d1f0d \
+ d5a0497966ae82c3135c35dcb4adb2ce \
+ 62155a1301911b45ae271b4d95b29890 \
+ b06eef93ebb5e19add49130759742f85 \
+ 76d424197546cc4f652f78d47cf3f6d6 \
+ a46d4413032296761522d91b24bd759b \
+ fa0d5d4e1e3bd20a9ca9aef473fc3665 \
+ 96261f3cee18842060fd64d618e056d8 \
+ 40b02ab40fd4f24ce2f9cd8a9e8d1ccf \
+ 22e95901b912671da26457ac33e36a23 \
+ f60ab8537f924a65fbc0961e958d375b \
+ d0116882bd495f2b993495a8cf01f6fe \
+ 3fa17e3e59c041e59e715c6d4e7a15b3 \
+ a88ce3625ee63d53088ad83d8581b368 \
+ 5651bc86f3df47d241d2ae58dc4b89a5 \
+ 5adeeae2556cf35ea01cf752b225023c \
+ 6fcaf1210522a40331da196c97b33f9d \
+ b7eae58d7a80112442643ee2ff481ef7 \
+ b1372e62f53f0ad8d19a2be135c10c9d \
+ ca563eabbf7fc0b717b5d2bcc28ae60c \
+ b1331d546ad9e4097c50abb592251043 \
+ 4375c6756918c2e9080870b4a7489d4e \
+ a160b14e423954c978ca95aa78ca4210 \
+ 5f0470696baaa4e5953bddbf196998f9 \
+ c678a7da0ee4b850ebde0474144a0415 \
+ b7a1b93f85587ed99e0a46d141f26528 \
+ 9aecd5ff283534a21d7cd51266abfe89 \
+ 8184f2020a3a5c78844485260ec49a36 \
+ 9dd610282e23bbd40016697350c1babb \
+ da71d807e7fa1ae0e6838d8bfc3509c4 \
+ a6655e5e9845cb569991e87b5b38a1fc \
+ beede1fdd5ce9840d395abc905d8ab3e \
+ 7e2eeef14bb62adaf15f1e921538adaa \
+ 0a906c03436ec2dcc4c311c21fee0da2 \
+ e74b10f7b4d0c167434d02bcc02ab18f \
+ ca65153603a1a7240bbd9d2ce19f2d67 \
+ c12d182417999fc365f952e701f6071f \
+ 908ec8a89821b72f3a35726bab24461f \
+ e547b0e754cd61f24f9ef8c9e26fcd95 \
+ ceee1159c41351d05f4cf705490867b3 \
+ bcd11e3d4a1b1d354131993ab36cd4e1 \
+ 4efc6e7a118524cecefa0023a18accf7 \
+ e900a384ac7dbb320fe6a7279fbfef89 \
+ d4e6a3f2d7286408592d08defd7de156 \
+ 6708629acf3d2ecb7404e43255d2df85 \
+ 96481ed810273371ed8b87f062a0dcda \
+ e972ea58ec203bfa6c79c1207852298b \
+ 27e1a4ac927346509cf010b024c79e87 \
+ 90f2e8c0ca989290eff37cd9b3ec2a87 \
+ 9202e1b9c6367013631774f38fdff707 \
+ f00d62969f597349b1d460c96b57136c \
+ 7f115ec6580072e95e26ab41f3fabb84 \
+ e97f7d5779474c95cf1a1769013db24e \
+ 9f0ad88c4840b999e28531dee406432d \
+ db96b50050277bf05a3c68534bbb9586 \
+ 306c0281447d1876e8220007b7a7e053 \
+ 09de9d01e7331ff3da11f58be8bef0df \
+ 0498c4a11448bfc35dc7bb2caa64c753 \
+ f2797ade0e36f1e5d6be9d11b5076582 \
+ 2376de634160158ece40c4bc2ab3eb41 \
+ 24c64817e85ef77765ed0f26c31c9b4c \
+ 7ff44db201b805c60b7894e6e51a5580 \
+ dae6d89034a6988042fd8be4cf5e037d \
+ cd2efc4af413b9d1380761255c7a22ff \
+ de2839e16d9d7a9fd1c397da62f62b4a \
+ 5b2c6ccb94c770d0ed85f7a844bf001e \
+ e0c35ffb8cfdb74a39bf799811f79304 \
+ 467f51d4cfb646d0c8fecfa008dbf52d \
+ d990172b607020701f9e84ca8e1c043c \
+ 9afb70c460db38399bf95ec015f07435 \
+ 0a68848588e847ceccf504891584d00b \
+ f34ea4d81690ec402b6f0d9e54e8baa4 \
+ 45b469ad607b912256b7c80141fa2d17 \
+ 591c68ecc1dded36344429f427bbfabc \
+ 7799baff9a5664205d9110a2624e8989 \
+ 29bbf3d9160d2545d528d0b2d7492333 \
+ 75e36a8e192755c8f61df04c25d2703f \
+ 89b4034c1b5577f57b3014aaf583dabe \
+ f5a883f6e013c5dcedc0c13d3096c612"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="cargo-c"
+MAINTAINER="Alexander Verbovetsky"
+EMAIL="alik@ejik.org"
diff --git a/multimedia/rav1e/slack-desc b/multimedia/rav1e/slack-desc
new file mode 100644
index 0000000000..225cd6c174
--- /dev/null
+++ b/multimedia/rav1e/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+rav1e: rav1e (AV1 encoder)
+rav1e:
+rav1e:
+rav1e: rav1e is the fastest and safest AV1 video encoder. It is designed to
+rav1e: eventually cover all use cases, though in its current form it is most
+rav1e: suitable for cases where aom (the reference encoder) is too slow.
+rav1e:
+rav1e:
+rav1e: Homepage: https://github.com/xiph/rav1e/
+rav1e:
+rav1e:
diff --git a/multimedia/ripit/README b/multimedia/ripit/README
index 3a86bf699e..45a5ed58d4 100644
--- a/multimedia/ripit/README
+++ b/multimedia/ripit/README
@@ -3,8 +3,8 @@ ripit (command line audio CD ripper)
RipIT is used to create MPEG-1 Layer 3 (mp3) using Lame, or uses Flac
(flac), Ogg Vorbis (ogg), Faac (m4a), Musepack (mpc), mp4als (als),
Wavpack (wv) or ffmpeg to convert audio files (wav) extracted from an
-audio CD. It is a console based front-end (no GUI here), written in Perl,
-for various programs which must be installed.
+audio CD. It is a console based front-end (no GUI here), written in
+Perl, for various programs which must be installed.
RipIT has *many* optional dependencies; see README_SBo.txt for details.
@@ -14,7 +14,7 @@ and config file options. See its man page and the comments in
The program will do the following without user intervention:
-* get the audio CD Album/Artist/Tracks information from MusicBrainz or freeCDDB
+* get the audio CD Album/Artist/Tracks info from MusicBrainz or freeCDDB
* rip the audio CD Tracks
* encode to Flac, mp3, Ogg-Vorbis, mpc, m4a or als
* id3 tag encoded songs
diff --git a/multimedia/ripit/README_SBo.txt b/multimedia/ripit/README_SBo.txt
index 64d316166c..e4af16942f 100644
--- a/multimedia/ripit/README_SBo.txt
+++ b/multimedia/ripit/README_SBo.txt
@@ -1,25 +1,21 @@
-The TL;DR version: install lame if you want to rip to mp3.
+The TL;DR version: you probably don't need any of the optional deps.
If you're still reading: ripit's optional dependencies are runtime deps,
so you can install them after installing ripit and they will be detected.
-If you don't install anything extra, you'll be able to rip with cdparanoia
-or cdda2wav, and encode to flac, ogg, or wavpack. You'll also be unable
-to submit updated CDDB entries (most people don't need to do this anyway).
+If you don't install anything extra, you'll be able to rip with
+cdparanoia or cdda2wav, and encode to mp3, flac, ogg, wavpack, or any
+format supported by ffmpeg (try "ffmpeg -encoders|grep ^.A"). You'll
+be UNable to submit updated CDDB entries (most people don't need to do
+this anyway).
Here's the list of optional deps available from SBo:
-lame - Normally required for encoding to mp3 (-c 0 option, which is the
- default), though ffmpeg can be used instead.
-
faac - Required for encoding to mp4/aac (-c 3 option).
-ffmpeg - Can encode to any format supported by ffmpeg (-c 7 option, plus
- --ffmpegopt and --ffmpegsuffix options).
-
-musepack-tools or mppenc -
- Required for encoding to MusePack (mpc) format (-c 5 option).
+musepack-tools or mppenc - Required for encoding to MusePack
+ (mpc) format (-c 5 option).
libwwwperl - Required for submitting updated CDDB entries to freedb.org.
If this package is missing, ripit will warn that LWP::Simple
diff --git a/multimedia/ripit/ripit.SlackBuild b/multimedia/ripit/ripit.SlackBuild
index 6f9f74e466..302c9cf6e2 100644
--- a/multimedia/ripit/ripit.SlackBuild
+++ b/multimedia/ripit/ripit.SlackBuild
@@ -1,10 +1,10 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for ripit
# Formerly maintained by Ryan P.C. McQuen <email removed>
-# Now maintained by B. Watson <yalhcru@gmail.com>
+# Now maintained by B. Watson <urchlay@slackware.uk>
-# Copyright 2011 Grigorios Bouzakis <grbzks@xsmail.com>
+# Copyright 2011 Grigorios Bouzakis <email removed>
# All rights reserved.
#
# Permission to use, copy, modify, and distribute this software for any purpose
@@ -30,13 +30,21 @@
# - update README.
# - BUILD=2.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=ripit
VERSION=${VERSION:-3.9.0}
ARCH=noarch
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
-CWD=$(pwd)
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -52,18 +60,16 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
-make INSTALL=/bin/install prefix=$PKG/usr mandir=$PKG/usr/man/man1 etcdir=$PKG/etc/ripit install
+make INSTALL=/bin/install \
+ prefix=$PKG/usr \
+ mandir=$PKG/usr/man/man1 \
+ etcdir=$PKG/etc/ripit install
mv $PKG/etc/ripit/config $PKG/etc/ripit/config.new
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+gzip -9 $PKG/usr/man/man1/*.*
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
@@ -74,4 +80,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/ripit/ripit.info b/multimedia/ripit/ripit.info
index 224ac72e2e..2947b2cd06 100644
--- a/multimedia/ripit/ripit.info
+++ b/multimedia/ripit/ripit.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="perl-CDDB-get"
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/ripperX/README b/multimedia/ripperX/README
index 35f4d3bce8..514875296b 100644
--- a/multimedia/ripperX/README
+++ b/multimedia/ripperX/README
@@ -1,4 +1,4 @@
-RipperX is a GTK program to rip CD audio tracks and encode them to the Ogg,
-MPE, or FLAC formats. Its goal is to be easy to use, requiring only a few
-mouse clicks to convert an entire album. It supports CDDB lookups for album
-and track information.
+RipperX is a GTK program to rip CD audio tracks and encode them to the
+Ogg, MPE, or FLAC formats. Its goal is to be easy to use, requiring
+only a few mouse clicks to convert an entire album. It supports CDDB
+lookups for album and track information.
diff --git a/multimedia/ripperX/ripperX.SlackBuild b/multimedia/ripperX/ripperX.SlackBuild
index ff8c28f0bd..f11fdd4dfc 100644
--- a/multimedia/ripperX/ripperX.SlackBuild
+++ b/multimedia/ripperX/ripperX.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for ripperX
@@ -22,11 +22,14 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=ripperX
SRCNAM=ripperx
VERSION=${VERSION:-2.8.0}
BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -111,4 +121,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/ripperX/ripperX.info b/multimedia/ripperX/ripperX.info
index ace21b5118..23ee2f393b 100644
--- a/multimedia/ripperX/ripperX.info
+++ b/multimedia/ripperX/ripperX.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://downloads.sourceforge.net/ripperx/ripperx-2.8.0.tar.bz2"
MD5SUM="51ac9ec0fddef9d2e951232a60d23bcd"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="id3lib"
+REQUIRES=""
MAINTAINER="David Golus"
EMAIL="bassplayer69@gmail.com"
diff --git a/multimedia/rosa-media-player/README b/multimedia/rosa-media-player/README
index 73016cb31f..d6427816af 100644
--- a/multimedia/rosa-media-player/README
+++ b/multimedia/rosa-media-player/README
@@ -1,16 +1,15 @@
ROMP (ROSA Media Player)
Rosa Media Player (ROMP) - multimedia player that supports most of
-audio and video formats such as Audio CD, DVD, Video CD,
-multimedia files in AVi, ASF/WMV/WMA, MOV/MP4, RealMedia, Ogg Vorbis,
-NUT, NSV, VIVO, FLI, NuppelVideo, yuv4mpeg, FILM (.cpk),
-RoQ, PVA and Matroska formats recorded with video codecs - DivX ,
-MPEG-1, MPEG-2, MPEG-4, Sorenson, WMV, RealVideo, x264
-and audio codecs MP3, Musepack, Vorbis, RealAudio, AC3/A52 (Dolby Digital),
-AAC (MPEG-4 audio), QuickTime, VIVO audio and WMA
-and many other less widespread video and audio codecs.
-It also supports streaming via HTTP/FTP, RTP/RTSP, MMS/MMST, MPST,
-SDP, capture and record (via mencoder) of television signal.
+audio and video formats such as Audio CD, DVD, Video CD, multimedia
+files in AVi, ASF/WMV/WMA, MOV/MP4, RealMedia, Ogg Vorbis, NUT, NSV,
+VIVO, FLI, NuppelVideo, yuv4mpeg, FILM (.cpk), RoQ, PVA and Matroska
+formats recorded with video codecs - DivX , MPEG-1, MPEG-2, MPEG-4,
+Sorenson, WMV, RealVideo, x264 and audio codecs MP3, Musepack, Vorbis,
+RealAudio, AC3/A52 (Dolby Digital), AAC (MPEG-4 audio), QuickTime,
+VIVO audio and WMA and many other less widespread video and audio
+codecs. It also supports streaming via HTTP/FTP, RTP/RTSP, MMS/MMST,
+MPST, SDP, capture and record (via mencoder) of television signal.
ROMP allows you to trim a particular piece of video, extract audio
-from multimedia files and record screen presentations and
-many other things.
+from multimedia files and record screen presentations and many other
+things.
diff --git a/multimedia/rosa-media-player/rosa-media-player.SlackBuild b/multimedia/rosa-media-player/rosa-media-player.SlackBuild
index 922d7b41ce..4081a0db72 100644
--- a/multimedia/rosa-media-player/rosa-media-player.SlackBuild
+++ b/multimedia/rosa-media-player/rosa-media-player.SlackBuild
@@ -1,28 +1,35 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for romp (ROSA Media Player)
# Written by Anton Chernyshov <ach@rosalab.ru>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=rosa-media-player
VERSION=${VERSION:-1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -46,22 +53,23 @@ cd $PRGNAM
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
-make PREFIX=/usr \
-DOC_PATH=\\\"/usr/doc/$PRGNAM-$VERSION\\\"
+ make PREFIX=/usr \
+ DOC_PATH=\\\"/usr/doc/$PRGNAM-$VERSION\\\" \
+ QMAKE=qmake-qt4 \
+ LRELEASE=lrelease-qt4
make \
-PREFIX=/usr \
-DOC_PATH=/usr/doc/$PRGNAM-$VERSION \
-DESTDIR=$PKG install
+ PREFIX=/usr \
+ DOC_PATH=/usr/doc/$PRGNAM-$VERSION \
+ DESTDIR=$PKG install
-find $PKG | xargs file | grep -e "executable" -e "shared object"| grep ELF | \
- cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+strip $PKG/usr/bin/$PRGNAM
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -70,4 +78,4 @@ cat $CWD/doinst.sh > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/rosa-media-player/rosa-media-player.info b/multimedia/rosa-media-player/rosa-media-player.info
index 523a4beaa3..8690f66445 100644
--- a/multimedia/rosa-media-player/rosa-media-player.info
+++ b/multimedia/rosa-media-player/rosa-media-player.info
@@ -5,6 +5,6 @@ DOWNLOAD="http://ponce.cc/slackware/sources/repo/rosa-media-player-1.0.tar.gz"
MD5SUM="8c3877fc2fd1cecb146ef6bbbaed6823"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg"
+REQUIRES="qt4"
MAINTAINER="Anton Chernyshov"
EMAIL="ach@rosalab.ru"
diff --git a/multimedia/rpi-imager/README b/multimedia/rpi-imager/README
new file mode 100644
index 0000000000..26e93d3a18
--- /dev/null
+++ b/multimedia/rpi-imager/README
@@ -0,0 +1,3 @@
+Raspberry Pi Imager is the quick and easy way to install Raspberry Pi
+OS and other operating systems to a microSD card, ready to use with
+your Raspberry Pi.
diff --git a/multimedia/plex-home-theater/doinst.sh b/multimedia/rpi-imager/doinst.sh
index 65c7e2eeb9..65c7e2eeb9 100644
--- a/multimedia/plex-home-theater/doinst.sh
+++ b/multimedia/rpi-imager/doinst.sh
diff --git a/multimedia/rpi-imager/remove_update_checking.patch b/multimedia/rpi-imager/remove_update_checking.patch
new file mode 100644
index 0000000000..f1e5d6b284
--- /dev/null
+++ b/multimedia/rpi-imager/remove_update_checking.patch
@@ -0,0 +1,17 @@
+diff --color --unified --recursive --text orig/src/main.qml new/src/main.qml
+--- orig/src/main.qml 2023-11-18 09:52:10.767398847 +0100
++++ new/src/main.qml 2023-11-18 09:53:12.521334474 +0100
+@@ -1500,13 +1500,6 @@
+ }
+ }
+ }
+-
+- if (imageWriter.getBoolSetting("check_version") && "latest_version" in imager && "url" in imager) {
+- if (!imageWriter.isEmbeddedMode() && imageWriter.isVersionNewer(imager["latest_version"])) {
+- updatepopup.url = imager["url"]
+- updatepopup.openPopup()
+- }
+- }
+ if ("default_os" in imager) {
+ selectNamedOS(imager["default_os"], osmodel)
+ }
diff --git a/multimedia/rpi-imager/rpi-imager.SlackBuild b/multimedia/rpi-imager/rpi-imager.SlackBuild
new file mode 100644
index 0000000000..38f5d83136
--- /dev/null
+++ b/multimedia/rpi-imager/rpi-imager.SlackBuild
@@ -0,0 +1,122 @@
+#!/bin/bash
+
+# Slackware build script for rpi-imager
+
+# Copyright 2023 suncon The Earth
+# Copyright 2024 Jay Lanagan (j@lngn.net), Detroit, MI, USA.
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=rpi-imager
+VERSION=${VERSION:-1.8.5}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# patch out the debian update check
+patch -Np1 -i $CWD/remove_update_checking.patch
+
+mkdir -p build
+cd build
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+cmake -S ../src \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -G Ninja
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/man/man1
+cp -a doc/man/rpi-imager.1 $PKG/usr/man/man1/
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a license.txt README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/rpi-imager/rpi-imager.info b/multimedia/rpi-imager/rpi-imager.info
new file mode 100644
index 0000000000..eaae10512a
--- /dev/null
+++ b/multimedia/rpi-imager/rpi-imager.info
@@ -0,0 +1,10 @@
+PRGNAM="rpi-imager"
+VERSION="1.8.5"
+HOMEPAGE="https://github.com/raspberrypi/rpi-imager/"
+DOWNLOAD="https://github.com/raspberrypi/rpi-imager/archive/v1.8.5/rpi-imager-1.8.5.tar.gz"
+MD5SUM="6d09b83ff545135bc2cec405df186bcb"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Jay Lanagan"
+EMAIL="j@lngn.net"
diff --git a/multimedia/rpi-imager/slack-desc b/multimedia/rpi-imager/slack-desc
new file mode 100644
index 0000000000..0513b319cb
--- /dev/null
+++ b/multimedia/rpi-imager/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+rpi-imager: rpi-imager (Raspberry Pi Imaging Utility)
+rpi-imager:
+rpi-imager: User-friendly tool for creating bootable media for Raspberry Pi
+rpi-imager: devices.
+rpi-imager:
+rpi-imager: Homepage: https:/github.com/raspberrypi/rpi-imager
+rpi-imager:
+rpi-imager:
+rpi-imager:
+rpi-imager:
+rpi-imager:
diff --git a/multimedia/rtmpdump/rtmpdump.SlackBuild b/multimedia/rtmpdump/rtmpdump.SlackBuild
index 7728e656d5..fa0485403d 100644
--- a/multimedia/rtmpdump/rtmpdump.SlackBuild
+++ b/multimedia/rtmpdump/rtmpdump.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for rtmpdump
-# Copyright 2013-2016 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
+# Copyright 2013-2018 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,10 +24,13 @@
# Modified by SlackBuilds.org
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=rtmpdump
-VERSION=${VERSION:-20151223_fa8646d}
+VERSION=${VERSION:-20210219_f1b83c1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -37,7 +40,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -74,6 +84,12 @@ find -L . \
# patch makefiles for shared library install
patch -p1 < $CWD/librtmp-makefile.patch
+# use gnutls instead of openssl
+sed -i \
+ -e 's/^CRYPTO=OPENSSL/#CRYPTO=OPENSSL/' \
+ -e 's/#CRYPTO=GNUTLS/CRYPTO=GNUTLS/' \
+ Makefile librtmp/Makefile
+
XCFLAGS="$SLKCFLAGS" \
make \
prefix=/usr \
@@ -99,5 +115,5 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/rtmpdump/rtmpdump.info b/multimedia/rtmpdump/rtmpdump.info
index 32d0018f4d..f941dccc28 100644
--- a/multimedia/rtmpdump/rtmpdump.info
+++ b/multimedia/rtmpdump/rtmpdump.info
@@ -1,8 +1,8 @@
PRGNAM="rtmpdump"
-VERSION="20151223_fa8646d"
+VERSION="20210219_f1b83c1"
HOMEPAGE="http://rtmpdump.mplayerhq.hu/"
-DOWNLOAD="http://ponce.cc/slackware/sources/repo/rtmpdump-20151223_fa8646d.tar.xz"
-MD5SUM="344bbd75df62bd19c983f58137726932"
+DOWNLOAD="http://ponce.cc/slackware/sources/repo/rtmpdump-20210219_f1b83c1.tar.xz"
+MD5SUM="b50be8df554bf1a8632fb1daa8bd5b7a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/rygel/README b/multimedia/rygel/README
new file mode 100644
index 0000000000..e9011f7324
--- /dev/null
+++ b/multimedia/rygel/README
@@ -0,0 +1,16 @@
+Rygel is a home media solution that allows you to easily share audio,
+video and pictures, and control of media player on your home network.
+In technical terms it is both a UPnP AV MediaServer and MediaRenderer
+implemented through a plug-in mechanism. Interoperability with other
+devices in the market is achieved by conformance to very strict
+requirements of DLNA and on the fly conversion of media to format that
+client devices are capable of handling.
+
+Note: On Slackware the rygel daemon must be started and stopped
+manually. There are controls to start/stop the daemon in the
+gnome-control-center "Sharing" panel, but these controls are hard-coded
+to talk to systemd and will not start/stop the daemon. Instead, the
+daemon can be run directly from its installed path of:
+
+ /usr/bin/rygel
+
diff --git a/multimedia/flashplayer-plugin/doinst.sh b/multimedia/rygel/doinst.sh
index 4a25de5e6f..4a25de5e6f 100644
--- a/multimedia/flashplayer-plugin/doinst.sh
+++ b/multimedia/rygel/doinst.sh
diff --git a/multimedia/rygel/rygel.SlackBuild b/multimedia/rygel/rygel.SlackBuild
new file mode 100644
index 0000000000..6bf16762c2
--- /dev/null
+++ b/multimedia/rygel/rygel.SlackBuild
@@ -0,0 +1,113 @@
+#!/bin/bash
+
+# Slackware build script for rygel
+
+# Copyright 2023, Bob Funk, Winnipeg Canada
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=rygel
+VERSION=${VERSION:-0.41.2}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir build
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ -Dstrip=true
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING COPYING.logo NEWS README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/rygel/rygel.info b/multimedia/rygel/rygel.info
new file mode 100644
index 0000000000..56702c540b
--- /dev/null
+++ b/multimedia/rygel/rygel.info
@@ -0,0 +1,10 @@
+PRGNAM="rygel"
+VERSION="0.41.2"
+HOMEPAGE="https://gitlab.gnome.org/GNOME/rygel"
+DOWNLOAD="https://download.gnome.org/sources/rygel/0.41/rygel-0.41.2.tar.xz"
+MD5SUM="38b76ca6ad3876b29f40d94b89b6a9bd"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="gupnp gupnp-av gupnp-dlna gst-editing-services libmediaart"
+MAINTAINER="Bob Funk"
+EMAIL="bobfunk11@gmail.com"
diff --git a/multimedia/rygel/slack-desc b/multimedia/rygel/slack-desc
new file mode 100644
index 0000000000..1ba0e53220
--- /dev/null
+++ b/multimedia/rygel/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+rygel: rygel (UPnP AV MediaServer)
+rygel:
+rygel: Rygel is a home media solution that allows you to easily share audio,
+rygel: video and pictures to other devices.
+rygel:
+rygel: Additionally, media player software may use Rygel to become a
+rygel: MediaRenderer that may be controlled remotely.
+rygel:
+rygel:
+rygel: https://gitlab.gnome.org/GNOME/rygel
+rygel:
diff --git a/multimedia/schroedinger/schroedinger.SlackBuild b/multimedia/schroedinger/schroedinger.SlackBuild
index b7d70f8834..585e54bd02 100644
--- a/multimedia/schroedinger/schroedinger.SlackBuild
+++ b/multimedia/schroedinger/schroedinger.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware Package Build Script for Schroedinger
# Home Page http://www.diracvideo.org/
@@ -25,26 +25,36 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM="schroedinger"
VERSION=${VERSION:-1.0.11}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -93,8 +103,10 @@ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
ln -s /usr/share/gtk-doc/html/schroedinger html
)
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/serviio/rc.serviio b/multimedia/serviio/rc.serviio
index f81a3bfd74..eaa3776e69 100644
--- a/multimedia/serviio/rc.serviio
+++ b/multimedia/serviio/rc.serviio
@@ -20,7 +20,9 @@ start() {
echo "$PIDFILE exists and delete it."
else
echo 'Starting Serviio DNLA server...'
- su --login -c "$SERVIIO_CMD" $SERVIIO_USER
+ mkdir -p $(dirname ${PIDFILE})
+ chown ${SERVIIO_USER} $(dirname ${PIDFILE})
+ setpriv --reset-env --reuid ${SERVIIO_USER} ${SERVIIO_CMD}
fi
}
diff --git a/multimedia/serviio/serviio.SlackBuild b/multimedia/serviio/serviio.SlackBuild
index 92589411ee..5d2cd8de12 100644
--- a/multimedia/serviio/serviio.SlackBuild
+++ b/multimedia/serviio/serviio.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# serviio.SlackBuild: build script for Serviio DNLA Server
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=serviio
VERSION=${VERSION:-1.7.1.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
SERVIIOGID=${SERVIIOGID:-337}
SERVIIOUID=${SERVIIOUID:-337}
@@ -52,7 +55,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -104,4 +114,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/serviio/serviio.info b/multimedia/serviio/serviio.info
index 347da16539..4b9d35f3fc 100644
--- a/multimedia/serviio/serviio.info
+++ b/multimedia/serviio/serviio.info
@@ -5,6 +5,6 @@ DOWNLOAD="http://download.serviio.org/releases/serviio-1.7.1.1-linux.tar.gz"
MD5SUM="783009f30002510111d7698ce20f2846"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="jdk"
+REQUIRES="zulu-openjdk8"
MAINTAINER="Luís Fernando Carvalho Cavalheiro"
EMAIL="pessoal@profcavalheiro.com"
diff --git a/multimedia/sfnt2woff/sfnt2woff.SlackBuild b/multimedia/sfnt2woff/sfnt2woff.SlackBuild
index 7409780e87..a20ab3a34d 100644
--- a/multimedia/sfnt2woff/sfnt2woff.SlackBuild
+++ b/multimedia/sfnt2woff/sfnt2woff.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for sfnt2woff
@@ -23,11 +23,14 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=sfnt2woff
VERSION=${VERSION:-2009.10.03}
SRCVER=20091003
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -37,7 +40,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -84,4 +94,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/shine/README b/multimedia/shine/README
new file mode 100644
index 0000000000..4f8e863e97
--- /dev/null
+++ b/multimedia/shine/README
@@ -0,0 +1,5 @@
+shine is a fast MP3 Encoding library implemented in
+fixed point arithmetic.It can be used to perform super
+fast MP3 encoding on architectures without FPU.
+
+This is an optional dependency of FFmpeg.
diff --git a/multimedia/shine/fix-bugs.patch b/multimedia/shine/fix-bugs.patch
new file mode 100644
index 0000000000..8e97a12bce
--- /dev/null
+++ b/multimedia/shine/fix-bugs.patch
@@ -0,0 +1,12394 @@
+diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
+new file mode 100644
+index 0000000..500a5f6
+--- /dev/null
++++ b/.github/workflows/ci.yml
+@@ -0,0 +1,73 @@
++name: Build and install
++
++on:
++ push:
++ branches: [ "main" ]
++ pull_request:
++
++concurrency:
++ group: ${{ github.workflow }}-${{ github.ref }}
++ cancel-in-progress: true
++
++jobs:
++ build:
++ runs-on: ${{ matrix.os }}
++ strategy:
++ fail-fast: false
++ matrix:
++ os: [macos-latest, ubuntu-latest]
++ steps:
++ - uses: actions/checkout@v3
++ - name: Install required packages on macos
++ if: matrix.os == 'macos-latest'
++ run: brew install autoconf automake pkg-config
++ - name: Install required packages on ubuntu
++ if: matrix.os == 'ubuntu-latest'
++ run: sudo apt-get -y install automake autoconf pkg-config
++ - name: bootstrap
++ run: ./bootstrap
++ - name: configure
++ run: ./configure
++ - name: make
++ run: make
++ - name: make install on macos
++ if: matrix.os == 'macos-latest'
++ run: make install
++ - name: make install on ubuntu
++ if: matrix.os == 'ubuntu-latest'
++ run: sudo make install
++ - name: Test pkg-config setup
++ run: pkg-config --libs shine
++
++ android_build:
++ runs-on: ubuntu-latest
++ steps:
++ - uses: actions/checkout@v3
++ - uses: nttld/setup-ndk@v1
++ with:
++ ndk-version: r25b
++ local-cache: true
++ - name: Install autoconf/automake
++ run: sudo apt-get -y install automake autoconf
++ - name: bootstrap
++ run: ./bootstrap
++ - name: configure
++ run: ./configure
++ - name: make android
++ run: make android
++
++ js_build:
++ runs-on: ubuntu-latest
++ steps:
++ - uses: actions/checkout@v3
++ - uses: mymindstorm/setup-emsdk@v11
++ - name: JS build
++ run: |
++ cd js
++ make
++ - uses: actions/setup-node@v3
++ - name: Run node test
++ run: |
++ cd js/test/node
++ npm install
++ npm run test
+diff --git a/.gitignore b/.gitignore
+index aa76abe..ffdd74d 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -2,9 +2,9 @@
+ obj
+ libs
+ compile
+-android/lib
+-android/include
+-android/bin
++android/
++js/src/post-node.js
++!android/*.mk
+ shine
+ shine.pc
+ m4
+@@ -82,6 +82,6 @@ src/lib/reservoir.o
+ src/lib/tables.lo
+ src/lib/tables.o
+ shine-*.tar.gz
+-*.bc
++*.o
+ *.mp3
+ node_modules
+diff --git a/ChangeLog b/ChangeLog
+index 122dae5..0713282 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++x.y.z ()
++=====
++* Be more specific when enabling MIPS assembly routines.
++* Fix wave header reading on big endian machines (#34)
++
+ 3.1.1 (2017-07-28)
+ =====
+ * Remove invalid MPEG 2.5 bitrates.
+diff --git a/Makefile.am b/Makefile.am
+index bebf32d..538256c 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -26,14 +26,14 @@ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = shine.pc
+
+ android:
+- [ -d android/bin ] || mkdir android/bin
+ [ -d android/include ] || mkdir android/include
+- [ -d android/lib ] || mkdir android/lib
+- NDK_PROJECT_PATH=$(shell pwd) ndk-build APP_BUILD_SCRIPT=$(shell pwd)/android/Library.mk
+- cp libs/armeabi/libshine.so android/lib
++ [ -d android/lib ] || mkdir android/lib
++ [ -d android/bin ] || mkdir android/bin
+ cp src/lib/layer3.h android/include
++ NDK_PROJECT_PATH=$(shell pwd) ndk-build APP_BUILD_SCRIPT=$(shell pwd)/android/Library.mk
++ mv libs/* android/lib
+ NDK_PROJECT_PATH=$(shell pwd) ndk-build APP_BUILD_SCRIPT=$(shell pwd)/android/Binary.mk
+- cp libs/armeabi/shineenc android/bin
++ mv libs/* android/bin
+
+ clean-local:
+ -rm -rf obj libs android/lib android/bin android/include
+diff --git a/README.md b/README.md
+index 1d30cbd..e9b781a 100644
+--- a/README.md
++++ b/README.md
+@@ -2,15 +2,15 @@ Shine: fast fixed-point mp3 encoding
+ ====================================
+
+ [shine](https://github.com/savonet/shine) is a blazing fast mp3 encoding library implemented in
+-fixed-point arithmetic. The library can thus be used to performe super fast mp3 encoding on architectures
+-without a FPU, such as `armel`, etc.. It is also, however, also super fast on architectures with a FPU!
++fixed-point arithmetic. The library can thus be used to perform super fast mp3 encoding on architectures
++without a FPU, such as `armel`, etc.. It is also super fast on architectures with a FPU!
+
+ How to use?
+ -----------
+
+ The encoding API should be quite straight forward:
+
+-```
++```c
+ #include <shine/layer3.h>
+
+ (...)
+@@ -42,46 +42,47 @@ shine_close(s);
+ How fast is it?
+ ---------------
+
+-On a [Raspberry Pi](http://www.raspberrypi.org/) (`ARM`, `FPU`):
++On a macbook pro (`arm64`/M1 pro, `FPU`, December 30, 2022):
+
+-Lame, `3m06s`, `1.8x` realtime:
+-```
+-pi@raspberrypi ~ $ lame bla.wav bla.mp3
+-LAME 3.99.5 32bits (http://lame.sf.net)
++Lame, `88.7x` realtime:
++```bash
++LAME 3.100 64bits (http://lame.sf.net)
+ Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz
+-Encoding bla.wav to bla.mp3
++Encoding /tmp/decoded.wav to /tmp/lame.mp3
+ Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3
+ Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
+- 12987/12987 (100%)| 3:06/ 3:06| 3:06/ 3:06| 1.8216x| 0:00
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
++ 12203/12203 (100%)| 0:03/ 0:03| 0:04/ 0:04| 88.773x| 0:00
++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ kbps LR MS % long switch short %
+- 128.0 0.1 99.9 89.1 6.1 4.9
++ 128.0 32.6 67.4 96.4 1.9 1.7
+ Writing LAME Tag...done
+-ReplayGain: -10.5dB
++ReplayGain: -9.3dB
++lame -b 128 /tmp/decoded.wav /tmp/lame.mp3 3.55s user 0.05s system 99% cpu 3.609 total
+ ```
+
+-Shine, `1m35s`, `3.6x` realtime:
++Shine, `318.0x` realtime:
+ ```
+-pi@raspberrypi ~ $ shineenc bla.wav bla.mp3
+ shineenc (Liquidsoap version)
+-WAVE PCM Data, stereo 44100Hz 16bit, duration: 00:05:39
++WAVE PCM Data, stereo 44100Hz 16bit, duration: 00:05:18
+ MPEG-I layer III, stereo Psychoacoustic Model: Shine
+ Bitrate: 128 kbps De-emphasis: none Original
+-Encoding "bla.wav" to "bla.mp3"
+-Finished in 00:01:35 (3.6x realtime)
++Encoding "/tmp/bla.wav" to "/tmp/shine.mp3"
++Finished in 00:00:01 (318.0x realtime)
+ ```
+
+-Now, on a mac airbook (`x86_64`, `FPU`):
++### âš  The following are outdated tests âš 
+
+-Lame, `15s`, `22x` realtime:
+-```
+-toots@zulu tmp % lame bla.wav bla.mp3
+-LAME 3.99.5 64bits (http://lame.sf.net)
++On a [Raspberry Pi](http://www.raspberrypi.org/) (`ARM`, `FPU`):
++
++Lame, `1.8x` realtime:
++```bash
++pi@raspberrypi ~ $ lame bla.wav bla.mp3
++LAME 3.99.5 32bits (http://lame.sf.net)
+ Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz
+ Encoding bla.wav to bla.mp3
+ Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3
+ Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
+- 12987/12987 (100%)| 0:15/ 0:15| 0:17/ 0:17| 22.087x| 0:00
++ 12987/12987 (100%)| 3:06/ 3:06| 3:06/ 3:06| 1.8216x| 0:00
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ kbps LR MS % long switch short %
+ 128.0 0.1 99.9 89.1 6.1 4.9
+@@ -89,20 +90,21 @@ Writing LAME Tag...done
+ ReplayGain: -10.5dB
+ ```
+
+-Shine, `9s`, `37.7x` realtime:
+-```
++Shine, `3.6x` realtime:
++```bash
++pi@raspberrypi ~ $ shineenc bla.wav bla.mp3
+ shineenc (Liquidsoap version)
+ WAVE PCM Data, stereo 44100Hz 16bit, duration: 00:05:39
+ MPEG-I layer III, stereo Psychoacoustic Model: Shine
+ Bitrate: 128 kbps De-emphasis: none Original
+-Encoding "/tmp/bla.wav" to "/tmp/bla.mp3"
+-Finished in 00:00:09 (37.7x realtime)
++Encoding "bla.wav" to "bla.mp3"
++Finished in 00:01:35 (3.6x realtime)
+ ```
+
+ On a Google Nexus 5 (`ARM`, `FPU`):
+
+ Shine, `14s`, `24.2x` realtime:
+-```
++```bash
+ u0_a65@hammerhead:/mnt/sdcard $ shineenc bla.wav bla.mp3
+ shineenc (Liquidsoap version)
+ WAVE PCM Data, stereo 44100Hz 16bit, duration: 00:05:39
+@@ -128,7 +130,7 @@ A bit of history
+ This code was dug out from the dusty crates of those times before internet
+ and github. It apparently was created by Gabriel Bouvigne sometime around
+ the end of the 20th century. The encoder was converted circa 2001 by Pete
+-Everett to fixed-point arithmetic for the RISC OS. Latest we know, Patrick
++Everett to fixed-point arithmetic for the RISC OS. Last we know, Patrick
+ Roberts had worked on the code to make it multi-platform and more library
+ oriented. That was around 2006.
+
+diff --git a/configure.ac b/configure.ac
+index 87a5f68..6d6cb23 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1,6 +1,7 @@
+-AC_INIT([shine],[3.1.0],[savonet-users@lists.sourceforge.net])
++AC_INIT([shine],[3.1.1],[toots@rastageeks.org])
+ AM_INIT_AUTOMAKE([subdir-objects])
+ LT_INIT
+ AC_CONFIG_MACRO_DIR([m4])
+ AC_C_BIGENDIAN([CFLAGS="$CFLAGS -DSHINE_BIG_ENDIAN"])
++AC_CHECK_HEADER([byteswap.h],[CFLAGS="$CFLAGS -DSHINE_HAVE_BSWAP_H"])
+ AC_OUTPUT([Makefile shine.pc])
+diff --git a/js/.npmignore b/js/.npmignore
+new file mode 100644
+index 0000000..f1b84a5
+--- /dev/null
++++ b/js/.npmignore
+@@ -0,0 +1,4 @@
++test/
++src/
++Makefile
++.*
+diff --git a/js/.prettierignore b/js/.prettierignore
+new file mode 100644
+index 0000000..1b64941
+--- /dev/null
++++ b/js/.prettierignore
+@@ -0,0 +1,5 @@
++.next/
++dist/
++stubs/
++public/audio
++__ENV.js
+diff --git a/js/.prettierrc b/js/.prettierrc
+new file mode 100644
+index 0000000..a995c49
+--- /dev/null
++++ b/js/.prettierrc
+@@ -0,0 +1,12 @@
++{
++ "singleQuote": false,
++ "quoteProps": "as-needed",
++ "arrowParens": "avoid",
++ "tabWidth": 2,
++ "trailingComma": "es5",
++ "semi": true,
++ "jsxSingleQuote": true,
++ "bracketSameLine": false,
++ "printWidth": 120,
++ "parser": "typescript"
++}
+diff --git a/js/Makefile b/js/Makefile
+index 465ffde..3781b6e 100644
+--- a/js/Makefile
++++ b/js/Makefile
+@@ -1,24 +1,37 @@
+ # Emscriptem compilation
+
+ EMCC:=emcc
+-EXPORTED_FUNCTIONS:='["_shine_check_config", "_shine_js_init",\
++EXPORTED_FUNCTIONS:='["_malloc", "_free", "_shine_check_config", "_shine_js_init",\
++ "_shine_js_int16_len", "_shine_js_ptr_len", \
+ "_shine_samples_per_pass", "_shine_encode_buffer",\
+- "_shine_flush", "_shine_close"]'
++ "_shine_flush", "_shine_close"]'
+ CFLAGS:=-O3
+-LINKFLAGS:=-s EXPORTED_FUNCTIONS=$(EXPORTED_FUNCTIONS) --memory-init-file 0 $(CFLAGS)
++LINKFLAGS:=-s EXPORTED_FUNCTIONS=$(EXPORTED_FUNCTIONS) -s SINGLE_FILE=1 -s EXPORTED_RUNTIME_METHODS=setValue,getValue --memory-init-file 0 $(CFLAGS)
++WEB_LINKFLAGS:=$(LINKFLAGS) -s ENVIRONMENT='web' -s EXPORT_NAME='createModule' -s USE_ES6_IMPORT_META=0
+
+ C_FILES:=$(wildcard ../src/lib/*.c) src/wrapper.c
+ HEADER_FILES:=$(wildcard ../src/lib/*.h)
+ SOURCES:=$(C_FILES) $(HEADER_FILES)
+-OBJECTS:=$(C_FILES:%.c=%.bc)
++OBJECTS:=$(C_FILES:%.c=%.o)
+
+-all: dist/libshine.js
++all: dist/libshine_node.js dist/libshine_browser.js
+
+-dist/libshine.js: $(SOURCES) $(OBJECTS) src/pre.js src/post.js
+- $(EMCC) $(LINKFLAGS) --pre-js src/pre.js --post-js src/post.js $(OBJECTS) -o $@
++src/post-node.js: src/libshine_class.js src/libshine_node_wrapper.js
++ rm -f src/post-node.js
++ cat src/libshine_class.js src/libshine_node_wrapper.js > src/post-node.js
+
+-%.bc: %.c
++dist/libshine_node.js: $(SOURCES) $(OBJECTS) src/post-node.js
++ $(EMCC) $(LINKFLAGS) --post-js src/post-node.js $(OBJECTS) -o dist/libshine_node.js
++
++dist/libshine_browser_stubs.js: $(SOURCES) $(OBJECTS)
++ $(EMCC) $(WEB_LINKFLAGS) $(OBJECTS) -o dist/libshine_browser_stubs.mjs
++ mv dist/libshine_browser_stubs.mjs dist/libshine_browser_stubs.js
++
++dist/libshine_browser.js: src/libshine_class.js src/libshine_browser_wrapper.js dist/libshine_browser_stubs.js
++ cat src/libshine_class.js src/libshine_browser_wrapper.js > dist/libshine_browser.js
++
++%.o: %.c
+ $(EMCC) $(CFLAGS) -I../src/lib -c $< -o $@
+
+ clean:
+- rm -f *.bc ../src/lib/*.bc
++ rm -rf *.o ../src/lib/*.o dist/libshine*js
+diff --git a/js/README.md b/js/README.md
+index 49ca3f6..d521d4b 100644
+--- a/js/README.md
++++ b/js/README.md
+@@ -1,112 +1,156 @@
+ Shine encoder library for Javascript
+ ====================================
+
+-This directory contains a build of shine for Javascript using
+-[kripken/emscripten](https://github.com/kripken/emscripten) and
+-located in `dist/libshine.js`
++This package contains a build of the [shine](https://github.com/toots/shine) fixed-point
++mp3 encoder compiled for Javascript and wasm using [emscripten-core/emscripten](https://github.com/emscripten-core/emscripten).
++
++Install
++-------
++
++Using `npm`:
++
++```shell
++npm install @toots/shine.js
++```
++
++Using `yarn`:
++
++```shell
++yarn add @toots/shine.js
++```
++
++Using `pnpm`:
++
++```shell
++pnpm install @toots/shine.js
++```
++
++In a HTML page:
++
++When using `webpack`, the package should point to the correct
++`libshine_browser.js` file automatically.
++
++When using directly as a script, you can load the `libshine_node.js`
++file as:
++
++```html
++<script src="libshine_node.js"></script>
++```
++
++See: [test/browser](https://github.com/toots/shine/tree/main/js/test/browser) for an example.
+
+ How to use?
+ -----------
+
+ The encoding API should be quite straight forward:
+
+-```
+-shine = new Shine({
+- samplerate: 44100,
+- bitrate: 128,
+- channels: 2,
+- mode: Shine.STEREO
+-});
++```js
++import { Shine, StereoModel } from "@toots/shine.js";
++
++const exec = async () => {
++ await Shine.initialized;
++
++ shine = new Shine({
++ samplerate: 44100,
++ bitrate: 128,
++ channels: 2,
++ stereoModel: StereoModel.STEREO
++ });
+
+-// All the magic happens here
+-while (..) {
+- // data here is an array of channels.
+- // Channels must have the same number of samples
+- // and both be either Int16Array or Float32Array.
+- encoded = shine.encode(data);
++ // All the magic happens here
++ while (..) {
++ // data here is an array of channels.
++ // Channels must have the same number of samples
++ // and both be either Int16Array or Float32Array.
++ encoded = shine.encode(data);
++ ...
++ }
++
++ // Close and get remaining data.
++ flushed = shine.close();
++
+ ...
+ }
+
+-// Close and get remaining data.
+-flushed = shine.close();
+-...
++exec();
+ ```
+
+ How fast is it?
+ ---------------
+
+-You can run the test suite located in `test/`. As of now (26/07/2014), only firefox
+-and seems to show performances decent enough for real-time encoding while Google Chrome
+-can encode between 1X and 2X.
++You can run the test suite located in `test/`. Encoding rate above `1X` means that
++the browser should be suitable for real-time encoding.
++
++Results, as of December 30, 2022:
+
+-Chrome:
++Chrome (`108.0.5359.124`):
+ ```
+ Executing encoding test
+ Got WAV file.
+ Encoding..
+ Done encoding.
+ File duration: 5.57 seconds
+-Encoding time: 5.18 seconds
+-Encoding rate: 1.08X
++Encoding time: 0.08 seconds
++Encoding rate: 67.96X
+
+ Executing rounds test
+ Encoding 50 buffers of 4096 samples
+ Done encoding
+ Total duration: 4.64
+-Encoding time: 2.73
+-Encoding rate: 1.70X
++Encoding time: 0.03
++Encoding rate: 160.00X
+ ```
+
+-Firefox:
++Firefox (`108.0.1`):
+ ```
+ Executing encoding test
+ Got WAV file.
+ Encoding..
+ Done encoding.
+ File duration: 5.57 seconds
+-Encoding time: 1.48 seconds
+-Encoding rate: 3.76X
++Encoding time: 0.06 seconds
++Encoding rate: 99.52X
+
+ Executing rounds test
+ Encoding 50 buffers of 4096 samples
+ Done encoding
+ Total duration: 4.64
+-Encoding time: 0.98
+-Encoding rate: 4.72X
++Encoding time: 0.03
++Encoding rate: 178.46X
+ ```
+
+-Safari:
++Safari (`16.2`):
+ ```
+ Executing encoding test
+ Got WAV file.
+ Encoding..
+ Done encoding.
+ File duration: 5.57 seconds
+-Encoding time: 11.77 seconds
+-Encoding rate: 0.47X
++Encoding time: 0.12 seconds
++Encoding rate: 46.44X
+
+ Executing rounds test
+ Encoding 50 buffers of 4096 samples
+ Done encoding
+ Total duration: 4.64
+-Encoding time: 6.93
+-Encoding rate: 0.67X
++Encoding time: 0.02
++Encoding rate: 210.91X
+ ```
+
+-NodeJS, v0.10.24:
++NodeJS (`v19.3.0`):
+ ```
+ Executing encoding test
+ Got WAV file.
+ Encoding..
+ Done encoding.
+ File duration: 5.57 seconds
+-Encoding time: 22.57 seconds
+-Encoding rate: 0.25X
++Encoding time: 0.06 seconds
++Encoding rate: 94.45X
+
+ Executing rounds test
+ Encoding 50 buffers of 4096 samples
+ Done encoding
+ Total duration: 4.64
+-Encoding time: 11.46
+-Encoding rate: 0.40X
++Encoding time: 0.03
++Encoding rate: 178.46X
+ ```
+diff --git a/js/dist/libshine.js b/js/dist/libshine.js
+deleted file mode 100644
+index c44f119..0000000
+--- a/js/dist/libshine.js
++++ /dev/null
+@@ -1,16 +0,0 @@
+-var Shine=(function(){var context={};return(function(){var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function shell_read(){throw"no read() available"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function shell_print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function shell_printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}if(!Module["quit"]){Module["quit"]=(function(status,toThrow){throw toThrow})}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i<Runtime.functionPointers.length;i++){if(!Runtime.functionPointers[i]){Runtime.functionPointers[i]=func;return 2*(1+i)}}throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}),removeFunction:(function(index){Runtime.functionPointers[(index-2)/2]=null}),warnOnce:(function(text){if(!Runtime.warnOnce.shown)Runtime.warnOnce.shown={};if(!Runtime.warnOnce.shown[text]){Runtime.warnOnce.shown[text]=1;Module.printErr(text)}}),funcWrappers:{},getFuncWrapper:(function(func,sig){assert(sig);if(!Runtime.funcWrappers[sig]){Runtime.funcWrappers[sig]={}}var sigCache=Runtime.funcWrappers[sig];if(!sigCache[func]){if(sig.length===1){sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func)}}else if(sig.length===2){sigCache[func]=function dynCall_wrapper(arg){return Runtime.dynCall(sig,func,[arg])}}else{sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func,Array.prototype.slice.call(arguments))}}}return sigCache[func]}),getCompilerSetting:(function(name){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"}),stackAlloc:(function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+15&-16;return ret}),staticAlloc:(function(size){var ret=STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+15&-16;return ret}),dynamicAlloc:(function(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0){if(opts&&opts.async){EmterpreterAsync.asyncFinalizers.push((function(){Runtime.stackRestore(stack)}));return}Runtime.stackRestore(stack)}return ret};var sourceRegex=/^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(jsfunc){var parsed=jsfunc.toString().match(sourceRegex).slice(1);return{arguments:parsed[0],body:parsed[1],returnValue:parsed[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource){JSsource={};for(var fun in JSfuncs){if(JSfuncs.hasOwnProperty(fun)){JSsource[fun]=parseJSFunc(JSfuncs[fun])}}}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident);var numericArgs=argTypes.every((function(type){return type==="number"}));var numericRet=returnType!=="string";if(numericRet&&numericArgs){return cfunc}var argNames=argTypes.map((function(x,i){return"$"+i}));var funcstr="(function("+argNames.join(",")+") {";var nargs=argTypes.length;if(!numericArgs){ensureJSsource();funcstr+="var stack = "+JSsource["stackSave"].body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type==="number")continue;var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";";funcstr+=convertCode.body+";";funcstr+=arg+"=("+convertCode.returnValue+");"}}var cfuncname=parseJSFunc((function(){return cfunc})).returnValue;funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");";if(!numericRet){var strgfy=parseJSFunc((function(){return Pointer_stringify})).returnValue;funcstr+="ret = "+strgfy+"(ret);"}if(!numericArgs){ensureJSsource();funcstr+=JSsource["stackRestore"].body.replace("()","(stack)")+";"}funcstr+="return ret})";return eval(funcstr)}}))();Module["ccall"]=ccall;Module["cwrap"]=cwrap;function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];if(typeof curr==="function"){curr=Runtime.getFunctionIndex(curr)}type=singleType||types[i];if(type===0){i++;continue}if(type=="i64")type="i32";setValue(ret+i,curr,type);if(previousType!==type){typeSize=Runtime.getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}Module["allocate"]=allocate;function getMemory(size){if(!staticSealed)return Runtime.staticAlloc(size);if(!runtimeInitialized)return Runtime.dynamicAlloc(size);return _malloc(size)}Module["getMemory"]=getMemory;function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}Module["stackTrace"]=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY<TOTAL_STACK)Module.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")");if(Module["buffer"]){buffer=Module["buffer"]}else{{buffer=new ArrayBuffer(TOTAL_MEMORY)}}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}HEAP32[0]=1668509029;HEAP16[1]=25459;if(HEAPU8[2]!==115||HEAPU8[3]!==99)throw"Runtime error: expected the system to be little-endian!";Module["HEAP"]=HEAP;Module["buffer"]=buffer;Module["HEAP8"]=HEAP8;Module["HEAP16"]=HEAP16;Module["HEAP32"]=HEAP32;Module["HEAPU8"]=HEAPU8;Module["HEAPU16"]=HEAPU16;Module["HEAPU32"]=HEAPU32;Module["HEAPF32"]=HEAPF32;Module["HEAPF64"]=HEAPF64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var lastChar,end;if(dontAddNull){end=buffer+lengthBytesUTF8(string);lastChar=HEAP8[end]}stringToUTF8(string,buffer,Infinity);if(dontAddNull)HEAP8[end]=lastChar}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var ASM_CONSTS=[];STATIC_BASE=Runtime.GLOBAL_BASE;STATICTOP=STATIC_BASE+10560;__ATINIT__.push();allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,104,18,0,0,108,29,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,112,18,0,0,112,29,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,130,18,0,0,121,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,148,18,0,0,130,29,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,180,18,0,0,146,29,0,0,6,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,212,18,0,0,162,29,0,0,6,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,28,19,0,0,198,29,0,0,6,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,100,19,0,0,234,29,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,172,19,0,0,14,30,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,44,20,0,0,78,30,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,172,20,0,0,142,30,0,0,16,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,44,21,0,0,206,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,44,23,0,0,206,31,0,0,16,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,2,0,0,0,3,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,3,0,0,0,7,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,4,0,0,0,15,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,6,0,0,0,63,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,8,0,0,0,255,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,10,0,0,0,255,3,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,13,0,0,0,255,31,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,4,0,0,0,15,0,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,5,0,0,0,31,0,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,6,0,0,0,63,0,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,7,0,0,0,127,0,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,8,0,0,0,255,0,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,9,0,0,0,255,1,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,11,0,0,0,255,7,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,13,0,0,0,255,31,0,0,44,27,0,0,206,33,0,0,1,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,44,29,0,0,206,34,0,0,1,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,76,29,0,0,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,6,0,0,0,11,0,0,0,16,0,0,0,21,0,0,0,1,0,0,0,255,255,255,255,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,68,172,0,0,128,187,0,0,0,125,0,0,34,86,0,0,192,93,0,0,128,62,0,0,17,43,0,0,224,46,0,0,64,31,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,8,0,0,0,255,255,255,255,8,0,0,0,32,0,0,0,16,0,0,0,255,255,255,255,16,0,0,0,40,0,0,0,24,0,0,0,255,255,255,255,24,0,0,0,48,0,0,0,32,0,0,0,255,255,255,255,32,0,0,0,56,0,0,0,40,0,0,0,255,255,255,255,40,0,0,0,64,0,0,0,48,0,0,0,255,255,255,255,48,0,0,0,80,0,0,0,56,0,0,0,255,255,255,255,56,0,0,0,96,0,0,0,64,0,0,0,255,255,255,255,64,0,0,0,112,0,0,0,255,255,255,255,255,255,255,255,80,0,0,0,128,0,0,0,255,255,255,255,255,255,255,255,96,0,0,0,160,0,0,0,255,255,255,255,255,255,255,255,112,0,0,0,192,0,0,0,255,255,255,255,255,255,255,255,128,0,0,0,224,0,0,0,255,255,255,255,255,255,255,255,144,0,0,0,0,1,0,0,255,255,255,255,255,255,255,255,160,0,0,0,64,1,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,4,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,52,0,0,0,62,0,0,0,74,0,0,0,90,0,0,0,110,0,0,0,134,0,0,0,162,0,0,0,196,0,0,0,238,0,0,0,32,1,0,0,86,1,0,0,162,1,0,0,64,2,0,0,0,0,0,0,4,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,42,0,0,0,50,0,0,0,60,0,0,0,72,0,0,0,88,0,0,0,106,0,0,0,128,0,0,0,156,0,0,0,190,0,0,0,230,0,0,0,20,1,0,0,74,1,0,0,128,1,0,0,64,2,0,0,0,0,0,0,4,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,54,0,0,0,66,0,0,0,82,0,0,0,102,0,0,0,126,0,0,0,156,0,0,0,194,0,0,0,240,0,0,0,40,1,0,0,108,1,0,0,192,1,0,0,38,2,0,0,64,2,0,0,0,0,0,0,6,0,0,0,12,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,54,0,0,0,66,0,0,0,80,0,0,0,96,0,0,0,116,0,0,0,140,0,0,0,168,0,0,0,200,0,0,0,238,0,0,0,28,1,0,0,80,1,0,0,140,1,0,0,208,1,0,0,10,2,0,0,64,2,0,0,0,0,0,0,6,0,0,0,12,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,54,0,0,0,66,0,0,0,80,0,0,0,96,0,0,0,114,0,0,0,136,0,0,0,162,0,0,0,194,0,0,0,232,0,0,0,22,1,0,0,74,1,0,0,138,1,0,0,208,1,0,0,28,2,0,0,64,2,0,0,0,0,0,0,6,0,0,0,12,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,80,0,0,0,96,0,0,0,116,0,0,0,140,0,0,0,168,0,0,0,200,0,0,0,238,0,0,0,248,0,0,0,80,1,0,0,140,1,0,0,208,1,0,0,10,2,0,0,64,2,0,0,0,0,0,0,6,0,0,0,12,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,54,0,0,0,66,0,0,0,80,0,0,0,96,0,0,0,116,0,0,0,140,0,0,0,168,0,0,0,200,0,0,0,238,0,0,0,28,1,0,0,80,1,0,0,140,1,0,0,208,1,0,0,10,2,0,0,64,2,0,0,0,0,0,0,6,0,0,0,12,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,54,0,0,0,66,0,0,0,80,0,0,0,96,0,0,0,116,0,0,0,140,0,0,0,168,0,0,0,200,0,0,0,238,0,0,0,28,1,0,0,80,1,0,0,140,1,0,0,208,1,0,0,10,2,0,0,64,2,0,0,0,0,0,0,12,0,0,0,24,0,0,0,36,0,0,0,48,0,0,0,60,0,0,0,72,0,0,0,88,0,0,0,108,0,0,0,132,0,0,0,160,0,0,0,192,0,0,0,232,0,0,0,24,1,0,0,80,1,0,0,144,1,0,0,220,1,0,0,54,2,0,0,56,2,0,0,58,2,0,0,60,2,0,0,62,2,0,0,64,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,247,255,255,157,247,255,255,157,247,255,255,157,247,255,255,157,247,255,255,157,247,255,255,58,239,255,255,58,239,255,255,58,239,255,255,58,239,255,255,214,230,255,255,214,230,255,255,214,230,255,255,115,222,255,255,115,222,255,255,15,214,255,255,15,214,255,255,172,205,255,255,72,197,255,255,229,188,255,255,229,188,255,255,129,180,255,255,30,172,255,255,186,163,255,255,87,155,255,255,144,138,255,255,44,130,255,255,101,113,255,255,2,105,255,255,59,88,255,255,215,79,255,255,16,63,255,255,73,46,255,255,31,21,255,255,88,4,255,255,145,243,254,255,103,218,254,255,60,193,254,255,18,168,254,255,75,151,254,255,32,126,254,255,146,92,254,255,104,67,254,255,61,42,254,255,175,8,254,255,133,239,253,255,91,214,253,255,205,180,253,255,162,155,253,255,20,122,253,255,134,88,253,255,92,63,253,255,49,38,253,255,163,4,253,255,221,243,252,255,178,218,252,255,136,193,252,255,163,87,3,0,106,104,3,0,49,121,3,0,148,129,3,0,248,137,3,0,91,146,3,0,91,146,3,0,248,137,3,0,148,129,3,0,205,112,3,0,6,96,3,0,120,62,3,0,234,28,3,0,249,242,2,0,164,192,2,0,79,142,2,0,51,75,2,0,180,255,1,0,209,171,1,0,139,79,1,0,126,226,0,0,112,117,0,0,157,247,255,255,101,113,255,255,202,226,254,255,104,67,254,255,162,155,253,255,121,235,252,255,236,50,252,255,153,105,251,255,226,151,250,255,199,189,249,255,230,210,248,255,4,232,247,255,92,236,246,255,80,232,245,255,68,228,244,255,212,215,243,255,1,195,242,255,203,165,241,255,49,128,240,255,250,98,239,255,96,61,238,255,198,23,237,255,45,242,235,255,147,204,234,255,92,175,233,255,137,154,232,255,182,133,231,255,71,121,230,255,59,117,229,255,246,129,228,255,120,159,227,255,93,197,226,255,109,4,226,255,68,84,225,255,69,189,224,255,113,63,224,255,199,218,223,255,171,151,223,255,186,109,223,255,86,101,223,255,129,126,223,255,157,193,223,255,86,209,31,0,187,66,31,0,203,129,30,0,233,150,29,0,179,121,28,0,39,42,27,0,171,176,25,0,118,252,23,0,235,21,22,0,13,253,19,0,117,169,17,0,236,43,15,0,72,107,12,0,235,111,9,0,156,74,6,0,50,226,2,0,215,79,255,255,195,130,251,255,247,122,247,255,57,73,243,255,38,229,238,255,190,78,234,255,101,142,229,255,27,164,224,255,66,152,219,255,120,98,214,255,132,19,209,255,2,163,203,255,85,25,198,255,69,135,192,255,10,220,186,255,207,48,181,255,49,125,175,255,147,201,169,255,188,38,164,255,72,140,158,255,255,10,153,255,224,162,147,255,179,100,142,255,19,72,137,255,44,102,132,255,254,190,127,255,135,82,123,255,144,49,119,255,124,100,115,255,174,243,111,255,39,223,108,255,16,64,106,255,163,5,104,255,11,73,102,255,170,18,101,255,129,98,100,255,86,73,100,255,42,199,100,255,97,228,101,255,93,169,103,255,130,30,106,255,52,76,109,255,115,50,113,255,5,226,117,255,135,82,123,255,93,140,129,255,78,160,136,255,245,133,144,255,73,186,102,0,9,24,93,0,17,164,82,0,56,69,71,0,226,3,59,0,13,224,45,0,86,209,31,0,133,232,16,0,210,20,1,0,6,103,240,255,187,214,222,255,85,108,204,255,213,39,185,255,1,26,165,255,118,58,144,255,151,145,122,255,200,39,100,255,109,5,77,255,232,50,53,255,58,176,28,255,142,150,3,255,227,229,233,254,156,166,207,254,130,233,180,254,90,191,153,254,37,40,126,254,169,52,98,254,18,254,69,254,251,123,41,254,243,207,12,254,92,2,240,253,255,35,211,253,63,61,182,253,226,94,153,253,19,162,124,253,209,6,96,253,172,174,67,253,163,153,39,253,67,233,11,253,141,157,240,252,171,207,213,252,1,136,187,252,86,215,161,252,212,214,136,252,223,142,112,252,218,7,89,252,239,90,66,252,130,144,44,252,247,176,23,252,120,213,3,252,105,6,241,251,44,76,223,251,38,175,206,251,29,64,191,251,117,7,177,251,145,13,164,251,214,90,152,251,165,247,141,251,0,228,132,251,174,48,125,251,173,221,118,251,255,234,113,251,7,97,110,251,197,63,108,251,200,120,148,4,59,192,147,4,249,158,145,4,1,21,142,4,83,34,137,4,82,207,130,4,0,28,123,4,91,8,114,4,42,165,103,4,111,242,91,4,139,248,78,4,227,191,64,4,218,80,49,4,212,179,32,4,151,249,14,4,136,42,252,3,9,79,232,3,126,111,211,3,17,165,189,3,38,248,166,3,33,113,143,3,44,41,119,3,170,40,94,3,255,119,68,3,85,48,42,3,115,98,15,3,189,22,244,2,93,102,216,2,84,81,188,2,47,249,159,2,237,93,131,2,30,161,102,2,193,194,73,2,1,220,44,2,164,253,15,2,13,48,243,1,5,132,214,1,238,1,186,1,87,203,157,1,219,215,129,1,166,64,102,1,126,22,75,1,100,89,48,1,29,26,22,1,114,105,252,0,198,79,227,0,24,205,202,0,147,250,178,0,56,216,155,0,105,110,133,0,138,197,111,0,255,229,90,0,43,216,70,0,171,147,51,0,69,41,33,0,250,152,15,0,46,235,254,255,123,23,239,255,170,46,224,255,243,31,210,255,30,252,196,255,200,186,184,255,239,91,173,255,247,231,162,255,73,186,102,0,11,122,111,0,178,95,119,0,163,115,126,0,121,173,132,0,251,29,138,0,141,205,142,0,204,179,146,0,126,225,149,0,163,86,152,0,159,27,154,0,214,56,155,0,170,182,155,0,127,157,155,0,86,237,154,0,245,182,153,0,93,250,151,0,240,191,149,0,217,32,147,0,82,12,144,0,132,155,140,0,112,206,136,0,121,173,132,0,2,65,128,0,212,153,123,0,237,183,118,0,77,155,113,0,32,93,108,0,1,245,102,0,184,115,97,0,68,217,91,0,109,54,86,0,207,130,80,0,49,207,74,0,246,35,69,0,187,120,63,0,171,230,57,0,254,92,52,0,124,236,46,0,136,157,41,0,190,103,36,0,229,91,31,0,155,113,26,0,66,177,21,0,218,26,17,0,199,182,12,0,9,133,8,0,61,125,4,0,41,176,0,0,206,29,253,255,100,181,249,255,21,144,246,255,184,148,243,255,20,212,240,255,139,86,238,255,243,2,236,255,21,234,233,255,138,3,232,255,85,79,230,255,217,213,228,255,77,134,227,255,23,105,226,255,53,126,225,255,69,189,224,255,86,209,31,0,99,62,32,0,127,129,32,0,170,154,32,0,70,146,32,0,85,104,32,0,57,37,32,0,143,192,31,0,187,66,31,0,188,171,30,0,147,251,29,0,163,58,29,0,136,96,28,0,10,126,27,0,197,138,26,0,185,134,25,0,74,122,24,0,119,101,23,0,164,80,22,0,109,51,21,0,211,13,20,0,58,232,18,0,160,194,17,0,6,157,16,0,207,127,15,0,53,90,14,0,255,60,13,0,44,40,12,0,188,27,11,0,176,23,10,0,164,19,9,0,252,23,8,0,26,45,7,0,57,66,6,0,30,104,5,0,103,150,4,0,20,205,3,0,135,20,3,0,94,100,2,0,152,188,1,0,54,29,1,0,155,142,0,0,99,8,0,0,144,138,255,255,130,29,255,255,117,176,254,255,47,84,254,255,76,0,254,255,205,180,253,255,177,113,253,255,92,63,253,255,7,13,253,255,22,227,252,255,136,193,252,255,250,159,252,255,51,143,252,255,108,126,252,255,8,118,252,255,165,109,252,255,165,109,252,255,8,118,252,255,108,126,252,255,207,134,252,255,150,151,252,255,163,87,3,0,120,62,3,0,78,37,3,0,35,12,3,0,93,251,2,0,207,217,2,0,164,192,2,0,122,167,2,0,236,133,2,0,94,100,2,0,51,75,2,0,165,41,2,0,123,16,2,0,81,247,1,0,195,213,1,0,152,188,1,0,110,163,1,0,224,129,1,0,181,104,1,0,238,87,1,0,196,62,1,0,153,37,1,0,111,12,1,0,168,251,0,0,225,234,0,0,183,209,0,0,240,192,0,0,41,176,0,0,197,167,0,0,254,150,0,0,155,142,0,0,212,125,0,0,112,117,0,0,169,100,0,0,70,92,0,0,226,83,0,0,127,75,0,0,27,67,0,0,27,67,0,0,184,58,0,0,84,50,0,0,241,41,0,0,241,41,0,0,141,33,0,0,141,33,0,0,42,25,0,0,42,25,0,0,42,25,0,0,198,16,0,0,198,16,0,0,198,16,0,0,198,16,0,0,99,8,0,0,99,8,0,0,99,8,0,0,99,8,0,0,99,8,0,0,99,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,52,37,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,17,0,0,1,0,1,0,1,0,0,0,1,0,2,0,1,0,3,0,1,0,1,0,3,0,2,0,0,0,3,0,2,0,1,0,1,0,1,0,1,0,3,0,2,0,0,0,1,0,2,0,6,0,5,0,3,0,1,0,4,0,4,0,7,0,5,0,7,0,1,0,6,0,1,0,1,0,0,0,7,0,3,0,5,0,1,0,6,0,2,0,3,0,2,0,5,0,4,0,4,0,1,0,3,0,3,0,2,0,0,0,1,0,2,0,10,0,19,0,16,0,10,0,3,0,3,0,7,0,10,0,5,0,3,0,11,0,4,0,13,0,17,0,8,0,4,0,12,0,11,0,18,0,15,0,11,0,2,0,7,0,6,0,9,0,14,0,3,0,1,0,6,0,4,0,5,0,3,0,2,0,0,0,3,0,4,0,6,0,18,0,12,0,5,0,5,0,1,0,2,0,16,0,9,0,3,0,7,0,3,0,5,0,14,0,7,0,3,0,19,0,17,0,15,0,13,0,10,0,4,0,13,0,5,0,8,0,11,0,5,0,1,0,12,0,4,0,4,0,1,0,1,0,0,0,7,0,5,0,9,0,14,0,15,0,7,0,6,0,4,0,5,0,5,0,6,0,7,0,7,0,6,0,8,0,8,0,8,0,5,0,15,0,6,0,9,0,10,0,5,0,1,0,11,0,7,0,9,0,6,0,4,0,1,0,14,0,4,0,6,0,2,0,6,0,0,0,1,0,2,0,10,0,23,0,35,0,30,0,12,0,17,0,3,0,3,0,8,0,12,0,18,0,21,0,12,0,7,0,11,0,9,0,15,0,21,0,32,0,40,0,19,0,6,0,14,0,13,0,22,0,34,0,46,0,23,0,18,0,7,0,20,0,19,0,33,0,47,0,27,0,22,0,9,0,3,0,31,0,22,0,41,0,26,0,21,0,20,0,5,0,3,0,14,0,13,0,10,0,11,0,16,0,6,0,5,0,1,0,9,0,8,0,7,0,8,0,4,0,4,0,2,0,0,0,3,0,4,0,10,0,24,0,34,0,33,0,21,0,15,0,5,0,3,0,4,0,10,0,32,0,17,0,11,0,10,0,11,0,7,0,13,0,18,0,30,0,31,0,20,0,5,0,25,0,11,0,19,0,59,0,27,0,18,0,12,0,5,0,35,0,33,0,31,0,58,0,30,0,16,0,7,0,5,0,28,0,26,0,32,0,19,0,17,0,15,0,8,0,14,0,14,0,12,0,9,0,13,0,14,0,9,0,4,0,1,0,11,0,4,0,6,0,6,0,6,0,3,0,2,0,0,0,9,0,6,0,16,0,33,0,41,0,39,0,38,0,26,0,7,0,5,0,6,0,9,0,23,0,16,0,26,0,11,0,17,0,7,0,11,0,14,0,21,0,30,0,10,0,7,0,17,0,10,0,15,0,12,0,18,0,28,0,14,0,5,0,32,0,13,0,22,0,19,0,18,0,16,0,9,0,5,0,40,0,17,0,31,0,29,0,17,0,13,0,4,0,2,0,27,0,12,0,11,0,15,0,10,0,7,0,4,0,1,0,27,0,12,0,8,0,12,0,6,0,3,0,1,0,0,0,1,0,5,0,14,0,21,0,34,0,51,0,46,0,71,0,42,0,52,0,68,0,52,0,67,0,44,0,43,0,19,0,3,0,4,0,12,0,19,0,31,0,26,0,44,0,33,0,31,0,24,0,32,0,24,0,31,0,35,0,22,0,14,0,15,0,13,0,23,0,36,0,59,0,49,0,77,0,65,0,29,0,40,0,30,0,40,0,27,0,33,0,42,0,16,0,22,0,20,0,37,0,61,0,56,0,79,0,73,0,64,0,43,0,76,0,56,0,37,0,26,0,31,0,25,0,14,0,35,0,16,0,60,0,57,0,97,0,75,0,114,0,91,0,54,0,73,0,55,0,41,0,48,0,53,0,23,0,24,0,58,0,27,0,50,0,96,0,76,0,70,0,93,0,84,0,77,0,58,0,79,0,29,0,74,0,49,0,41,0,17,0,47,0,45,0,78,0,74,0,115,0,94,0,90,0,79,0,69,0,83,0,71,0,50,0,59,0,38,0,36,0,15,0,72,0,34,0,56,0,95,0,92,0,85,0,91,0,90,0,86,0,73,0,77,0,65,0,51,0,44,0,43,0,42,0,43,0,20,0,30,0,44,0,55,0,78,0,72,0,87,0,78,0,61,0,46,0,54,0,37,0,30,0,20,0,16,0,53,0,25,0,41,0,37,0,44,0,59,0,54,0,81,0,66,0,76,0,57,0,54,0,37,0,18,0,39,0,11,0,35,0,33,0,31,0,57,0,42,0,82,0,72,0,80,0,47,0,58,0,55,0,21,0,22,0,26,0,38,0,22,0,53,0,25,0,23,0,38,0,70,0,60,0,51,0,36,0,55,0,26,0,34,0,23,0,27,0,14,0,9,0,7,0,34,0,32,0,28,0,39,0,49,0,75,0,30,0,52,0,48,0,40,0,52,0,28,0,18,0,17,0,9,0,5,0,45,0,21,0,34,0,64,0,56,0,50,0,49,0,45,0,31,0,19,0,12,0,15,0,10,0,7,0,6,0,3,0,48,0,23,0,20,0,39,0,36,0,35,0,53,0,21,0,16,0,23,0,13,0,10,0,6,0,1,0,4,0,2,0,16,0,15,0,17,0,27,0,25,0,20,0,29,0,11,0,17,0,12,0,16,0,8,0,1,0,1,0,0,0,1,0,7,0,12,0,18,0,53,0,47,0,76,0,124,0,108,0,89,0,123,0,108,0,119,0,107,0,81,0,122,0,63,0,13,0,5,0,16,0,27,0,46,0,36,0,61,0,51,0,42,0,70,0,52,0,83,0,65,0,41,0,59,0,36,0,19,0,17,0,15,0,24,0,41,0,34,0,59,0,48,0,40,0,64,0,50,0,78,0,62,0,80,0,56,0,33,0,29,0,28,0,25,0,43,0,39,0,63,0,55,0,93,0,76,0,59,0,93,0,72,0,54,0,75,0,50,0,29,0,52,0,22,0,42,0,40,0,67,0,57,0,95,0,79,0,72,0,57,0,89,0,69,0,49,0,66,0,46,0,27,0,77,0,37,0,35,0,66,0,58,0,52,0,91,0,74,0,62,0,48,0,79,0,63,0,90,0,62,0,40,0,38,0,125,0,32,0,60,0,56,0,50,0,92,0,78,0,65,0,55,0,87,0,71,0,51,0,73,0,51,0,70,0,30,0,109,0,53,0,49,0,94,0,88,0,75,0,66,0,122,0,91,0,73,0,56,0,42,0,64,0,44,0,21,0,25,0,90,0,43,0,41,0,77,0,73,0,63,0,56,0,92,0,77,0,66,0,47,0,67,0,48,0,53,0,36,0,20,0,71,0,34,0,67,0,60,0,58,0,49,0,88,0,76,0,67,0,106,0,71,0,54,0,38,0,39,0,23,0,15,0,109,0,53,0,51,0,47,0,90,0,82,0,58,0,57,0,48,0,72,0,57,0,41,0,23,0,27,0,62,0,9,0,86,0,42,0,40,0,37,0,70,0,64,0,52,0,43,0,70,0,55,0,42,0,25,0,29,0,18,0,11,0,11,0,118,0,68,0,30,0,55,0,50,0,46,0,74,0,65,0,49,0,39,0,24,0,16,0,22,0,13,0,14,0,7,0,91,0,44,0,39,0,38,0,34,0,63,0,52,0,45,0,31,0,52,0,28,0,19,0,14,0,8,0,9,0,3,0,123,0,60,0,58,0,53,0,47,0,43,0,32,0,22,0,37,0,24,0,17,0,12,0,15,0,10,0,2,0,1,0,71,0,37,0,34,0,30,0,28,0,20,0,17,0,26,0,21,0,16,0,10,0,6,0,8,0,6,0,2,0,0,0,1,0,5,0,14,0,44,0,74,0,63,0,110,0,93,0,172,0,149,0,138,0,242,0,225,0,195,0,120,1,17,0,3,0,4,0,12,0,20,0,35,0,62,0,53,0,47,0,83,0,75,0,68,0,119,0,201,0,107,0,207,0,9,0,15,0,13,0,23,0,38,0,67,0,58,0,103,0,90,0,161,0,72,0,127,0,117,0,110,0,209,0,206,0,16,0,45,0,21,0,39,0,69,0,64,0,114,0,99,0,87,0,158,0,140,0,252,0,212,0,199,0,131,1,109,1,26,0,75,0,36,0,68,0,65,0,115,0,101,0,179,0,164,0,155,0,8,1,246,0,226,0,139,1,126,1,106,1,9,0,66,0,30,0,59,0,56,0,102,0,185,0,173,0,9,1,142,0,253,0,232,0,144,1,132,1,122,1,189,1,16,0,111,0,54,0,52,0,100,0,184,0,178,0,160,0,133,0,1,1,244,0,228,0,217,0,129,1,110,1,203,2,10,0,98,0,48,0,91,0,88,0,165,0,157,0,148,0,5,1,248,0,151,1,141,1,116,1,124,1,121,3,116,3,8,0,85,0,84,0,81,0,159,0,156,0,143,0,4,1,249,0,171,1,145,1,136,1,127,1,215,2,201,2,196,2,7,0,154,0,76,0,73,0,141,0,131,0,0,1,245,0,170,1,150,1,138,1,128,1,223,2,103,1,198,2,96,1,11,0,139,0,129,0,67,0,125,0,247,0,233,0,229,0,219,0,137,1,231,2,225,2,208,2,117,3,114,3,183,1,4,0,243,0,120,0,118,0,115,0,227,0,223,0,140,1,234,2,230,2,224,2,209,2,200,2,194,2,223,0,180,1,6,0,202,0,224,0,222,0,218,0,216,0,133,1,130,1,125,1,108,1,120,3,187,1,195,2,184,1,181,1,192,6,4,0,235,2,211,0,210,0,208,0,114,1,123,1,222,2,211,2,202,2,199,6,115,3,109,3,108,3,131,13,97,3,2,0,121,1,113,1,102,0,187,0,214,2,210,2,102,1,199,2,197,2,98,3,198,6,103,3,130,13,102,3,178,1,0,0,12,0,10,0,7,0,11,0,10,0,17,0,11,0,9,0,13,0,12,0,10,0,7,0,5,0,3,0,1,0,3,0,15,0,13,0,46,0,80,0,146,0,6,1,248,0,178,1,170,1,157,2,141,2,137,2,109,2,5,2,8,4,88,0,14,0,12,0,21,0,38,0,71,0,130,0,122,0,216,0,209,0,198,0,71,1,89,1,63,1,41,1,23,1,42,0,47,0,22,0,41,0,74,0,68,0,128,0,120,0,221,0,207,0,194,0,182,0,84,1,59,1,39,1,29,2,18,0,81,0,39,0,75,0,70,0,134,0,125,0,116,0,220,0,204,0,190,0,178,0,69,1,55,1,37,1,15,1,16,0,147,0,72,0,69,0,135,0,127,0,118,0,112,0,210,0,200,0,188,0,96,1,67,1,50,1,29,1,28,2,14,0,7,1,66,0,129,0,126,0,119,0,114,0,214,0,202,0,192,0,180,0,85,1,61,1,45,1,25,1,6,1,12,0,249,0,123,0,121,0,117,0,113,0,215,0,206,0,195,0,185,0,91,1,74,1,52,1,35,1,16,1,8,2,10,0,179,1,115,0,111,0,109,0,211,0,203,0,196,0,187,0,97,1,76,1,57,1,42,1,27,1,19,2,125,1,17,0,171,1,212,0,208,0,205,0,201,0,193,0,186,0,177,0,169,0,64,1,47,1,30,1,12,1,2,2,121,1,16,0,79,1,199,0,197,0,191,0,189,0,181,0,174,0,77,1,65,1,49,1,33,1,19,1,9,2,123,1,115,1,11,0,156,2,184,0,183,0,179,0,175,0,88,1,75,1,58,1,48,1,34,1,21,1,18,2,127,1,117,1,110,1,10,0,140,2,90,1,171,0,168,0,164,0,62,1,53,1,43,1,31,1,20,1,7,1,1,2,119,1,112,1,106,1,6,0,136,2,66,1,60,1,56,1,51,1,46,1,36,1,28,1,13,1,5,1,0,2,120,1,114,1,108,1,103,1,4,0,108,2,44,1,40,1,38,1,32,1,26,1,17,1,10,1,3,2,124,1,118,1,113,1,109,1,105,1,101,1,2,0,9,4,24,1,22,1,18,1,11,1,8,1,3,1,126,1,122,1,116,1,111,1,107,1,104,1,102,1,100,1,0,0,43,0,20,0,19,0,17,0,15,0,13,0,11,0,9,0,7,0,6,0,4,0,7,0,5,0,3,0,1,0,3,0,1,0,5,0,4,0,5,0,6,0,5,0,4,0,4,0,7,0,3,0,6,0,0,0,7,0,2,0,3,0,1,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,0,1,0,0,0,1,3,2,3,1,3,6,3,3,5,5,5,6,2,2,6,3,2,5,5,5,6,1,3,6,7,3,3,6,7,6,6,7,8,7,6,7,8,3,3,5,7,3,2,4,5,4,4,5,6,6,5,6,7,1,3,6,8,8,9,3,4,6,7,7,8,6,5,7,8,8,9,7,7,8,9,9,9,7,7,8,9,9,10,8,8,9,10,10,10,2,3,6,8,8,9,3,2,4,8,8,8,6,4,6,8,8,9,8,8,8,9,9,10,8,7,8,9,10,10,9,8,9,9,11,11,3,3,5,6,8,9,3,3,4,5,6,8,4,4,5,6,7,8,6,5,6,7,7,8,7,6,7,7,8,9,8,7,8,8,9,9,1,3,6,8,9,9,9,10,3,4,6,7,8,9,8,8,6,6,7,8,9,10,9,9,7,7,8,9,10,10,9,10,8,8,9,10,10,10,10,10,9,9,10,10,11,11,10,11,8,8,9,10,10,10,11,11,9,8,9,10,10,11,11,11,2,3,5,7,8,9,8,9,3,3,4,6,8,8,7,8,5,5,6,7,8,9,8,8,7,6,7,9,8,10,8,9,8,8,8,9,9,10,9,10,8,8,9,10,10,11,10,11,8,7,7,8,9,10,10,10,8,7,8,9,10,10,10,10,4,3,5,7,8,9,9,9,3,3,4,5,7,7,8,8,5,4,5,6,7,8,7,8,6,5,6,6,7,8,8,8,7,6,7,7,8,8,8,9,8,7,8,8,8,9,8,9,8,7,7,8,8,9,9,10,9,8,8,9,9,9,9,10,1,4,6,7,8,9,9,10,9,10,11,11,12,12,13,13,3,4,6,7,8,8,9,9,9,9,10,10,11,12,12,12,6,6,7,8,9,9,10,10,9,10,10,11,11,12,13,13,7,7,8,9,9,10,10,10,10,11,11,11,11,12,13,13,8,7,9,9,10,10,11,11,10,11,11,12,12,13,13,14,9,8,9,10,10,10,11,11,11,11,12,11,13,13,14,14,9,9,10,10,11,11,11,11,11,12,12,12,13,13,14,14,10,9,10,11,11,11,12,12,12,12,13,13,13,14,16,16,9,8,9,10,10,11,11,12,12,12,12,13,13,14,15,15,10,9,10,10,11,11,11,13,12,13,13,14,14,14,16,15,10,10,10,11,11,12,12,13,12,13,14,13,14,15,16,17,11,10,10,11,12,12,12,12,13,13,13,14,15,15,15,16,11,11,11,12,12,13,12,13,14,14,15,15,15,16,16,16,12,11,12,13,13,13,14,14,14,14,14,15,16,15,16,16,13,12,12,13,13,13,15,14,14,17,15,15,15,17,16,16,12,12,13,14,14,14,15,14,15,15,16,16,19,18,19,16,3,4,5,7,7,8,9,9,9,10,10,11,11,11,12,13,4,3,5,6,7,7,8,8,8,9,9,10,10,10,11,11,5,5,5,6,7,7,8,8,8,9,9,10,10,11,11,11,6,6,6,7,7,8,8,9,9,9,10,10,10,11,11,11,7,6,7,7,8,8,9,9,9,9,10,10,10,11,11,11,8,7,7,8,8,8,9,9,9,9,10,10,11,11,11,12,9,7,8,8,8,9,9,9,9,10,10,10,11,11,12,12,9,8,8,9,9,9,9,10,10,10,10,10,11,11,11,12,9,8,8,9,9,9,9,10,10,10,10,11,11,12,12,12,9,8,9,9,9,9,10,10,10,11,11,11,11,12,12,12,10,9,9,9,10,10,10,10,10,11,11,11,11,12,13,12,10,9,9,9,10,10,10,10,11,11,11,11,12,12,12,13,11,10,9,10,10,10,11,11,11,11,11,11,12,12,13,13,11,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,12,11,11,11,11,11,11,11,12,12,12,12,13,13,12,13,12,11,11,11,11,11,11,12,12,12,12,12,13,13,13,13,1,4,6,8,9,9,10,10,11,11,11,12,12,12,13,9,3,4,6,7,8,9,9,9,10,10,10,11,12,11,12,8,6,6,7,8,9,9,10,10,11,10,11,11,11,12,12,9,8,7,8,9,9,10,10,10,11,11,12,12,12,13,13,10,9,8,9,9,10,10,11,11,11,12,12,12,13,13,13,9,9,8,9,9,10,11,11,12,11,12,12,13,13,13,14,10,10,9,9,10,11,11,11,11,12,12,12,12,13,13,14,10,10,9,10,10,11,11,11,12,12,13,13,13,13,15,15,10,10,10,10,11,11,11,12,12,13,13,13,13,14,14,14,10,11,10,10,11,11,12,12,13,13,13,13,14,13,14,13,11,11,11,10,11,12,12,12,12,13,14,14,14,15,15,14,10,12,11,11,11,12,12,13,14,14,14,14,14,14,13,14,11,12,12,12,12,12,13,13,13,13,15,14,14,14,14,16,11,14,12,12,12,13,13,14,14,14,16,15,15,15,17,15,11,13,13,11,12,14,14,13,14,14,15,16,15,17,15,14,11,9,8,8,9,9,10,10,10,11,11,11,11,11,11,11,8,4,4,6,7,8,9,9,10,10,11,11,11,11,11,12,9,4,4,5,6,7,8,8,9,9,9,10,10,10,10,10,8,6,5,6,7,7,8,8,9,9,9,9,10,10,10,11,7,7,6,7,7,8,8,8,9,9,9,9,10,10,10,10,7,8,7,7,8,8,8,8,9,9,9,10,10,10,10,11,7,9,7,8,8,8,8,9,9,9,9,10,10,10,10,10,7,9,8,8,8,8,9,9,9,9,10,10,10,10,10,11,7,10,8,8,8,9,9,9,9,10,10,10,10,10,11,11,8,10,9,9,9,9,9,9,9,9,10,10,10,10,11,11,8,10,9,9,9,9,9,9,10,10,10,10,10,11,11,11,8,11,9,9,9,9,10,10,10,10,10,10,11,11,11,11,8,11,10,9,9,9,10,10,10,10,10,10,11,11,11,11,8,11,10,10,10,10,10,10,10,10,10,11,11,11,11,11,8,11,10,10,10,10,10,10,10,11,11,11,11,11,11,11,8,12,10,10,10,10,10,10,11,11,11,11,11,11,11,11,8,8,7,7,7,7,7,7,7,7,7,7,8,8,8,8,4,1,4,4,5,4,6,5,6,4,5,5,6,5,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;Module["_i64Add"]=_i64Add;function _llvm_exp2_f32(x){return Math.pow(2,x)}function _llvm_exp2_f64(){return _llvm_exp2_f32.apply(null,arguments)}Module["_memset"]=_memset;Module["_bitshift64Lshr"]=_bitshift64Lshr;function _abort(){Module["abort"]()}function ___lock(){}function ___unlock(){}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["___muldsi3"]=___muldsi3;Module["___muldi3"]=___muldi3;function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}Module["_sbrk"]=_sbrk;function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;Module["_llvm_bswap_i32"]=_llvm_bswap_i32;function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j<len;j++){___syscall146.printChar(stream,HEAPU8[ptr+j])}ret+=len}return ret}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}__ATEXIT__.push((function(){var fflush=Module["_fflush"];if(fflush)fflush(0);var printChar=___syscall146.printChar;if(!printChar)return;var buffers=___syscall146.buffers;if(buffers[1].length)printChar(1,10);if(buffers[2].length)printChar(2,10)}));DYNAMICTOP_PTR=allocate(1,"i32",ALLOC_STATIC);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_ii":invoke_ii,"invoke_iiii":invoke_iiii,"_llvm_exp2_f64":_llvm_exp2_f64,"___lock":___lock,"_llvm_exp2_f32":_llvm_exp2_f32,"_abort":_abort,"___setErrNo":___setErrNo,"___syscall6":___syscall6,"___syscall140":___syscall140,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___syscall54":___syscall54,"___unlock":___unlock,"___syscall146":___syscall146,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};// EMSCRIPTEN_START_ASM
+-var asm=(function(global,env,buffer) {
+-"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.DYNAMICTOP_PTR|0;var j=env.tempDoublePtr|0;var k=env.ABORT|0;var l=env.STACKTOP|0;var m=env.STACK_MAX|0;var n=0;var o=0;var p=0;var q=0;var r=global.NaN,s=global.Infinity;var t=0,u=0,v=0,w=0,x=0.0;var y=0;var z=global.Math.floor;var A=global.Math.abs;var B=global.Math.sqrt;var C=global.Math.pow;var D=global.Math.cos;var E=global.Math.sin;var F=global.Math.tan;var G=global.Math.acos;var H=global.Math.asin;var I=global.Math.atan;var J=global.Math.atan2;var K=global.Math.exp;var L=global.Math.log;var M=global.Math.ceil;var N=global.Math.imul;var O=global.Math.min;var P=global.Math.max;var Q=global.Math.clz32;var R=env.abort;var S=env.assert;var T=env.enlargeMemory;var U=env.getTotalMemory;var V=env.abortOnCannotGrowMemory;var W=env.invoke_ii;var X=env.invoke_iiii;var Y=env._llvm_exp2_f64;var Z=env.___lock;var _=env._llvm_exp2_f32;var $=env._abort;var aa=env.___setErrNo;var ba=env.___syscall6;var ca=env.___syscall140;var da=env._emscripten_memcpy_big;var ea=env.___syscall54;var fa=env.___unlock;var ga=env.___syscall146;var ha=0.0;
+-// EMSCRIPTEN_START_FUNCS
+-function ka(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}function la(){return l|0}function ma(a){a=a|0;l=a}function na(a,b){a=a|0;b=b|0;l=a;m=b}function oa(a,b){a=a|0;b=b|0;if(!n){n=a;o=b}}function pa(a){a=a|0;y=a}function qa(){return y|0}function ra(a,b){a=a|0;b=b|0;c[a>>2]=gb(b)|0;c[a+4>>2]=b;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=32;return}function sa(a){a=a|0;a=c[a>>2]|0;if(!a)return;hb(a);return}function ta(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=a+16|0;i=c[k>>2]|0;if(i>>>0>d>>>0){d=i-d|0;c[k>>2]=d;k=a+12|0;c[k>>2]=c[k>>2]|b<<d;return}j=a+8|0;e=c[j>>2]|0;g=a+4|0;h=c[g>>2]|0;f=c[a>>2]|0;if((e+4|0)>>>0<h>>>0)g=i;else{f=jb(f,((h|0)/2|0)+h|0)|0;c[a>>2]=f;e=c[g>>2]|0;c[g>>2]=((e|0)/2|0)+e;g=c[k>>2]|0;e=c[j>>2]|0}i=d-g|0;d=a+12|0;c[f+e>>2]=ub(b>>>i|c[d>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+4;j=32-i|0;c[k>>2]=j;c[d>>2]=(i|0)==0?0:b<<j;return}function ua(a){a=a|0;return (c[a+8>>2]<<3)+32-(c[a+16>>2]|0)|0}function va(a){a=a|0;var b=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;C=l;l=l+416|0;B=C;if((c[a>>2]|0)>0){j=a+16|0;g=0;b=c[j>>2]|0;do{if((b|0)>0){f=0;do{b=0;do{if((c[a+25264+(g*4608|0)+(f*2304|0)+(b<<2)>>2]|0)<0?(h=a+2224+(g*4608|0)+(f*2304|0)+(b<<2)|0,i=c[h>>2]|0,(i|0)>0):0)c[h>>2]=0-i;b=b+1|0}while((b|0)!=576);f=f+1|0;b=c[j>>2]|0}while((f|0)<(b|0))}g=g+1|0}while((g|0)<(c[a>>2]|0))}j=a+116|0;tb(B|0,j|0,408)|0;z=a+96|0;ta(z,2047,11);i=a+8|0;ta(z,c[i>>2]|0,2);ta(z,c[a+12>>2]|0,2);ta(z,(c[a+76>>2]|0)==0&1,1);ta(z,c[a+68>>2]|0,4);A=a+72|0;ta(z,(c[A>>2]|0)%3|0,2);ta(z,c[a+32>>2]|0,1);ta(z,c[a+80>>2]|0,1);ta(z,c[a+20>>2]|0,2);ta(z,c[a+84>>2]|0,2);ta(z,c[a+88>>2]|0,1);ta(z,c[a+92>>2]|0,1);ta(z,c[a+28>>2]|0,2);do if((c[i>>2]|0)==3){ta(z,0,9);b=c[B>>2]|0;if((c[a>>2]|0)==2){ta(z,b,3);break}else{ta(z,b,5);break}}else{ta(z,0,8);b=c[B>>2]|0;if((c[a>>2]|0)==2){ta(z,b,2);break}else{ta(z,b,1);break}}while(0);if((c[i>>2]|0)==3?(c[a>>2]|0)>0:0){b=0;do{ta(z,c[B+8+(b<<4)>>2]|0,1);ta(z,c[B+8+(b<<4)+4>>2]|0,1);ta(z,c[B+8+(b<<4)+8>>2]|0,1);ta(z,c[B+8+(b<<4)+12>>2]|0,1);b=b+1|0}while((b|0)<(c[a>>2]|0))}y=a+16|0;b=c[y>>2]|0;if((b|0)>0){h=0;g=c[a>>2]|0;do{if((g|0)>0){f=0;do{ta(z,c[B+40+(h*184|0)+(f*92|0)>>2]|0,12);ta(z,c[B+40+(h*184|0)+(f*92|0)+4>>2]|0,9);ta(z,c[B+40+(h*184|0)+(f*92|0)+12>>2]|0,8);b=c[B+40+(h*184|0)+(f*92|0)+16>>2]|0;if((c[i>>2]|0)==3)ta(z,b,4);else ta(z,b,9);ta(z,0,1);ta(z,c[B+40+(h*184|0)+(f*92|0)+20>>2]|0,5);ta(z,c[B+40+(h*184|0)+(f*92|0)+24>>2]|0,5);ta(z,c[B+40+(h*184|0)+(f*92|0)+28>>2]|0,5);ta(z,c[B+40+(h*184|0)+(f*92|0)+32>>2]|0,4);ta(z,c[B+40+(h*184|0)+(f*92|0)+36>>2]|0,3);if((c[i>>2]|0)==3)ta(z,c[B+40+(h*184|0)+(f*92|0)+40>>2]|0,1);ta(z,c[B+40+(h*184|0)+(f*92|0)+44>>2]|0,1);ta(z,c[B+40+(h*184|0)+(f*92|0)+48>>2]|0,1);f=f+1|0;g=c[a>>2]|0}while((f|0)<(g|0));b=c[y>>2]|0}h=h+1|0}while((h|0)<(b|0))}tb(B|0,j|0,408)|0;if((b|0)<=0){l=C;return}x=0;f=c[a>>2]|0;do{if((f|0)>0){w=(x|0)==0;v=0;do{f=c[B+40+(x*184|0)+(v*92|0)+16>>2]|0;b=c[1044+(f<<2)>>2]|0;f=c[1108+(f<<2)>>2]|0;if(!w?(c[B+8+(v<<4)>>2]|0)!=0:0)t=39;else{ta(z,c[a+1208+(x*176|0)+(v*88|0)>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+4>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+8>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+12>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+16>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+20>>2]|0,b);if(w)t=40;else t=39}if((t|0)==39)if(!(c[B+8+(v<<4)+4>>2]|0))t=40;else t=41;if((t|0)==40){ta(z,c[a+1208+(x*176|0)+(v*88|0)+24>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+28>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+32>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+36>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+40>>2]|0,b);if(w)t=42;else t=41}if((t|0)==41)if(!(c[B+8+(v<<4)+8>>2]|0))t=42;else t=43;if((t|0)==42){ta(z,c[a+1208+(x*176|0)+(v*88|0)+44>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+48>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+52>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+56>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+60>>2]|0,f);if(w)t=44;else t=43}if((t|0)==43?(t=0,(c[B+8+(v<<4)+12>>2]|0)==0):0)t=44;if((t|0)==44){t=0;ta(z,c[a+1208+(x*176|0)+(v*88|0)+64>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+68>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+72>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+76>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+80>>2]|0,f)}q=c[A>>2]|0;u=ua(z)|0;b=c[B+40+(x*184|0)+(v*92|0)+4>>2]<<1;s=c[B+40+(x*184|0)+(v*92|0)+32>>2]|0;r=c[1464+(q*92|0)+(s+1<<2)>>2]|0;s=c[1464+(q*92|0)+(s+2+(c[B+40+(x*184|0)+(v*92|0)+36>>2]|0)<<2)>>2]|0;if((b|0)>0){q=0;do{g=c[B+40+(x*184|0)+(v*92|0)+20+(((q|0)>=(r|0)&1)+((q|0)>=(s|0)&1)<<2)>>2]|0;do if(g|0){h=c[a+2224+(v*4608|0)+(x*2304|0)+(q<<2)>>2]|0;k=c[a+2224+(v*4608|0)+(x*2304|0)+((q|1)<<2)>>2]|0;i=(h|0)>0;h=i?h:0-h|0;i=(i^1)&1;o=(k|0)>0;k=o?k:0-k|0;o=(o^1)&1;f=c[8+(g*24|0)+4>>2]|0;if((g|0)<=15){p=(N(f,h)|0)+k|0;j=e[(c[8+(g*24|0)+16>>2]|0)+(p<<1)>>1]|0;n=(h|0)==0;j=n?j:j<<1|i;m=(k|0)==0;ta(z,m?j:j<<1|o,((m^1)&1)+((n^1)&1)+(d[(c[8+(g*24|0)+20>>2]|0)+p>>0]|0)|0);break}m=c[8+(g*24|0)+8>>2]|0;E=(h|0)>14;F=E?15:h;D=(k|0)>14;j=D?15:k;n=(N(F,f)|0)+j|0;p=e[(c[8+(g*24|0)+16>>2]|0)+(n<<1)>>1]|0;n=d[(c[8+(g*24|0)+20>>2]|0)+n>>0]|0;f=E?h+-15|0:0;g=(F|0)==0;f=g?f:f<<1|i;g=(E?m:0)+((g^1)&1)|0;if(!D){if(j)t=51}else{g=g+m|0;f=f<<m|k+2147483633;t=51}if((t|0)==51){t=0;g=g+1|0;f=f<<1|o}ta(z,p,n);ta(z,f,g)}while(0);q=q+2|0}while((q|0)<(b|0))}f=(c[B+40+(x*184|0)+(v*92|0)+48>>2]|0)+32|0;h=(c[B+40+(x*184|0)+(v*92|0)+8>>2]<<2)+b|0;if((b|0)<(h|0)){g=c[8+(f*24|0)+16>>2]|0;f=c[8+(f*24|0)+20>>2]|0;do{E=c[a+2224+(v*4608|0)+(x*2304|0)+(b<<2)>>2]|0;D=c[a+2224+(v*4608|0)+(x*2304|0)+((b|1)<<2)>>2]|0;t=c[a+2224+(v*4608|0)+(x*2304|0)+(b+2<<2)>>2]|0;F=c[a+2224+(v*4608|0)+(x*2304|0)+(b+3<<2)>>2]|0;p=(E|0)>0;E=p?E:0-E|0;q=(D|0)>0;D=q?D:0-D|0;r=(t|0)>0;t=r?t:0-t|0;s=(F|0)>0;F=s?F:0-F|0;o=(D<<1)+E+(t<<2)+(F<<3)|0;ta(z,e[g+(o<<1)>>1]|0,d[f+o>>0]|0);E=(E|0)==0;p=((p|E)^1)&1;D=(D|0)==0;q=D?p:p<<1|(q^1)&1;t=(t|0)==0;r=t?q:q<<1|(r^1)&1;F=(F|0)==0;ta(z,F?r:r<<1|(s^1)&1,((t^1)&1)+(D?(E^1)&1:E?1:2)+((F^1)&1)|0);b=b+4|0}while((b|0)<(h|0))}b=ua(z)|0;b=(c[B+40+(x*184|0)+(v*92|0)>>2]|0)-(c[B+40+(x*184|0)+(v*92|0)+52>>2]|0)+(u-b)|0;if(b|0){f=(b|0)%32|0;if((b+31|0)>>>0>=63){b=(b|0)/32|0;do{b=b+-1|0;ta(z,-1,32)}while((b|0)!=0)}if(f|0)ta(z,(1<<f)+-1|0,f)}v=v+1|0;f=c[a>>2]|0}while((v|0)<(f|0));b=c[y>>2]|0}x=x+1|0}while((x|0)<(b|0));l=C;return}function wa(a,b,e,f,g,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,O=0,P=0;J=e+72|0;if((b|0)<0)c[J>>2]=(c[J>>2]|0)+-1;v=i+39100|0;w=i+34488|0;x=e+8|0;z=e+4|0;A=e+48|0;C=e+32|0;D=e+36|0;E=e+20|0;F=e+24|0;G=e+28|0;H=e+60|0;I=e+64|0;r=e+68|0;s=i+72|0;t=c[199]|0;u=c[205]|0;do{while(1){f=c[J>>2]|0;c[J>>2]=f+1;f=f+128|0;l=c[i+40480+(f<<2)>>2]|0;q=c[v>>2]|0;m=((l|0)<0)<<31>>31;q=rb(q|0,((q|0)<0)<<31>>31|0,l|0,m|0)|0;nb(q|0,y|0,-2147483648,0)|0;if((y|0)>165140)continue;k=i+39456+(f<<3)|0;j=c[w>>2]|0;g=0;e=0;do{f=c[j+(e<<2)>>2]|0;f=(f|0)>-1?f:0-f|0;f=rb(f|0,((f|0)<0)<<31>>31|0,l|0,m|0)|0;nb(f|0,y|0,-2147483648,0)|0;f=y;if((f|0)<1e4)f=c[i+40992+(f<<2)>>2]|0;else{K=+h[k>>3]*+(c[i+36796+(e<<2)>>2]|0)*4.656612875e-10;f=~~+B(+(+B(+K)*K))}c[a+(e<<2)>>2]=f;g=(g|0)<(f|0)?f:g;e=e+1|0}while((e|0)!=576);if((g|0)<=8192){g=576;break}}while(1){if((g|0)<=1){n=13;break}if(c[a+(g+-1<<2)>>2]|0){n=16;break}f=g+-2|0;if(!(c[a+(f<<2)>>2]|0))g=f;else{n=16;break}}do if((n|0)==13){c[x>>2]=0;n=23}else if((n|0)==16){c[x>>2]=0;if((g|0)>3){j=0;while(1){if((c[a+(g+-1<<2)>>2]|0)>=2){n=24;break}if((c[a+(g+-2<<2)>>2]|0)>=2){n=24;break}if((c[a+(g+-3<<2)>>2]|0)>=2){n=24;break}f=g+-4|0;e=j+1|0;if((c[a+(f<<2)>>2]|0)>=2){n=24;break}c[x>>2]=e;if((f|0)>3){g=f;j=e}else{n=18;break}}if((n|0)==18){n=0;q=f>>1;c[z>>2]=q;g=f;f=q}else if((n|0)==24){n=0;f=g>>>1;c[z>>2]=f;if(!j){k=0;j=0;break}else e=j}j=0;l=g;m=0;k=0;while(1){o=c[a+(l<<2)>>2]|0;L=c[a+((l|1)<<2)>>2]|0;M=c[a+(l+2<<2)>>2]|0;p=c[a+(l+3<<2)>>2]|0;q=(L<<1)+o+(M<<2)+(p<<3)|0;o=(o|0)!=0;p=((M|0)!=0&1)+((L|0)==0?o&1:o?2:1)+((p|0)!=0&1)|0;j=(d[t+q>>0]|0)+j+p|0;k=p+k+(d[u+q>>0]|0)|0;m=m+1|0;if((m|0)==(e|0))break;else l=l+4|0}}else n=23}while(0);if((n|0)==23){f=g>>1;c[z>>2]=f;k=0;j=0}M=(j|0)<(k|0);q=M?j:k;c[A>>2]=(M^1)&1;if(!f){c[C>>2]=0;c[D>>2]=0;j=c[H>>2]|0}else{j=c[s>>2]|0;e=0;while(1)if((c[1464+(j*92|0)+(e<<2)>>2]|0)<(g|0))e=e+1|0;else break;f=c[824+(e<<3)>>2]|0;while(1){k=1464+(j*92|0)+(f+1<<2)|0;l=c[k>>2]|0;if((f|0)!=0&(l|0)>(g|0))f=f+-1|0;else break}c[C>>2]=f;c[H>>2]=l;f=c[824+(e<<3)+4>>2]|0;while(1){e=c[k+(f+1<<2)>>2]|0;if((f|0)!=0&(e|0)>(g|0))f=f+-1|0;else break}c[D>>2]=f;c[I>>2]=e;c[r>>2]=g;j=l}c[E>>2]=0;c[F>>2]=0;c[G>>2]=0;if(!j)k=0;else{k=xa(a,0,j)|0;c[E>>2]=k}e=c[I>>2]|0;n=e>>>0>j>>>0;if(n){o=xa(a,j,e)|0;c[F>>2]=o}else o=0;if(g>>>0>e>>>0){p=xa(a,e,g)|0;c[G>>2]=p}else p=0;do if(k){m=c[8+(k*24|0)+4>>2]|0;l=c[8+(k*24|0)+8>>2]|0;f=(j|0)!=0;if(k>>>0>15){if(!f){f=0;break}k=c[8+(k*24|0)+20>>2]|0;f=0;g=0;do{L=c[a+(g<<2)>>2]|0;M=c[a+((g|1)<<2)>>2]|0;P=(L|0)>14;L=P?15:L;O=(M|0)>14;M=O?15:M;f=(P?l:0)+f+(O?l:0)+(d[k+((N(L,m)|0)+M)>>0]|0)+((L|0)!=0&1)+((M|0)!=0&1)|0;g=g+2|0}while(g>>>0<j>>>0)}else{if(!f){f=0;break}k=c[8+(k*24|0)+20>>2]|0;g=0;f=0;do{O=c[a+(g<<2)>>2]|0;P=c[a+((g|1)<<2)>>2]|0;f=((O|0)!=0&1)+f+((P|0)!=0&1)+(d[k+((N(O,m)|0)+P)>>0]|0)|0;g=g+2|0}while(g>>>0<j>>>0)}}else f=0;while(0);if(o){m=c[8+(o*24|0)+4>>2]|0;l=c[8+(o*24|0)+8>>2]|0;if(o>>>0>15)if(n){k=c[8+(o*24|0)+20>>2]|0;g=0;do{O=c[a+(j<<2)>>2]|0;P=c[a+(j+1<<2)>>2]|0;L=(O|0)>14;O=L?15:O;M=(P|0)>14;P=M?15:P;g=(L?l:0)+g+(M?l:0)+(d[k+((N(O,m)|0)+P)>>0]|0)+((O|0)!=0&1)+((P|0)!=0&1)|0;j=j+2|0}while(j>>>0<e>>>0)}else g=0;else if(n){k=c[8+(o*24|0)+20>>2]|0;g=0;do{O=c[a+(j<<2)>>2]|0;P=c[a+(j+1<<2)>>2]|0;g=((O|0)!=0&1)+g+((P|0)!=0&1)+(d[k+((N(O,m)|0)+P)>>0]|0)|0;j=j+2|0}while(j>>>0<e>>>0)}else g=0;f=g+f|0}if(p){l=c[r>>2]|0;m=c[8+(p*24|0)+4>>2]|0;k=c[8+(p*24|0)+8>>2]|0;g=e>>>0<l>>>0;if(p>>>0>15)if(g){j=c[8+(p*24|0)+20>>2]|0;g=0;do{O=c[a+(e<<2)>>2]|0;P=c[a+(e+1<<2)>>2]|0;L=(O|0)>14;O=L?15:O;M=(P|0)>14;P=M?15:P;g=(L?k:0)+g+(M?k:0)+(d[j+((N(O,m)|0)+P)>>0]|0)+((O|0)!=0&1)+((P|0)!=0&1)|0;e=e+2|0}while(e>>>0<l>>>0)}else g=0;else if(g){j=c[8+(p*24|0)+20>>2]|0;g=0;do{O=c[a+(e<<2)>>2]|0;P=c[a+(e+1<<2)>>2]|0;g=((O|0)!=0&1)+g+((P|0)!=0&1)+(d[j+((N(O,m)|0)+P)>>0]|0)|0;e=e+2|0}while(e>>>0<l>>>0)}else g=0;f=g+f|0}f=f+q|0}while((f|0)>(b|0));return f|0}function xa(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if(b>>>0<e>>>0){f=b;g=0}else{e=0;return e|0}do{m=c[a+(f<<2)>>2]|0;g=(g|0)<(m|0)?m:g;f=f+1|0}while((f|0)!=(e|0));if(!g){e=0;return e|0}if((g|0)>=15){f=g+-15|0;if((c[95]|0)>>>0<f>>>0)if((c[101]|0)>>>0<f>>>0)if((c[107]|0)>>>0<f>>>0)if((c[113]|0)>>>0<f>>>0)if((c[119]|0)>>>0<f>>>0)if((c[125]|0)>>>0<f>>>0)if((c[131]|0)>>>0<f>>>0)if((c[137]|0)>>>0<f>>>0)m=(c[143]|0)>>>0<f>>>0?0:23;else m=22;else m=21;else m=20;else m=19;else m=18;else m=17;else m=16;else m=15;if((c[149]|0)>>>0<f>>>0)if((c[155]|0)>>>0<f>>>0)if((c[161]|0)>>>0<f>>>0)if((c[167]|0)>>>0<f>>>0)if((c[173]|0)>>>0<f>>>0)if((c[179]|0)>>>0<f>>>0)if((c[185]|0)>>>0<f>>>0)l=(c[191]|0)>>>0<f>>>0?0:31;else l=30;else l=29;else l=28;else l=27;else l=26;else l=25;else l=24;if(m){i=c[8+(m*24|0)+4>>2]|0;h=c[8+(m*24|0)+8>>2]|0;j=c[8+(m*24|0)+20>>2]|0;if(m>>>0>15){f=0;g=b;do{n=c[a+(g<<2)>>2]|0;k=c[a+(g+1<<2)>>2]|0;p=(n|0)>14;n=p?15:n;o=(k|0)>14;k=o?15:k;f=(p?h:0)+f+(o?h:0)+(d[j+((N(n,i)|0)+k)>>0]|0)+((n|0)!=0&1)+((k|0)!=0&1)|0;g=g+2|0}while(g>>>0<e>>>0);k=f}else{g=b;f=0;do{o=c[a+(g<<2)>>2]|0;p=c[a+(g+1<<2)>>2]|0;f=((o|0)!=0&1)+f+((p|0)!=0&1)+(d[j+((N(o,i)|0)+p)>>0]|0)|0;g=g+2|0}while(g>>>0<e>>>0);k=f}}else k=0;if(!l){p=0;p=(p|0)<(k|0);p=p?l:m;return p|0}i=c[8+(l*24|0)+4>>2]|0;h=c[8+(l*24|0)+8>>2]|0;j=c[8+(l*24|0)+20>>2]|0;if(l>>>0>15){f=0;g=b;do{o=c[a+(g<<2)>>2]|0;p=c[a+(g+1<<2)>>2]|0;b=(o|0)>14;o=b?15:o;n=(p|0)>14;p=n?15:p;f=(b?h:0)+f+(n?h:0)+(d[j+((N(o,i)|0)+p)>>0]|0)+((o|0)!=0&1)+((p|0)!=0&1)|0;g=g+2|0}while(g>>>0<e>>>0);p=(f|0)<(k|0);p=p?l:m;return p|0}else{g=b;f=0;do{o=c[a+(g<<2)>>2]|0;p=c[a+(g+1<<2)>>2]|0;f=((o|0)!=0&1)+f+((p|0)!=0&1)+(d[j+((N(o,i)|0)+p)>>0]|0)|0;g=g+2|0}while(g>>>0<e>>>0);p=(f|0)<(k|0);p=p?l:m;return p|0}}else k=14;while(1){l=k+-1|0;if(!k){f=0;h=44;break}if((c[8+(l*24|0)>>2]|0)>>>0>g>>>0)break;else k=l}if((h|0)==44)return f|0;if(!l){p=0;return p|0}i=c[8+(l*24|0)+4>>2]|0;h=c[8+(l*24|0)+8>>2]|0;j=c[8+(l*24|0)+20>>2]|0;if(l>>>0>15){f=0;g=b;do{o=c[a+(g<<2)>>2]|0;p=c[a+(g+1<<2)>>2]|0;m=(o|0)>14;o=m?15:o;n=(p|0)>14;p=n?15:p;f=(m?h:0)+f+(n?h:0)+(d[j+((N(o,i)|0)+p)>>0]|0)+((o|0)!=0&1)+((p|0)!=0&1)|0;g=g+2|0}while(g>>>0<e>>>0);j=f}else{g=b;f=0;do{o=c[a+(g<<2)>>2]|0;p=c[a+(g+1<<2)>>2]|0;f=((o|0)!=0&1)+f+((p|0)!=0&1)+(d[j+((N(o,i)|0)+p)>>0]|0)|0;g=g+2|0}while(g>>>0<e>>>0);j=f}switch(k|0){case 3:{h=c[21]|0;i=c[25]|0;f=b;g=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;g=((o|0)!=0&1)+g+((p|0)!=0&1)+(d[i+((N(o,h)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);p=(g|0)>(j|0)?l:3;return p|0}case 6:{h=c[39]|0;i=c[43]|0;f=b;g=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;g=((o|0)!=0&1)+g+((p|0)!=0&1)+(d[i+((N(o,h)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);p=(g|0)>(j|0)?l:6;return p|0}case 8:{g=c[51]|0;h=c[55]|0;f=b;i=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;i=((o|0)!=0&1)+i+((p|0)!=0&1)+(d[h+((N(o,g)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);h=(i|0)>(j|0);k=h?l:8;h=h?j:i;i=c[57]|0;j=c[61]|0;f=b;g=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;g=((o|0)!=0&1)+g+((p|0)!=0&1)+(d[j+((N(o,i)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);return ((g|0)>(h|0)?k:9)|0}case 11:{g=c[69]|0;h=c[73]|0;f=b;i=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;i=((o|0)!=0&1)+i+((p|0)!=0&1)+(d[h+((N(o,g)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);h=(i|0)>(j|0);k=h?l:11;h=h?j:i;i=c[75]|0;j=c[79]|0;f=b;g=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;g=((o|0)!=0&1)+g+((p|0)!=0&1)+(d[j+((N(o,i)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);p=(g|0)>(h|0)?k:12;return p|0}case 14:{h=c[93]|0;i=c[97]|0;f=b;g=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;g=((o|0)!=0&1)+g+((p|0)!=0&1)+(d[i+((N(o,h)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);p=(g|0)>(j|0)?l:15;return p|0}default:{p=l;return p|0}}return 0}function ya(a,b,e,f,g,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,Q=0.0,R=0,S=0,T=0,U=0;K=i+39100|0;L=i+34488|0;M=i+156+(f*184|0)+(g*92|0)+8|0;O=i+156+(f*184|0)+(g*92|0)+4|0;u=i+156+(f*184|0)+(g*92|0)+48|0;v=i+156+(f*184|0)+(g*92|0)+32|0;w=i+156+(f*184|0)+(g*92|0)+36|0;x=i+156+(f*184|0)+(g*92|0)+20|0;z=i+156+(f*184|0)+(g*92|0)+24|0;A=i+156+(f*184|0)+(g*92|0)+28|0;C=i+156+(f*184|0)+(g*92|0)+60|0;D=i+156+(f*184|0)+(g*92|0)+64|0;E=i+156+(f*184|0)+(g*92|0)+68|0;F=i+72|0;G=c[199]|0;H=c[205]|0;t=120;P=-120;do{I=(t|0)/2|0;J=I+P|0;b=J+127|0;n=c[i+40480+(b<<2)>>2]|0;s=c[K>>2]|0;o=((n|0)<0)<<31>>31;s=rb(s|0,((s|0)<0)<<31>>31|0,n|0,o|0)|0;nb(s|0,y|0,-2147483648,0)|0;if((y|0)<=165140){m=i+39456+(b<<3)|0;l=c[L>>2]|0;j=0;k=0;do{b=c[l+(k<<2)>>2]|0;b=(b|0)>-1?b:0-b|0;b=rb(b|0,((b|0)<0)<<31>>31|0,n|0,o|0)|0;nb(b|0,y|0,-2147483648,0)|0;b=y;if((b|0)<1e4)b=c[i+40992+(b<<2)>>2]|0;else{Q=+h[m>>3]*+(c[i+36796+(k<<2)>>2]|0)*4.656612875e-10;b=~~+B(+(+B(+Q)*Q))}c[e+(k<<2)>>2]=b;j=(j|0)<(b|0)?b:j;k=k+1|0}while((k|0)!=576);if((j|0)<=8192){j=576;while(1){if((j|0)<=1){n=10;break}if(c[e+(j+-1<<2)>>2]|0){n=13;break}b=j+-2|0;if(!(c[e+(b<<2)>>2]|0))j=b;else{n=13;break}}do if((n|0)==10){c[M>>2]=0;n=20}else if((n|0)==13){c[M>>2]=0;if((j|0)>3){l=0;while(1){if((c[e+(j+-1<<2)>>2]|0)>=2){n=21;break}if((c[e+(j+-2<<2)>>2]|0)>=2){n=21;break}if((c[e+(j+-3<<2)>>2]|0)>=2){n=21;break}b=j+-4|0;k=l+1|0;if((c[e+(b<<2)>>2]|0)>=2){n=21;break}c[M>>2]=k;if((b|0)>3){j=b;l=k}else{n=15;break}}if((n|0)==15){s=b>>1;c[O>>2]=s;j=b;b=s}else if((n|0)==21){b=j>>>1;c[O>>2]=b;if(!l){c[u>>2]=1;b=0;n=27;break}else k=l}l=0;n=j;o=0;m=0;while(1){q=c[e+(n<<2)>>2]|0;p=c[e+((n|1)<<2)>>2]|0;R=c[e+(n+2<<2)>>2]|0;r=c[e+(n+3<<2)>>2]|0;s=(p<<1)+q+(R<<2)+(r<<3)|0;q=(q|0)!=0;r=((R|0)!=0&1)+((p|0)==0?q&1:q?2:1)+((r|0)!=0&1)|0;l=(d[G+s>>0]|0)+l+r|0;m=r+m+(d[H+s>>0]|0)|0;o=o+1|0;if((o|0)==(k|0)){k=b;n=25;break}else n=n+4|0}}else n=20}while(0);if((n|0)==20){k=j>>1;c[O>>2]=k;m=0;l=0;n=25}if((n|0)==25){n=0;R=(l|0)<(m|0);b=R?l:m;c[u>>2]=(R^1)&1;if(!k){c[v>>2]=0;c[w>>2]=0;s=b;l=c[C>>2]|0}else n=27}if((n|0)==27){m=c[F>>2]|0;l=0;while(1)if((c[1464+(m*92|0)+(l<<2)>>2]|0)<(j|0))l=l+1|0;else break;k=c[824+(l<<3)>>2]|0;while(1){n=1464+(m*92|0)+(k+1<<2)|0;o=c[n>>2]|0;if((k|0)!=0&(o|0)>(j|0))k=k+-1|0;else break}c[v>>2]=k;c[C>>2]=o;k=c[824+(l<<3)+4>>2]|0;while(1){l=c[n+(k+1<<2)>>2]|0;if((k|0)!=0&(l|0)>(j|0))k=k+-1|0;else break}c[w>>2]=k;c[D>>2]=l;c[E>>2]=j;s=b;l=o}c[x>>2]=0;c[z>>2]=0;c[A>>2]=0;if(!l)m=0;else{m=xa(e,0,l)|0;c[x>>2]=m}k=c[D>>2]|0;p=k>>>0>l>>>0;if(p){q=xa(e,l,k)|0;c[z>>2]=q}else q=0;if(j>>>0>k>>>0){r=xa(e,k,j)|0;c[A>>2]=r}else r=0;do if(m){o=c[8+(m*24|0)+4>>2]|0;n=c[8+(m*24|0)+8>>2]|0;b=(l|0)!=0;if(m>>>0>15){if(!b){b=0;break}m=c[8+(m*24|0)+20>>2]|0;b=0;j=0;do{S=c[e+(j<<2)>>2]|0;R=c[e+((j|1)<<2)>>2]|0;U=(S|0)>14;S=U?15:S;T=(R|0)>14;R=T?15:R;b=(U?n:0)+b+(T?n:0)+(d[m+((N(S,o)|0)+R)>>0]|0)+((S|0)!=0&1)+((R|0)!=0&1)|0;j=j+2|0}while(j>>>0<l>>>0)}else{if(!b){b=0;break}m=c[8+(m*24|0)+20>>2]|0;j=0;b=0;do{T=c[e+(j<<2)>>2]|0;U=c[e+((j|1)<<2)>>2]|0;b=((T|0)!=0&1)+b+((U|0)!=0&1)+(d[m+((N(T,o)|0)+U)>>0]|0)|0;j=j+2|0}while(j>>>0<l>>>0)}}else b=0;while(0);if(q){o=c[8+(q*24|0)+4>>2]|0;n=c[8+(q*24|0)+8>>2]|0;if(q>>>0>15)if(p){m=c[8+(q*24|0)+20>>2]|0;j=0;do{T=c[e+(l<<2)>>2]|0;U=c[e+(l+1<<2)>>2]|0;R=(T|0)>14;T=R?15:T;S=(U|0)>14;U=S?15:U;j=(R?n:0)+j+(S?n:0)+(d[m+((N(T,o)|0)+U)>>0]|0)+((T|0)!=0&1)+((U|0)!=0&1)|0;l=l+2|0}while(l>>>0<k>>>0)}else j=0;else if(p){m=c[8+(q*24|0)+20>>2]|0;j=0;do{T=c[e+(l<<2)>>2]|0;U=c[e+(l+1<<2)>>2]|0;j=((T|0)!=0&1)+j+((U|0)!=0&1)+(d[m+((N(T,o)|0)+U)>>0]|0)|0;l=l+2|0}while(l>>>0<k>>>0)}else j=0;b=j+b|0}if(r){n=c[E>>2]|0;o=c[8+(r*24|0)+4>>2]|0;m=c[8+(r*24|0)+8>>2]|0;j=k>>>0<n>>>0;if(r>>>0>15)if(j){l=c[8+(r*24|0)+20>>2]|0;j=0;do{T=c[e+(k<<2)>>2]|0;U=c[e+(k+1<<2)>>2]|0;R=(T|0)>14;T=R?15:T;S=(U|0)>14;U=S?15:U;j=(R?m:0)+j+(S?m:0)+(d[l+((N(T,o)|0)+U)>>0]|0)+((T|0)!=0&1)+((U|0)!=0&1)|0;k=k+2|0}while(k>>>0<n>>>0)}else j=0;else if(j){l=c[8+(r*24|0)+20>>2]|0;j=0;do{T=c[e+(k<<2)>>2]|0;U=c[e+(k+1<<2)>>2]|0;j=((T|0)!=0&1)+j+((U|0)!=0&1)+(d[l+((N(T,o)|0)+U)>>0]|0)|0;k=k+2|0}while(k>>>0<n>>>0)}else j=0;b=j+b|0}b=b+s|0}else b=1e5}else b=1e5;U=(b|0)<(a|0);P=U?P:J;t=U?I:t-I|0}while((t|0)>1);l=i+156+(f*184|0)+(g*92|0)|0;c[i+156+(f*184|0)+(g*92|0)+72>>2]=P;b=c[i+156+(f*184|0)+(g*92|0)+16>>2]|0;k=c[1044+(b<<2)>>2]|0;b=c[1108+(b<<2)>>2]|0;if(f){j=b*5|0;b=((c[i+124+(g<<4)+4>>2]|0)==0?k*5|0:0)+((c[i+124+(g<<4)>>2]|0)==0?k*6|0:0)+((c[i+124+(g<<4)+8>>2]|0)==0?j:0)|0;if(c[i+124+(g<<4)+12>>2]|0){U=b;T=i+156+(f*184|0)+(g*92|0)+52|0;c[T>>2]=U;U=a-U|0;U=wa(e,U,l,0,0,i)|0;T=c[T>>2]|0;U=T+U|0;c[l>>2]=U;return U|0}}else{j=b*5|0;b=j+(k*11|0)|0}U=b+j|0;T=i+156+(f*184|0)+(g*92|0)+52|0;c[T>>2]=U;U=a-U|0;U=wa(e,U,l,0,0,i)|0;T=c[T>>2]|0;U=T+U|0;c[l>>2]=U;return U|0}function za(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=l;l=l+672|0;t=F;b=c[a>>2]|0;if(!b){Pa(a);l=F;return}z=a+16|0;A=a+34488|0;B=a+39100|0;C=a+8|0;D=a+72|0;E=a+39452|0;u=a+39448|0;v=a+39104|0;w=a+39108|0;x=b*23|0;d=c[z>>2]|0;s=0;while(1){r=x+(N(s,-23)|0)|0;b=b+-1|0;if((d|0)>0){q=a+((b<<4)+124)|0;p=0;while(1){o=a+140+(r+(p*46|0)<<2)|0;c[A>>2]=a+25264+(b*4608|0)+(p*2304|0);d=576;e=0;a:while(1){c[B>>2]=e;while(1){f=d+-1|0;if(!d)break a;n=c[(c[A>>2]|0)+(f<<2)>>2]|0;e=((n|0)<0)<<31>>31;e=rb(n|0,e|0,n|0,e|0)|0;e=nb(e|0,y|0,1073741824,0)|0;e=pb(e|0,y|0,31)|0;c[a+34492+(f<<2)>>2]=e;e=c[(c[A>>2]|0)+(f<<2)>>2]|0;e=(e|0)>-1?e:0-e|0;c[a+36796+(f<<2)>>2]=e;if((e|0)>(c[B>>2]|0)){d=f;continue a}else d=f}}m=a+2224+(b*4608|0)+(p*2304|0)|0;n=a+156+(p*184|0)+(b*92|0)|0;c[a+156+(p*184|0)+(b*92|0)+56>>2]=21;ob(t+(p*336|0)+(b*168|0)|0,0,168)|0;b:do if((c[C>>2]|0)==3){k=c[D>>2]|0;c[a+39448+(p<<2)>>2]=c[B>>2];d=0;e=575;while(1){d=(c[a+34492+(e<<2)>>2]>>10)+d|0;if(!e)break;else e=e+-1|0}if(!d)d=0;else d=~~(+L(+(+(d|0)*4.768371584e-07))/.69314718);c[a+39104+(p<<2)>>2]=d;i=20;j=c[1464+(k*92|0)+84>>2]|0;while(1){f=j;j=c[1464+(k*92|0)+(i<<2)>>2]|0;if((j|0)<(f|0)){d=0;e=j;do{d=(c[a+34492+(e<<2)>>2]>>10)+d|0;e=e+1|0}while((e|0)!=(f|0));if(d)d=~~(+L(+(+(d|0)*4.768371584e-07))/.69314718);else d=0}else d=0;c[a+39112+(p*84|0)+(i<<2)>>2]=d;g=+h[t+(p*336|0)+(b*168|0)+(i<<3)>>3];if(g!=0.0)d=~~(+L(+g)/.69314718);else d=0;c[a+39280+(p*84|0)+(i<<2)>>2]=d;if(!i)break;else i=i+-1|0}if((p|0)==1){j=(c[u>>2]|0)!=0;e=c[E>>2]|0?3:2;i=(c[v>>2]|0)-(c[w>>2]|0)|0;i=(((i|0)>-1?i:0-i|0)|0)<10;d=0;f=20;while(1){k=(c[a+39112+(f<<2)>>2]|0)-(c[a+39196+(f<<2)>>2]|0)|0;d=((k|0)>-1?k:0-k|0)+d|0;if(!f)break;else f=f+-1|0}if(((j&1)+e+(i&1)+((d|0)<100&1)|0)==6){d=0;e=0}else{c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;break}do{while(1){k=a+124+(b<<4)+(d<<2)|0;c[k>>2]=0;d=d+1|0;j=e;e=c[1008+(d<<2)>>2]|0;if((j|0)<(e|0)){f=0;i=0;do{G=(c[a+39112+(j<<2)>>2]|0)-(c[a+39196+(j<<2)>>2]|0)|0;f=((G|0)>-1?G:0-G|0)+f|0;G=(c[a+39280+(j<<2)>>2]|0)-(c[a+39364+(j<<2)>>2]|0)|0;i=((G|0)>-1?G:0-G|0)+i|0;j=j+1|0}while((j|0)!=(e|0))}else{i=0;f=0}if((f|0)<10&(i|0)<10)break;c[k>>2]=0;if((d|0)>=4)break b}c[k>>2]=1}while((d|0)<4)}}while(0);d=Na(a+2192+(b<<4)+(p<<3)|0,a)|0;e=a+1208+(p*176|0)+(b*88|0)|0;f=e+88|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));ob(a+1560+(p*312|0)+(b*156|0)|0,0,156)|0;c[o>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[n>>2]=0;c[a+156+(p*184|0)+(b*92|0)+4>>2]=0;c[a+156+(p*184|0)+(b*92|0)+8>>2]=0;e=a+156+(p*184|0)+(b*92|0)+16|0;f=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));if(c[B>>2]|0)c[n>>2]=ya(d,0,m,p,b,a)|0;Oa(n,a);c[a+156+(p*184|0)+(b*92|0)+12>>2]=(c[a+156+(p*184|0)+(b*92|0)+72>>2]|0)+210;p=p+1|0;d=c[z>>2]|0;if((p|0)>=(d|0))break}}if(!b)break;else s=s+1|0}Pa(a);l=F;return}function Aa(a){a=a|0;var b=0,d=0,e=0.0;b=128;d=127;while(1){e=+Y(+(+(128-b|0)*.25));h[a+39456+(d<<3)>>3]=e;e=e*2.0;c[a+40480+(d<<2)>>2]=e>2147483647.0?2147483647:~~(e+.5);if(!d){b=9999;break}else{b=d;d=d+-1|0}}while(1){e=+(b|0);c[a+40992+(b<<2)>>2]=~~(+B(+(e*+B(+e)))+-.0946+.5);if(!b)break;else b=b+-1|0}return}function Ba(a){a=a|0;var b=0,d=0.0,e=0;b=17;while(1){d=+(b<<1|1|0);e=35;while(1){c[a+80992+(b*144|0)+(e<<2)>>2]=~~(+E(+((+(e|0)+.5)*.087266462599717))*+D(+(d*(+((e<<1)+19|0)*.043633231299858195)))*2147483647.0);if(!e)break;else e=e+-1|0}if(!b)break;else b=b+-1|0}return}function Ca(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;s=l;l=l+144|0;p=s;d=c[a>>2]|0;if(!d){l=s;return}q=a+16|0;r=p+140|0;do{d=d+-1|0;e=c[q>>2]|0;if((e|0)>0){o=a+2184+(d<<2)|0;n=0;do{m=a+25264+(d*4608|0)+(n*2304|0)|0;k=n;n=n+1|0;e=0;do{Ea(o,a+11440+(d*6912|0)+(n*2304|0)+(e<<7)|0,d,a,b);j=e|1;Ea(o,a+11440+(d*6912|0)+(n*2304|0)+(j<<7)|0,d,a,b);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+4|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+12|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+20|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+28|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+36|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+44|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+52|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+60|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+68|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+76|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+84|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+92|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+100|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+108|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+116|0;c[i>>2]=0-(c[i>>2]|0);j=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+124|0;c[j>>2]=0-(c[j>>2]|0);e=e+2|0}while((e|0)<18);j=0;while(1){e=18;f=17;while(1){c[p+(f<<2)>>2]=c[a+11440+(d*6912|0)+(k*2304|0)+(f<<7)+(j<<2)>>2];c[p+(e+17<<2)>>2]=c[a+11440+(d*6912|0)+(n*2304|0)+(f<<7)+(j<<2)>>2];if(!f)break;else{e=f;f=f+-1|0}}g=c[r>>2]|0;h=((g|0)<0)<<31>>31;i=17;while(1){e=c[a+80992+(i*144|0)+140>>2]|0;rb(e|0,((e|0)<0)<<31>>31|0,g|0,h|0)|0;e=35;f=y;do{v=e+-1|0;t=c[p+(v<<2)>>2]|0;v=c[a+80992+(i*144|0)+(v<<2)>>2]|0;rb(v|0,((v|0)<0)<<31>>31|0,t|0,((t|0)<0)<<31>>31|0)|0;t=y+f|0;v=e+-2|0;u=c[p+(v<<2)>>2]|0;v=c[a+80992+(i*144|0)+(v<<2)>>2]|0;rb(v|0,((v|0)<0)<<31>>31|0,u|0,((u|0)<0)<<31>>31|0)|0;t=t+y|0;u=e+-3|0;v=c[p+(u<<2)>>2]|0;u=c[a+80992+(i*144|0)+(u<<2)>>2]|0;rb(u|0,((u|0)<0)<<31>>31|0,v|0,((v|0)<0)<<31>>31|0)|0;t=t+y|0;v=e+-4|0;u=c[p+(v<<2)>>2]|0;v=c[a+80992+(i*144|0)+(v<<2)>>2]|0;rb(v|0,((v|0)<0)<<31>>31|0,u|0,((u|0)<0)<<31>>31|0)|0;t=t+y|0;u=e+-5|0;v=c[p+(u<<2)>>2]|0;u=c[a+80992+(i*144|0)+(u<<2)>>2]|0;rb(u|0,((u|0)<0)<<31>>31|0,v|0,((v|0)<0)<<31>>31|0)|0;t=t+y|0;v=e+-6|0;u=c[p+(v<<2)>>2]|0;v=c[a+80992+(i*144|0)+(v<<2)>>2]|0;rb(v|0,((v|0)<0)<<31>>31|0,u|0,((u|0)<0)<<31>>31|0)|0;t=t+y|0;e=e+-7|0;u=c[p+(e<<2)>>2]|0;v=c[a+80992+(i*144|0)+(e<<2)>>2]|0;rb(v|0,((v|0)<0)<<31>>31|0,u|0,((u|0)<0)<<31>>31|0)|0;f=t+y|0}while((e|0)!=0);c[m+(j*72|0)+(i<<2)>>2]=f;if(!i)break;else i=i+-1|0}if(!j){j=1;continue}v=m+(j*72|0)|0;e=c[v>>2]|0;u=((e|0)<0)<<31>>31;w=rb(e|0,u|0,1841452035,0)|0;i=y;t=j+-1|0;h=m+(t*72|0)+68|0;g=c[h>>2]|0;f=((g|0)<0)<<31>>31;x=rb(g|0,f|0,1104871221,0)|0;i=nb(x|0,y|0,w|0,i|0)|0;i=pb(i|0,y|0,31)|0;u=rb(e|0,u|0,-1104871221,-1)|0;e=y;f=rb(g|0,f|0,1841452035,0)|0;e=nb(f|0,y|0,u|0,e|0)|0;e=pb(e|0,y|0,31)|0;c[h>>2]=e;c[v>>2]=i;v=m+(j*72|0)+4|0;i=c[v>>2]|0;h=((i|0)<0)<<31>>31;e=rb(i|0,h|0,1893526520,0)|0;u=y;f=m+(t*72|0)+64|0;g=c[f>>2]|0;w=((g|0)<0)<<31>>31;x=rb(g|0,w|0,1013036688,0)|0;u=nb(x|0,y|0,e|0,u|0)|0;u=pb(u|0,y|0,31)|0;h=rb(i|0,h|0,-1013036688,-1)|0;i=y;w=rb(g|0,w|0,1893526520,0)|0;i=nb(w|0,y|0,h|0,i|0)|0;i=pb(i|0,y|0,31)|0;c[f>>2]=i;c[v>>2]=u;v=m+(j*72|0)+8|0;u=c[v>>2]|0;f=((u|0)<0)<<31>>31;i=rb(u|0,f|0,2039311994,0)|0;h=y;w=m+(t*72|0)+60|0;g=c[w>>2]|0;e=((g|0)<0)<<31>>31;x=rb(g|0,e|0,672972958,0)|0;h=nb(x|0,y|0,i|0,h|0)|0;h=pb(h|0,y|0,31)|0;f=rb(u|0,f|0,-672972958,-1)|0;u=y;e=rb(g|0,e|0,2039311994,0)|0;u=nb(e|0,y|0,f|0,u|0)|0;u=pb(u|0,y|0,31)|0;c[w>>2]=u;c[v>>2]=h;v=m+(j*72|0)+12|0;h=c[v>>2]|0;w=((h|0)<0)<<31>>31;u=rb(h|0,w|0,2111652007,0)|0;f=y;e=m+(t*72|0)+56|0;g=c[e>>2]|0;i=((g|0)<0)<<31>>31;x=rb(g|0,i|0,390655621,0)|0;f=nb(x|0,y|0,u|0,f|0)|0;f=pb(f|0,y|0,31)|0;w=rb(h|0,w|0,-390655621,-1)|0;h=y;i=rb(g|0,i|0,2111652007,0)|0;h=nb(i|0,y|0,w|0,h|0)|0;h=pb(h|0,y|0,31)|0;c[e>>2]=h;c[v>>2]=f;v=m+(j*72|0)+16|0;f=c[v>>2]|0;e=((f|0)<0)<<31>>31;h=rb(f|0,e|0,2137858230,0)|0;w=y;i=m+(t*72|0)+52|0;g=c[i>>2]|0;u=((g|0)<0)<<31>>31;x=rb(g|0,u|0,203096531,0)|0;w=nb(x|0,y|0,h|0,w|0)|0;w=pb(w|0,y|0,31)|0;e=rb(f|0,e|0,-203096531,-1)|0;f=y;u=rb(g|0,u|0,2137858230,0)|0;f=nb(u|0,y|0,e|0,f|0)|0;f=pb(f|0,y|0,31)|0;c[i>>2]=f;c[v>>2]=w;v=m+(j*72|0)+20|0;w=c[v>>2]|0;i=((w|0)<0)<<31>>31;f=rb(w|0,i|0,2145680959,0)|0;e=y;u=m+(t*72|0)+48|0;g=c[u>>2]|0;h=((g|0)<0)<<31>>31;x=rb(g|0,h|0,87972919,0)|0;e=nb(x|0,y|0,f|0,e|0)|0;e=pb(e|0,y|0,31)|0;i=rb(w|0,i|0,-87972919,-1)|0;w=y;h=rb(g|0,h|0,2145680959,0)|0;w=nb(h|0,y|0,i|0,w|0)|0;w=pb(w|0,y|0,31)|0;c[u>>2]=w;c[v>>2]=e;v=m+(j*72|0)+24|0;e=c[v>>2]|0;u=((e|0)<0)<<31>>31;w=rb(e|0,u|0,2147267170,0)|0;i=y;h=m+(t*72|0)+44|0;g=c[h>>2]|0;f=((g|0)<0)<<31>>31;x=rb(g|0,f|0,30491193,0)|0;i=nb(x|0,y|0,w|0,i|0)|0;i=pb(i|0,y|0,31)|0;u=rb(e|0,u|0,-30491193,-1)|0;e=y;f=rb(g|0,f|0,2147267170,0)|0;e=nb(f|0,y|0,u|0,e|0)|0;e=pb(e|0,y|0,31)|0;c[h>>2]=e;c[v>>2]=i;v=m+(j*72|0)+28|0;i=c[v>>2]|0;h=((i|0)<0)<<31>>31;e=rb(i|0,h|0,2147468947,0)|0;u=y;t=m+(t*72|0)+40|0;f=c[t>>2]|0;g=((f|0)<0)<<31>>31;w=rb(f|0,g|0,7945635,0)|0;u=nb(w|0,y|0,e|0,u|0)|0;u=pb(u|0,y|0,31)|0;h=rb(i|0,h|0,-7945635,-1)|0;i=y;g=rb(f|0,g|0,2147468947,0)|0;i=nb(g|0,y|0,h|0,i|0)|0;i=pb(i|0,y|0,31)|0;c[t>>2]=i;c[v>>2]=u;j=j+1|0;if((j|0)==32)break}e=c[q>>2]|0}while((n|0)<(e|0))}tb(a+11440+(d*6912|0)|0,a+11440+(d*6912|0)+(e*2304|0)|0,2304)|0}while((d|0)!=0);l=s;return}function Da(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+16|0;e=j;c[a+83588>>2]=0;c[a+83584>>2]=0;ob(a+91784|0,0,4096)|0;g=31;while(1){i=g<<1|1;b=64;f=63;while(1){d=+D(+(+(N(17-b|0,i)|0)*.049087385212))*1.0e9;h[e>>3]=d;if(!(d>=0.0))+bb(d+-.5,e);else+bb(d+.5,e);c[a+83592+(g<<8)+(f<<2)>>2]=~~(+h[e>>3]*2.147483647);if(!f)break;else{b=f;f=f+-1|0}}if(!g)break;else g=g+-1|0}l=j;return}function Ea(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+256|0;o=p;j=c[a>>2]|0;n=f+83584+(d<<2)|0;k=g<<5;h=j;i=31;m=c[n>>2]|0;while(1){c[f+91784+(d<<11)+(i+m<<2)>>2]=(e[h>>1]|0)<<16;m=c[n>>2]|0;if(!i)break;else{h=h+(g<<1)|0;i=i+-1|0}}c[a>>2]=j+(k<<1);h=64;a=63;while(1){j=a+m|0;k=c[f+91784+(d<<11)+((j&511)<<2)>>2]|0;g=c[2292+(a<<2)>>2]|0;rb(g|0,((g|0)<0)<<31>>31|0,k|0,((k|0)<0)<<31>>31|0)|0;k=y;g=c[f+91784+(d<<11)+((j+64&511)<<2)>>2]|0;i=c[2292+(h+63<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=y+k|0;g=c[f+91784+(d<<11)+((j+128&511)<<2)>>2]|0;i=c[2292+(h+127<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=k+y|0;g=c[f+91784+(d<<11)+((j+192&511)<<2)>>2]|0;i=c[2292+(h+191<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=k+y|0;g=c[f+91784+(d<<11)+((j+256&511)<<2)>>2]|0;i=c[2292+(h+255<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=k+y|0;g=c[f+91784+(d<<11)+((j+320&511)<<2)>>2]|0;i=c[2292+(h+319<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=k+y|0;g=c[f+91784+(d<<11)+((j+384&511)<<2)>>2]|0;i=c[2292+(h+383<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=k+y|0;j=c[f+91784+(d<<11)+((j+448&511)<<2)>>2]|0;g=c[2292+(h+447<<2)>>2]|0;rb(g|0,((g|0)<0)<<31>>31|0,j|0,((j|0)<0)<<31>>31|0)|0;c[o+(a<<2)>>2]=k+y;if(!a)break;else{h=a;a=a+-1|0}}c[n>>2]=m+480&511;i=c[o+252>>2]|0;g=((i|0)<0)<<31>>31;j=31;while(1){h=c[f+83592+(j<<8)+252>>2]|0;rb(i|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;h=y;a=63;do{m=a+-1|0;n=c[f+83592+(j<<8)+(m<<2)>>2]|0;m=c[o+(m<<2)>>2]|0;rb(m|0,((m|0)<0)<<31>>31|0,n|0,((n|0)<0)<<31>>31|0)|0;n=y+h|0;m=a+-2|0;d=c[f+83592+(j<<8)+(m<<2)>>2]|0;m=c[o+(m<<2)>>2]|0;rb(m|0,((m|0)<0)<<31>>31|0,d|0,((d|0)<0)<<31>>31|0)|0;n=n+y|0;d=a+-3|0;m=c[f+83592+(j<<8)+(d<<2)>>2]|0;d=c[o+(d<<2)>>2]|0;rb(d|0,((d|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;n=n+y|0;m=a+-4|0;d=c[f+83592+(j<<8)+(m<<2)>>2]|0;m=c[o+(m<<2)>>2]|0;rb(m|0,((m|0)<0)<<31>>31|0,d|0,((d|0)<0)<<31>>31|0)|0;n=n+y|0;d=a+-5|0;m=c[f+83592+(j<<8)+(d<<2)>>2]|0;d=c[o+(d<<2)>>2]|0;rb(d|0,((d|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;n=n+y|0;m=a+-6|0;d=c[f+83592+(j<<8)+(m<<2)>>2]|0;m=c[o+(m<<2)>>2]|0;rb(m|0,((m|0)<0)<<31>>31|0,d|0,((d|0)<0)<<31>>31|0)|0;n=n+y|0;a=a+-7|0;d=c[f+83592+(j<<8)+(a<<2)>>2]|0;m=c[o+(a<<2)>>2]|0;rb(m|0,((m|0)<0)<<31>>31|0,d|0,((d|0)<0)<<31>>31|0)|0;h=n+y|0}while((a|0)!=0);c[b+(j<<2)>>2]=h;if(!j)break;else j=j+-1|0}l=p;return}function Fa(a){a=a|0;c[a+4>>2]=128;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=1;return}function Ga(a,b){a=a|0;b=b|0;if((c[1208+(b<<2)>>2]|0)==(a|0)){b=0;return b|0}if((c[1224+(b<<2)>>2]|0)==(a|0)){b=1;return b|0}if((c[1240+(b<<2)>>2]|0)==(a|0)){b=2;return b|0}if((c[1256+(b<<2)>>2]|0)==(a|0)){b=3;return b|0}if((c[1272+(b<<2)>>2]|0)==(a|0)){b=4;return b|0}if((c[1288+(b<<2)>>2]|0)==(a|0)){b=5;return b|0}if((c[1304+(b<<2)>>2]|0)==(a|0)){b=6;return b|0}if((c[1320+(b<<2)>>2]|0)==(a|0)){b=7;return b|0}if((c[1336+(b<<2)>>2]|0)==(a|0)){b=8;return b|0}if((c[1352+(b<<2)>>2]|0)==(a|0)){b=9;return b|0}if((c[1368+(b<<2)>>2]|0)==(a|0)){b=10;return b|0}if((c[1384+(b<<2)>>2]|0)==(a|0)){b=11;return b|0}if((c[1400+(b<<2)>>2]|0)==(a|0)){b=12;return b|0}if((c[1416+(b<<2)>>2]|0)==(a|0)){b=13;return b|0}if((c[1432+(b<<2)>>2]|0)==(a|0)){b=14;return b|0}else return ((c[1448+(b<<2)>>2]|0)==(a|0)?15:-1)|0;return 0}function Ha(a,b){a=a|0;b=b|0;if((c[293]|0)!=(a|0))if((c[294]|0)!=(a|0))if((c[295]|0)!=(a|0))if((c[296]|0)!=(a|0))if((c[297]|0)!=(a|0))if((c[298]|0)!=(a|0))if((c[299]|0)!=(a|0))if((c[300]|0)!=(a|0))if((c[301]|0)==(a|0))a=8;else{b=-1;return b|0}else a=7;else a=6;else a=5;else a=4;else a=3;else a=2;else a=1;else a=0;a=a>>>0<3?3:a>>>0<6?2:0;b=(Ga(b,a)|0)<0;b=b?-1:a;return b|0}function Ia(a){a=a|0;return (c[a+16>>2]|0)*576|0}function Ja(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0.0;e=a+4|0;b=c[e>>2]|0;i=a+12|0;d=c[i>>2]|0;j=c[293]|0;if((j|0)!=(b|0))if((c[294]|0)!=(b|0))if((c[295]|0)!=(b|0))if((c[296]|0)!=(b|0))if((c[297]|0)!=(b|0))if((c[298]|0)!=(b|0))if((c[299]|0)!=(b|0))if((c[300]|0)!=(b|0))if((c[301]|0)==(b|0))b=8;else{j=0;return j|0}else b=7;else b=6;else b=5;else b=4;else b=3;else b=2;else b=1;else b=0;if((Ga(d,b>>>0<3?3:b>>>0<6?2:0)|0)<0){j=0;return j|0}g=ib(1,95880)|0;if(!g){j=g;return j|0}Da(g);Ba(g);Aa(g);c[g>>2]=c[a>>2];f=c[e>>2]|0;c[g+4>>2]=f;d=g+8|0;c[g+20>>2]=c[a+8>>2];e=c[i>>2]|0;c[g+24>>2]=e;c[g+28>>2]=c[a+16>>2];c[g+88>>2]=c[a+20>>2];c[g+92>>2]=c[a+24>>2];c[g+34484>>2]=0;c[g+34480>>2]=0;c[g+12>>2]=1;c[g+76>>2]=0;c[g+80>>2]=0;c[g+84>>2]=0;c[g+40>>2]=8;if((j|0)!=(f|0))if((c[294]|0)!=(f|0))if((c[295]|0)!=(f|0))if((c[296]|0)!=(f|0))if((c[297]|0)!=(f|0))if((c[298]|0)!=(f|0))if((c[299]|0)!=(f|0))if((c[300]|0)==(f|0))b=7;else b=(c[301]|0)==(f|0)?8:-1;else b=6;else b=5;else b=4;else b=3;else b=2;else b=1;else b=0;c[g+72>>2]=b;j=(b|0)<3?3:(b|0)<6?2:0;c[d>>2]=j;c[g+68>>2]=Ga(e,j)|0;j=c[1028+(j<<2)>>2]|0;b=g+16|0;c[b>>2]=j;k=+(j|0)*576.0/+(f|0)*(+(e|0)*1.0e3*.125);j=~~k;c[g+64>>2]=j;k=k-+(j|0);h[g+48>>3]=k;h[g+56>>3]=-k;if(k==0.0)c[g+32>>2]=0;ra(g+96|0,4096);ob(g+116|0,0,408)|0;j=(c[g>>2]|0)==1;c[g+524>>2]=(c[b>>2]|0)==2?(j?168:288):j?104:168;j=g;return j|0}function Ka(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0;c[a+2184>>2]=c[b>>2];if((c[a>>2]|0)==2)c[a+2188>>2]=c[b+4>>2];e=+h[a+48>>3];if(e!=0.0){f=a+56|0;i=+h[f>>3];g=i<=e+-1.0;b=g&1;c[a+32>>2]=b;h[f>>3]=i+(+(g&1)-e)}else b=c[a+32>>2]|0;g=(c[a+64>>2]|0)+b<<3;c[a+36>>2]=g;c[a+528>>2]=(g-(c[a+524>>2]|0)|0)/(c[a+16>>2]|0)|0;Ca(a,1);za(a);va(a);g=a+104|0;c[d>>2]=c[g>>2];c[g>>2]=0;return c[a+96>>2]|0}function La(a,b){a=a|0;b=b|0;var d=0;d=a+104|0;c[b>>2]=c[d>>2];c[d>>2]=0;return c[a+96>>2]|0}function Ma(a){a=a|0;sa(a+96|0);hb(a);return}function Na(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b+528>>2]|0)/(c[b>>2]|0)|0;e=(d|0)<4095?d:4095;f=c[b+34484>>2]|0;if(!f){f=e;return f|0}a=~~(+h[a>>3]*3.1-+(d|0));d=c[b+34480>>2]|0;if((a|0)>100){b=(d*6|0)/10|0;a=(b|0)<(a|0)?b:a}else a=0;f=d-((f<<3|0)/10|0)|0;f=((f|0)>(a|0)?f:a)+e|0;f=(f|0)<4095?f:4095;return f|0}function Oa(a,b){a=a|0;b=b|0;var d=0;d=b+34480|0;c[d>>2]=((c[b+528>>2]|0)/(c[b>>2]|0)|0)-(c[a>>2]|0)+(c[d>>2]|0);return}function Pa(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;f=c[a>>2]|0;if((f|0)==2?c[a+528>>2]&1|0:0){h=a+34480|0;c[h>>2]=(c[h>>2]|0)+1}h=a+34480|0;e=c[h>>2]|0;b=e-(c[a+34484>>2]|0)|0;b=(b|0)>0?b:0;e=e-b|0;g=(e|0)%8|0;b=g+b|0;c[h>>2]=e-g;if(!b)return;d=a+156|0;e=(c[d>>2]|0)+b|0;if(e>>>0<4095){c[d>>2]=e;return}h=a+16|0;d=c[h>>2]|0;if((d|0)>0){g=0;e=f;do{if((e|0)>0){f=0;d=e;while(1){if(!b){b=0;e=d;break}e=a+156+(g*184|0)+(f*92|0)|0;i=c[e>>2]|0;d=4095-i|0;d=(d|0)<(b|0)?d:b;c[e>>2]=d+i;b=b-d|0;f=f+1|0;d=c[a>>2]|0;if((f|0)>=(d|0)){e=d;break}}d=c[h>>2]|0}g=g+1|0}while((g|0)<(d|0))}c[a+120>>2]=b;return}function Qa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=l;l=l+32|0;g=f;c[g>>2]=a;c[g+4>>2]=b;b=g+8|0;Fa(b);c[b>>2]=d;c[g+12>>2]=e;e=Ja(g)|0;l=f;return e|0}function Ra(){return 8944}function Sa(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Za(c[a+60>>2]|0)|0;a=Va(ba(6,d|0)|0)|0;l=b;return a|0}function Ta(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+48|0;k=n+16|0;g=n;f=n+32|0;i=a+28|0;e=c[i>>2]|0;c[f>>2]=e;j=a+20|0;e=(c[j>>2]|0)-e|0;c[f+4>>2]=e;c[f+8>>2]=b;c[f+12>>2]=d;e=e+d|0;h=a+60|0;c[g>>2]=c[h>>2];c[g+4>>2]=f;c[g+8>>2]=2;g=Va(ga(146,g|0)|0)|0;a:do if((e|0)!=(g|0)){b=2;while(1){if((g|0)<0)break;e=e-g|0;p=c[f+4>>2]|0;o=g>>>0>p>>>0;f=o?f+8|0:f;b=(o<<31>>31)+b|0;p=g-(o?p:0)|0;c[f>>2]=(c[f>>2]|0)+p;o=f+4|0;c[o>>2]=(c[o>>2]|0)-p;c[k>>2]=c[h>>2];c[k+4>>2]=f;c[k+8>>2]=b;g=Va(ga(146,k|0)|0)|0;if((e|0)==(g|0)){m=3;break a}}c[a+16>>2]=0;c[i>>2]=0;c[j>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[f+4>>2]|0)|0}else m=3;while(0);if((m|0)==3){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[i>>2]=p;c[j>>2]=p}l=n;return d|0}function Ua(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((Va(ca(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;l=f;return a|0}function Va(a){a=a|0;if(a>>>0>4294963200){c[(Wa()|0)>>2]=0-a;a=-1}return a|0}function Wa(){return (Xa()|0)+64|0}function Xa(){return Ya()|0}function Ya(){return 4340}function Za(a){a=a|0;return a|0}function _a(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36>>2]=3;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21523,c[f+8>>2]=g+16,ea(54,f|0)|0):0)a[b+75>>0]=-1;f=Ta(b,d,e)|0;l=g;return f|0}function $a(a){a=a|0;return 0}function ab(a){a=a|0;return}function bb(a,b){a=+a;b=b|0;var d=0,e=0,f=0,g=0,i=0.0;h[j>>3]=a;f=c[j>>2]|0;g=c[j+4>>2]|0;d=pb(f|0,g|0,52)|0;d=d&2047;e=d+-1023|0;if((e|0)>51){h[b>>3]=a;c[j>>2]=0;c[j+4>>2]=g&-2147483648;return +((f|0)==0&(g&1048575|0)==0|(e|0)!=1024?+h[j>>3]:a)}do if(d>>>0>=1023){d=pb(-1,1048575,e|0)|0;e=y;if((d&f|0)==0&(e&g|0)==0){h[b>>3]=a;c[j>>2]=0;c[j+4>>2]=g&-2147483648;a=+h[j>>3];break}else{d=f&~d;f=g&~e;c[j>>2]=d;c[j+4>>2]=f;i=+h[j>>3];g=b;c[g>>2]=d;c[g+4>>2]=f;a=a-i;break}}else{f=b;c[f>>2]=0;c[f+4>>2]=g&-2147483648}while(0);return +a}function cb(){Z(9008);return 9016}function db(){fa(9008);return}function eb(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=fb(a)|0;break}d=($a(a)|0)==0;b=fb(a)|0;if(!d)ab(a)}else{if(!(c[1177]|0))b=0;else b=eb(c[1177]|0)|0;a=c[(cb()|0)>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=$a(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=fb(a)|0|b;if(d|0)ab(a);a=c[a+56>>2]|0}while((a|0)!=0);db()}while(0);return b|0}function fb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(ja[c[a+36>>2]&3](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0<g>>>0)ja[c[a+40>>2]&3](a,e-g|0,1)|0;c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function gb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=l;l=l+16|0;o=K;do if(a>>>0<245){p=a>>>0<11?16:a+11&-8;a=p>>>3;t=c[2255]|0;d=t>>>a;if(d&3|0){a=(d&1^1)+a|0;d=9060+(a<<1<<2)|0;e=d+8|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[2259]|0)>>>0)$();b=h+12|0;if((c[b>>2]|0)==(f|0)){c[b>>2]=d;c[e>>2]=h;break}else $()}else c[2255]=t&~(1<<a);while(0);J=a<<3;c[f+4>>2]=J|3;J=f+J+4|0;c[J>>2]=c[J>>2]|1;J=g;l=K;return J|0}s=c[2257]|0;if(p>>>0>s>>>0){if(d|0){i=2<<a;a=d<<a&(i|0-i);a=(a&0-a)+-1|0;i=a>>>12&16;a=a>>>i;e=a>>>5&8;a=a>>>e;g=a>>>2&4;a=a>>>g;d=a>>>1&2;a=a>>>d;b=a>>>1&1;b=(e|i|g|d|b)+(a>>>b)|0;a=9060+(b<<1<<2)|0;d=a+8|0;g=c[d>>2]|0;i=g+8|0;e=c[i>>2]|0;do if((a|0)!=(e|0)){if(e>>>0<(c[2259]|0)>>>0)$();f=e+12|0;if((c[f>>2]|0)==(g|0)){c[f>>2]=a;c[d>>2]=e;j=t;break}else $()}else{j=t&~(1<<b);c[2255]=j}while(0);h=(b<<3)-p|0;c[g+4>>2]=p|3;e=g+p|0;c[e+4>>2]=h|1;c[e+h>>2]=h;if(s|0){f=c[2260]|0;b=s>>>3;d=9060+(b<<1<<2)|0;b=1<<b;if(j&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[2259]|0)>>>0)$();else{k=a;m=b}}else{c[2255]=j|b;k=d;m=d+8|0}c[m>>2]=f;c[k+12>>2]=f;c[f+8>>2]=k;c[f+12>>2]=d}c[2257]=h;c[2260]=e;J=i;l=K;return J|0}k=c[2256]|0;if(k){a=(k&0-k)+-1|0;I=a>>>12&16;a=a>>>I;H=a>>>5&8;a=a>>>H;J=a>>>2&4;a=a>>>J;d=a>>>1&2;a=a>>>d;b=a>>>1&1;b=c[9324+((H|I|J|d|b)+(a>>>b)<<2)>>2]|0;a=(c[b+4>>2]&-8)-p|0;d=c[b+16+(((c[b+16>>2]|0)==0&1)<<2)>>2]|0;if(!d){j=b;h=a}else{do{I=(c[d+4>>2]&-8)-p|0;J=I>>>0<a>>>0;a=J?I:a;b=J?d:b;d=c[d+16+(((c[d+16>>2]|0)==0&1)<<2)>>2]|0}while((d|0)!=0);j=b;h=a}f=c[2259]|0;if(j>>>0<f>>>0)$();i=j+p|0;if(j>>>0>=i>>>0)$();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){n=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0<f>>>0)$();else{c[a>>2]=0;n=b;break}}else{e=c[j+8>>2]|0;if(e>>>0<f>>>0)$();b=e+12|0;if((c[b>>2]|0)!=(j|0))$();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;n=d;break}else $()}while(0);a:do if(g|0){b=c[j+28>>2]|0;a=9324+(b<<2)|0;do if((j|0)==(c[a>>2]|0)){c[a>>2]=n;if(!n){c[2256]=k&~(1<<b);break a}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=n;if(!n)break a;else break}else $();while(0);a=c[2259]|0;if(n>>>0<a>>>0)$();c[n+24>>2]=g;b=c[j+16>>2]|0;do if(b|0)if(b>>>0<a>>>0)$();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);b=c[j+20>>2]|0;if(b|0)if(b>>>0<(c[2259]|0)>>>0)$();else{c[n+20>>2]=b;c[b+24>>2]=n;break}}while(0);if(h>>>0<16){J=h+p|0;c[j+4>>2]=J|3;J=j+J+4|0;c[J>>2]=c[J>>2]|1}else{c[j+4>>2]=p|3;c[i+4>>2]=h|1;c[i+h>>2]=h;if(s|0){e=c[2260]|0;b=s>>>3;d=9060+(b<<1<<2)|0;b=1<<b;if(t&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[2259]|0)>>>0)$();else{q=a;r=b}}else{c[2255]=t|b;q=d;r=d+8|0}c[r>>2]=e;c[q+12>>2]=e;c[e+8>>2]=q;c[e+12>>2]=d}c[2257]=h;c[2260]=i}J=j+8|0;l=K;return J|0}}}else if(a>>>0<=4294967231){a=a+11|0;p=a&-8;k=c[2256]|0;if(k){e=0-p|0;a=a>>>8;if(a)if(p>>>0>16777215)i=31;else{r=(a+1048320|0)>>>16&8;C=a<<r;q=(C+520192|0)>>>16&4;C=C<<q;i=(C+245760|0)>>>16&2;i=14-(q|r|i)+(C<<i>>>15)|0;i=p>>>(i+7|0)&1|i<<1}else i=0;d=c[9324+(i<<2)>>2]|0;b:do if(!d){d=0;a=0;C=81}else{a=0;h=p<<((i|0)==31?0:25-(i>>>1)|0);g=0;while(1){f=(c[d+4>>2]&-8)-p|0;if(f>>>0<e>>>0)if(!f){a=d;e=0;f=d;C=85;break b}else{a=d;e=f}f=c[d+20>>2]|0;d=c[d+16+(h>>>31<<2)>>2]|0;g=(f|0)==0|(f|0)==(d|0)?g:f;f=(d|0)==0;if(f){d=g;C=81;break}else h=h<<((f^1)&1)}}while(0);if((C|0)==81){if((d|0)==0&(a|0)==0){a=2<<i;a=k&(a|0-a);if(!a)break;r=(a&0-a)+-1|0;m=r>>>12&16;r=r>>>m;j=r>>>5&8;r=r>>>j;n=r>>>2&4;r=r>>>n;q=r>>>1&2;r=r>>>q;d=r>>>1&1;a=0;d=c[9324+((j|m|n|q|d)+(r>>>d)<<2)>>2]|0}if(!d){j=a;i=e}else{f=d;C=85}}if((C|0)==85)while(1){C=0;d=(c[f+4>>2]&-8)-p|0;r=d>>>0<e>>>0;d=r?d:e;a=r?f:a;f=c[f+16+(((c[f+16>>2]|0)==0&1)<<2)>>2]|0;if(!f){j=a;i=d;break}else{e=d;C=85}}if((j|0)!=0?i>>>0<((c[2257]|0)-p|0)>>>0:0){f=c[2259]|0;if(j>>>0<f>>>0)$();h=j+p|0;if(j>>>0>=h>>>0)$();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){s=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0<f>>>0)$();else{c[a>>2]=0;s=b;break}}else{e=c[j+8>>2]|0;if(e>>>0<f>>>0)$();b=e+12|0;if((c[b>>2]|0)!=(j|0))$();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;s=d;break}else $()}while(0);c:do if(g){b=c[j+28>>2]|0;a=9324+(b<<2)|0;do if((j|0)==(c[a>>2]|0)){c[a>>2]=s;if(!s){t=k&~(1<<b);c[2256]=t;break c}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=s;if(!s){t=k;break c}else break}else $();while(0);a=c[2259]|0;if(s>>>0<a>>>0)$();c[s+24>>2]=g;b=c[j+16>>2]|0;do if(b|0)if(b>>>0<a>>>0)$();else{c[s+16>>2]=b;c[b+24>>2]=s;break}while(0);b=c[j+20>>2]|0;if(b)if(b>>>0<(c[2259]|0)>>>0)$();else{c[s+20>>2]=b;c[b+24>>2]=s;t=k;break}else t=k}else t=k;while(0);do if(i>>>0>=16){c[j+4>>2]=p|3;c[h+4>>2]=i|1;c[h+i>>2]=i;b=i>>>3;if(i>>>0<256){d=9060+(b<<1<<2)|0;a=c[2255]|0;b=1<<b;if(a&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[2259]|0)>>>0)$();else{x=a;y=b}}else{c[2255]=a|b;x=d;y=d+8|0}c[y>>2]=h;c[x+12>>2]=h;c[h+8>>2]=x;c[h+12>>2]=d;break}b=i>>>8;if(b)if(i>>>0>16777215)b=31;else{I=(b+1048320|0)>>>16&8;J=b<<I;H=(J+520192|0)>>>16&4;J=J<<H;b=(J+245760|0)>>>16&2;b=14-(H|I|b)+(J<<b>>>15)|0;b=i>>>(b+7|0)&1|b<<1}else b=0;d=9324+(b<<2)|0;c[h+28>>2]=b;a=h+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<<b;if(!(t&a)){c[2256]=t|a;c[d>>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}a=i<<((b|0)==31?0:25-(b>>>1)|0);e=c[d>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(i|0)){C=139;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=136;break}else{a=a<<1;e=b}}if((C|0)==136)if(d>>>0<(c[2259]|0)>>>0)$();else{c[d>>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;break}else if((C|0)==139){b=e+8|0;a=c[b>>2]|0;J=c[2259]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=h;c[b>>2]=h;c[h+8>>2]=a;c[h+12>>2]=e;c[h+24>>2]=0;break}else $()}}else{J=i+p|0;c[j+4>>2]=J|3;J=j+J+4|0;c[J>>2]=c[J>>2]|1}while(0);J=j+8|0;l=K;return J|0}}}else p=-1;while(0);d=c[2257]|0;if(d>>>0>=p>>>0){b=d-p|0;a=c[2260]|0;if(b>>>0>15){J=a+p|0;c[2260]=J;c[2257]=b;c[J+4>>2]=b|1;c[J+b>>2]=b;c[a+4>>2]=p|3}else{c[2257]=0;c[2260]=0;c[a+4>>2]=d|3;J=a+d+4|0;c[J>>2]=c[J>>2]|1}J=a+8|0;l=K;return J|0}h=c[2258]|0;if(h>>>0>p>>>0){H=h-p|0;c[2258]=H;J=c[2261]|0;I=J+p|0;c[2261]=I;c[I+4>>2]=H|1;c[J+4>>2]=p|3;J=J+8|0;l=K;return J|0}if(!(c[2373]|0)){c[2375]=4096;c[2374]=4096;c[2376]=-1;c[2377]=-1;c[2378]=0;c[2366]=0;a=o&-16^1431655768;c[o>>2]=a;c[2373]=a;a=4096}else a=c[2375]|0;i=p+48|0;j=p+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=p>>>0){J=0;l=K;return J|0}a=c[2365]|0;if(a|0?(x=c[2363]|0,y=x+k|0,y>>>0<=x>>>0|y>>>0>a>>>0):0){J=0;l=K;return J|0}d:do if(!(c[2366]&4)){d=c[2261]|0;e:do if(d){e=9468;while(1){a=c[e>>2]|0;if(a>>>0<=d>>>0?(w=e+4|0,(a+(c[w>>2]|0)|0)>>>0>d>>>0):0)break;a=c[e+8>>2]|0;if(!a){C=163;break e}else e=a}b=g-h&f;if(b>>>0<2147483647){a=sb(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[w>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;C=180;break d}}else{e=a;C=171}}else b=0}else C=163;while(0);do if((C|0)==163){d=sb(0)|0;if((d|0)!=(-1|0)?(b=d,u=c[2374]|0,v=u+-1|0,b=((v&b|0)==0?0:(v+b&0-u)-b|0)+k|0,u=c[2363]|0,v=b+u|0,b>>>0>p>>>0&b>>>0<2147483647):0){y=c[2365]|0;if(y|0?v>>>0<=u>>>0|v>>>0>y>>>0:0){b=0;break}a=sb(b|0)|0;if((a|0)==(d|0)){h=b;g=d;C=180;break d}else{e=a;C=171}}else b=0}while(0);do if((C|0)==171){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;C=180;break d}a=c[2375]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;C=180;break d}if((sb(a|0)|0)==(-1|0)){sb(d|0)|0;b=0;break}else{h=a+b|0;g=e;C=180;break d}}while(0);c[2366]=c[2366]|4;C=178}else{b=0;C=178}while(0);if(((C|0)==178?k>>>0<2147483647:0)?(B=sb(k|0)|0,y=sb(0)|0,z=y-B|0,A=z>>>0>(p+40|0)>>>0,!((B|0)==(-1|0)|A^1|B>>>0<y>>>0&((B|0)!=(-1|0)&(y|0)!=(-1|0))^1)):0){h=A?z:b;g=B;C=180}if((C|0)==180){b=(c[2363]|0)+h|0;c[2363]=b;if(b>>>0>(c[2364]|0)>>>0)c[2364]=b;k=c[2261]|0;do if(k){b=9468;while(1){a=c[b>>2]|0;d=b+4|0;e=c[d>>2]|0;if((g|0)==(a+e|0)){C=190;break}f=c[b+8>>2]|0;if(!f)break;else b=f}if(((C|0)==190?(c[b+12>>2]&8|0)==0:0)?k>>>0<g>>>0&k>>>0>=a>>>0:0){c[d>>2]=e+h;J=k+8|0;J=(J&7|0)==0?0:0-J&7;I=k+J|0;J=(c[2258]|0)+(h-J)|0;c[2261]=I;c[2258]=J;c[I+4>>2]=J|1;c[I+J+4>>2]=40;c[2262]=c[2377];break}b=c[2259]|0;if(g>>>0<b>>>0){c[2259]=g;i=g}else i=b;d=g+h|0;b=9468;while(1){if((c[b>>2]|0)==(d|0)){C=198;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((C|0)==198?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;n=b+4|0;c[n>>2]=(c[n>>2]|0)+h;n=g+8|0;n=g+((n&7|0)==0?0:0-n&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;m=n+p|0;j=b-n-p|0;c[n+4>>2]=p|3;do if((b|0)!=(k|0)){if((b|0)==(c[2260]|0)){J=(c[2257]|0)+j|0;c[2257]=J;c[2260]=m;c[m+4>>2]=J|1;c[m+J>>2]=J;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;f=a>>>3;f:do if(a>>>0>=256){g=c[b+24>>2]|0;e=c[b+12>>2]|0;do if((e|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){H=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}if(d>>>0<i>>>0)$();else{c[d>>2]=0;H=a;break}}else{f=c[b+8>>2]|0;if(f>>>0<i>>>0)$();a=f+12|0;if((c[a>>2]|0)!=(b|0))$();d=e+8|0;if((c[d>>2]|0)==(b|0)){c[a>>2]=e;c[d>>2]=f;H=e;break}else $()}while(0);if(!g)break;a=c[b+28>>2]|0;d=9324+(a<<2)|0;do if((b|0)!=(c[d>>2]|0))if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=H;if(!H)break f;else break}else $();else{c[d>>2]=H;if(H|0)break;c[2256]=c[2256]&~(1<<a);break f}while(0);e=c[2259]|0;if(H>>>0<e>>>0)$();c[H+24>>2]=g;a=b+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0<e>>>0)$();else{c[H+16>>2]=d;c[d+24>>2]=H;break}while(0);a=c[a+4>>2]|0;if(!a)break;if(a>>>0<(c[2259]|0)>>>0)$();else{c[H+20>>2]=a;c[a+24>>2]=H;break}}else{d=c[b+8>>2]|0;e=c[b+12>>2]|0;a=9060+(f<<1<<2)|0;do if((d|0)!=(a|0)){if(d>>>0<i>>>0)$();if((c[d+12>>2]|0)==(b|0))break;$()}while(0);if((e|0)==(d|0)){c[2255]=c[2255]&~(1<<f);break}do if((e|0)==(a|0))E=e+8|0;else{if(e>>>0<i>>>0)$();a=e+8|0;if((c[a>>2]|0)==(b|0)){E=a;break}$()}while(0);c[d+12>>2]=e;c[E>>2]=d}while(0);b=b+h|0;f=h+j|0}else f=j;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[m+4>>2]=f|1;c[m+f>>2]=f;b=f>>>3;if(f>>>0<256){d=9060+(b<<1<<2)|0;a=c[2255]|0;b=1<<b;do if(!(a&b)){c[2255]=a|b;I=d;J=d+8|0}else{b=d+8|0;a=c[b>>2]|0;if(a>>>0>=(c[2259]|0)>>>0){I=a;J=b;break}$()}while(0);c[J>>2]=m;c[I+12>>2]=m;c[m+8>>2]=I;c[m+12>>2]=d;break}b=f>>>8;do if(!b)b=0;else{if(f>>>0>16777215){b=31;break}I=(b+1048320|0)>>>16&8;J=b<<I;H=(J+520192|0)>>>16&4;J=J<<H;b=(J+245760|0)>>>16&2;b=14-(H|I|b)+(J<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}while(0);e=9324+(b<<2)|0;c[m+28>>2]=b;a=m+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[2256]|0;d=1<<b;if(!(a&d)){c[2256]=a|d;c[e>>2]=m;c[m+24>>2]=e;c[m+12>>2]=m;c[m+8>>2]=m;break}a=f<<((b|0)==31?0:25-(b>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(f|0)){C=265;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=262;break}else{a=a<<1;e=b}}if((C|0)==262)if(d>>>0<(c[2259]|0)>>>0)$();else{c[d>>2]=m;c[m+24>>2]=e;c[m+12>>2]=m;c[m+8>>2]=m;break}else if((C|0)==265){b=e+8|0;a=c[b>>2]|0;J=c[2259]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=m;c[b>>2]=m;c[m+8>>2]=a;c[m+12>>2]=e;c[m+24>>2]=0;break}else $()}}else{J=(c[2258]|0)+j|0;c[2258]=J;c[2261]=m;c[m+4>>2]=J|1}while(0);J=n+8|0;l=K;return J|0}b=9468;while(1){a=c[b>>2]|0;if(a>>>0<=k>>>0?(D=a+(c[b+4>>2]|0)|0,D>>>0>k>>>0):0)break;b=c[b+8>>2]|0}f=D+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=k+16|0;a=a>>>0<f>>>0?k:a;b=a+8|0;d=g+8|0;d=(d&7|0)==0?0:0-d&7;J=g+d|0;d=h+-40-d|0;c[2261]=J;c[2258]=d;c[J+4>>2]=d|1;c[J+d+4>>2]=40;c[2262]=c[2377];d=a+4|0;c[d>>2]=27;c[b>>2]=c[2367];c[b+4>>2]=c[2368];c[b+8>>2]=c[2369];c[b+12>>2]=c[2370];c[2367]=g;c[2368]=h;c[2370]=0;c[2369]=b;b=a+24|0;do{J=b;b=b+4|0;c[b>>2]=7}while((J+8|0)>>>0<D>>>0);if((a|0)!=(k|0)){g=a-k|0;c[d>>2]=c[d>>2]&-2;c[k+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=9060+(b<<1<<2)|0;a=c[2255]|0;b=1<<b;if(a&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[2259]|0)>>>0)$();else{F=a;G=b}}else{c[2255]=a|b;F=d;G=d+8|0}c[G>>2]=k;c[F+12>>2]=k;c[k+8>>2]=F;c[k+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{I=(b+1048320|0)>>>16&8;J=b<<I;H=(J+520192|0)>>>16&4;J=J<<H;d=(J+245760|0)>>>16&2;d=14-(H|I|d)+(J<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=9324+(d<<2)|0;c[k+28>>2]=d;c[k+20>>2]=0;c[f>>2]=0;b=c[2256]|0;a=1<<d;if(!(b&a)){c[2256]=b|a;c[e>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(g|0)){C=292;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=289;break}else{a=a<<1;e=b}}if((C|0)==289)if(d>>>0<(c[2259]|0)>>>0)$();else{c[d>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((C|0)==292){b=e+8|0;a=c[b>>2]|0;J=c[2259]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=k;c[b>>2]=k;c[k+8>>2]=a;c[k+12>>2]=e;c[k+24>>2]=0;break}else $()}}}else{J=c[2259]|0;if((J|0)==0|g>>>0<J>>>0)c[2259]=g;c[2367]=g;c[2368]=h;c[2370]=0;c[2264]=c[2373];c[2263]=-1;b=0;do{J=9060+(b<<1<<2)|0;c[J+12>>2]=J;c[J+8>>2]=J;b=b+1|0}while((b|0)!=32);J=g+8|0;J=(J&7|0)==0?0:0-J&7;I=g+J|0;J=h+-40-J|0;c[2261]=I;c[2258]=J;c[I+4>>2]=J|1;c[I+J+4>>2]=40;c[2262]=c[2377]}while(0);b=c[2258]|0;if(b>>>0>p>>>0){H=b-p|0;c[2258]=H;J=c[2261]|0;I=J+p|0;c[2261]=I;c[I+4>>2]=H|1;c[J+4>>2]=p|3;J=J+8|0;l=K;return J|0}}c[(Wa()|0)>>2]=12;J=0;l=K;return J|0}function hb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!a)return;d=a+-8|0;h=c[2259]|0;if(d>>>0<h>>>0)$();a=c[a+-4>>2]|0;b=a&3;if((b|0)==1)$();e=a&-8;o=d+e|0;a:do if(!(a&1)){a=c[d>>2]|0;if(!b)return;k=d+(0-a)|0;j=a+e|0;if(k>>>0<h>>>0)$();if((k|0)==(c[2260]|0)){a=o+4|0;b=c[a>>2]|0;if((b&3|0)!=3){r=k;f=j;m=k;break}c[2257]=j;c[a>>2]=b&-2;c[k+4>>2]=j|1;c[k+j>>2]=j;return}e=a>>>3;if(a>>>0<256){b=c[k+8>>2]|0;d=c[k+12>>2]|0;a=9060+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<h>>>0)$();if((c[b+12>>2]|0)!=(k|0))$()}if((d|0)==(b|0)){c[2255]=c[2255]&~(1<<e);r=k;f=j;m=k;break}if((d|0)!=(a|0)){if(d>>>0<h>>>0)$();a=d+8|0;if((c[a>>2]|0)==(k|0))g=a;else $()}else g=d+8|0;c[b+12>>2]=d;c[g>>2]=b;r=k;f=j;m=k;break}g=c[k+24>>2]|0;d=c[k+12>>2]|0;do if((d|0)==(k|0)){d=k+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){i=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<h>>>0)$();else{c[b>>2]=0;i=a;break}}else{e=c[k+8>>2]|0;if(e>>>0<h>>>0)$();a=e+12|0;if((c[a>>2]|0)!=(k|0))$();b=d+8|0;if((c[b>>2]|0)==(k|0)){c[a>>2]=d;c[b>>2]=e;i=d;break}else $()}while(0);if(g){a=c[k+28>>2]|0;b=9324+(a<<2)|0;do if((k|0)==(c[b>>2]|0)){c[b>>2]=i;if(!i){c[2256]=c[2256]&~(1<<a);r=k;f=j;m=k;break a}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(k|0)&1)<<2)>>2]=i;if(!i){r=k;f=j;m=k;break a}else break}else $();while(0);d=c[2259]|0;if(i>>>0<d>>>0)$();c[i+24>>2]=g;a=k+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0<d>>>0)$();else{c[i+16>>2]=b;c[b+24>>2]=i;break}while(0);a=c[a+4>>2]|0;if(a)if(a>>>0<(c[2259]|0)>>>0)$();else{c[i+20>>2]=a;c[a+24>>2]=i;r=k;f=j;m=k;break}else{r=k;f=j;m=k}}else{r=k;f=j;m=k}}else{r=d;f=e;m=d}while(0);if(m>>>0>=o>>>0)$();a=o+4|0;b=c[a>>2]|0;if(!(b&1))$();if(!(b&2)){a=c[2260]|0;if((o|0)==(c[2261]|0)){q=(c[2258]|0)+f|0;c[2258]=q;c[2261]=r;c[r+4>>2]=q|1;if((r|0)!=(a|0))return;c[2260]=0;c[2257]=0;return}if((o|0)==(a|0)){q=(c[2257]|0)+f|0;c[2257]=q;c[2260]=m;c[r+4>>2]=q|1;c[m+q>>2]=q;return}f=(b&-8)+f|0;e=b>>>3;b:do if(b>>>0>=256){g=c[o+24>>2]|0;a=c[o+12>>2]|0;do if((a|0)==(o|0)){d=o+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){n=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<(c[2259]|0)>>>0)$();else{c[b>>2]=0;n=a;break}}else{b=c[o+8>>2]|0;if(b>>>0<(c[2259]|0)>>>0)$();d=b+12|0;if((c[d>>2]|0)!=(o|0))$();e=a+8|0;if((c[e>>2]|0)==(o|0)){c[d>>2]=a;c[e>>2]=b;n=a;break}else $()}while(0);if(g|0){a=c[o+28>>2]|0;b=9324+(a<<2)|0;do if((o|0)==(c[b>>2]|0)){c[b>>2]=n;if(!n){c[2256]=c[2256]&~(1<<a);break b}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(!n)break b;else break}else $();while(0);d=c[2259]|0;if(n>>>0<d>>>0)$();c[n+24>>2]=g;a=o+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0<d>>>0)$();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);a=c[a+4>>2]|0;if(a|0)if(a>>>0<(c[2259]|0)>>>0)$();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}}else{b=c[o+8>>2]|0;d=c[o+12>>2]|0;a=9060+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(c[2259]|0)>>>0)$();if((c[b+12>>2]|0)!=(o|0))$()}if((d|0)==(b|0)){c[2255]=c[2255]&~(1<<e);break}if((d|0)!=(a|0)){if(d>>>0<(c[2259]|0)>>>0)$();a=d+8|0;if((c[a>>2]|0)==(o|0))l=a;else $()}else l=d+8|0;c[b+12>>2]=d;c[l>>2]=b}while(0);c[r+4>>2]=f|1;c[m+f>>2]=f;if((r|0)==(c[2260]|0)){c[2257]=f;return}}else{c[a>>2]=b&-2;c[r+4>>2]=f|1;c[m+f>>2]=f}a=f>>>3;if(f>>>0<256){d=9060+(a<<1<<2)|0;b=c[2255]|0;a=1<<a;if(b&a){a=d+8|0;b=c[a>>2]|0;if(b>>>0<(c[2259]|0)>>>0)$();else{p=b;q=a}}else{c[2255]=b|a;p=d;q=d+8|0}c[q>>2]=r;c[p+12>>2]=r;c[r+8>>2]=p;c[r+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<<p;o=(q+520192|0)>>>16&4;q=q<<o;a=(q+245760|0)>>>16&2;a=14-(o|p|a)+(q<<a>>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=9324+(a<<2)|0;c[r+28>>2]=a;c[r+20>>2]=0;c[r+16>>2]=0;b=c[2256]|0;d=1<<a;do if(b&d){b=f<<((a|0)==31?0:25-(a>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(f|0)){a=124;break}d=e+16+(b>>>31<<2)|0;a=c[d>>2]|0;if(!a){a=121;break}else{b=b<<1;e=a}}if((a|0)==121)if(d>>>0<(c[2259]|0)>>>0)$();else{c[d>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r;break}else if((a|0)==124){a=e+8|0;b=c[a>>2]|0;q=c[2259]|0;if(b>>>0>=q>>>0&e>>>0>=q>>>0){c[b+12>>2]=r;c[a>>2]=r;c[r+8>>2]=b;c[r+12>>2]=e;c[r+24>>2]=0;break}else $()}}else{c[2256]=b|d;c[e>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r}while(0);r=(c[2263]|0)+-1|0;c[2263]=r;if(!r)a=9476;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[2263]=-1;return}function ib(a,b){a=a|0;b=b|0;var d=0;if(a){d=N(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=gb(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;ob(a|0,0,d|0)|0;return a|0}function jb(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=gb(b)|0;return b|0}if(b>>>0>4294967231){c[(Wa()|0)>>2]=12;b=0;return b|0}d=kb(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=gb(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;tb(d|0,a|0,(e>>>0<b>>>0?e:b)|0)|0;hb(a);b=d;return b|0}function kb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=a+4|0;n=c[o>>2]|0;d=n&-8;k=a+d|0;i=c[2259]|0;e=n&3;if(!((e|0)!=1&a>>>0>=i>>>0&a>>>0<k>>>0))$();f=c[k+4>>2]|0;if(!(f&1))$();if(!e){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[2375]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;m=a+b|0;c[o>>2]=n&1|b|2;c[m+4>>2]=d|3;o=m+d+4|0;c[o>>2]=c[o>>2]|1;lb(m,d);return a|0}if((k|0)==(c[2261]|0)){m=(c[2258]|0)+d|0;d=m-b|0;e=a+b|0;if(m>>>0<=b>>>0){a=0;return a|0}c[o>>2]=n&1|b|2;c[e+4>>2]=d|1;c[2261]=e;c[2258]=d;return a|0}if((k|0)==(c[2260]|0)){f=(c[2257]|0)+d|0;if(f>>>0<b>>>0){a=0;return a|0}d=f-b|0;e=n&1;if(d>>>0>15){n=a+b|0;m=n+d|0;c[o>>2]=e|b|2;c[n+4>>2]=d|1;c[m>>2]=d;e=m+4|0;c[e>>2]=c[e>>2]&-2;e=n}else{c[o>>2]=e|f|2;e=a+f+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[2257]=d;c[2260]=e;return a|0}if(f&2|0){a=0;return a|0}l=(f&-8)+d|0;if(l>>>0<b>>>0){a=0;return a|0}m=l-b|0;g=f>>>3;a:do if(f>>>0>=256){h=c[k+24>>2]|0;f=c[k+12>>2]|0;do if((f|0)==(k|0)){f=k+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){j=0;break}else e=f}while(1){f=d+20|0;g=c[f>>2]|0;if(g|0){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0<i>>>0)$();else{c[e>>2]=0;j=d;break}}else{g=c[k+8>>2]|0;if(g>>>0<i>>>0)$();d=g+12|0;if((c[d>>2]|0)!=(k|0))$();e=f+8|0;if((c[e>>2]|0)==(k|0)){c[d>>2]=f;c[e>>2]=g;j=f;break}else $()}while(0);if(h|0){d=c[k+28>>2]|0;e=9324+(d<<2)|0;do if((k|0)==(c[e>>2]|0)){c[e>>2]=j;if(!j){c[2256]=c[2256]&~(1<<d);break a}}else if(h>>>0>=(c[2259]|0)>>>0){c[h+16+(((c[h+16>>2]|0)!=(k|0)&1)<<2)>>2]=j;if(!j)break a;else break}else $();while(0);f=c[2259]|0;if(j>>>0<f>>>0)$();c[j+24>>2]=h;d=k+16|0;e=c[d>>2]|0;do if(e|0)if(e>>>0<f>>>0)$();else{c[j+16>>2]=e;c[e+24>>2]=j;break}while(0);d=c[d+4>>2]|0;if(d|0)if(d>>>0<(c[2259]|0)>>>0)$();else{c[j+20>>2]=d;c[d+24>>2]=j;break}}}else{e=c[k+8>>2]|0;f=c[k+12>>2]|0;d=9060+(g<<1<<2)|0;if((e|0)!=(d|0)){if(e>>>0<i>>>0)$();if((c[e+12>>2]|0)!=(k|0))$()}if((f|0)==(e|0)){c[2255]=c[2255]&~(1<<g);break}if((f|0)!=(d|0)){if(f>>>0<i>>>0)$();d=f+8|0;if((c[d>>2]|0)==(k|0))h=d;else $()}else h=f+8|0;c[e+12>>2]=f;c[h>>2]=e}while(0);d=n&1;if(m>>>0<16){c[o>>2]=l|d|2;o=a+l+4|0;c[o>>2]=c[o>>2]|1;return a|0}else{n=a+b|0;c[o>>2]=d|b|2;c[n+4>>2]=m|3;o=n+m+4|0;c[o>>2]=c[o>>2]|1;lb(n,m);return a|0}return 0}function lb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=a+b|0;d=c[a+4>>2]|0;a:do if(!(d&1)){g=c[a>>2]|0;if(!(d&3))return;l=a+(0-g)|0;k=g+b|0;i=c[2259]|0;if(l>>>0<i>>>0)$();if((l|0)==(c[2260]|0)){a=o+4|0;d=c[a>>2]|0;if((d&3|0)!=3){r=l;f=k;break}c[2257]=k;c[a>>2]=d&-2;c[l+4>>2]=k|1;c[l+k>>2]=k;return}e=g>>>3;if(g>>>0<256){d=c[l+8>>2]|0;b=c[l+12>>2]|0;a=9060+(e<<1<<2)|0;if((d|0)!=(a|0)){if(d>>>0<i>>>0)$();if((c[d+12>>2]|0)!=(l|0))$()}if((b|0)==(d|0)){c[2255]=c[2255]&~(1<<e);r=l;f=k;break}if((b|0)!=(a|0)){if(b>>>0<i>>>0)$();a=b+8|0;if((c[a>>2]|0)==(l|0))h=a;else $()}else h=b+8|0;c[d+12>>2]=b;c[h>>2]=d;r=l;f=k;break}g=c[l+24>>2]|0;b=c[l+12>>2]|0;do if((b|0)==(l|0)){b=l+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){j=0;break}else d=b}while(1){b=a+20|0;e=c[b>>2]|0;if(e|0){a=e;d=b;continue}b=a+16|0;e=c[b>>2]|0;if(!e)break;else{a=e;d=b}}if(d>>>0<i>>>0)$();else{c[d>>2]=0;j=a;break}}else{e=c[l+8>>2]|0;if(e>>>0<i>>>0)$();a=e+12|0;if((c[a>>2]|0)!=(l|0))$();d=b+8|0;if((c[d>>2]|0)==(l|0)){c[a>>2]=b;c[d>>2]=e;j=b;break}else $()}while(0);if(g){a=c[l+28>>2]|0;d=9324+(a<<2)|0;do if((l|0)==(c[d>>2]|0)){c[d>>2]=j;if(!j){c[2256]=c[2256]&~(1<<a);r=l;f=k;break a}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(l|0)&1)<<2)>>2]=j;if(!j){r=l;f=k;break a}else break}else $();while(0);b=c[2259]|0;if(j>>>0<b>>>0)$();c[j+24>>2]=g;a=l+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0<b>>>0)$();else{c[j+16>>2]=d;c[d+24>>2]=j;break}while(0);a=c[a+4>>2]|0;if(a)if(a>>>0<(c[2259]|0)>>>0)$();else{c[j+20>>2]=a;c[a+24>>2]=j;r=l;f=k;break}else{r=l;f=k}}else{r=l;f=k}}else{r=a;f=b}while(0);h=c[2259]|0;if(o>>>0<h>>>0)$();a=o+4|0;d=c[a>>2]|0;if(!(d&2)){a=c[2260]|0;if((o|0)==(c[2261]|0)){q=(c[2258]|0)+f|0;c[2258]=q;c[2261]=r;c[r+4>>2]=q|1;if((r|0)!=(a|0))return;c[2260]=0;c[2257]=0;return}if((o|0)==(a|0)){q=(c[2257]|0)+f|0;c[2257]=q;c[2260]=r;c[r+4>>2]=q|1;c[r+q>>2]=q;return}f=(d&-8)+f|0;e=d>>>3;b:do if(d>>>0>=256){g=c[o+24>>2]|0;b=c[o+12>>2]|0;do if((b|0)==(o|0)){b=o+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){n=0;break}else d=b}while(1){b=a+20|0;e=c[b>>2]|0;if(e|0){a=e;d=b;continue}b=a+16|0;e=c[b>>2]|0;if(!e)break;else{a=e;d=b}}if(d>>>0<h>>>0)$();else{c[d>>2]=0;n=a;break}}else{e=c[o+8>>2]|0;if(e>>>0<h>>>0)$();a=e+12|0;if((c[a>>2]|0)!=(o|0))$();d=b+8|0;if((c[d>>2]|0)==(o|0)){c[a>>2]=b;c[d>>2]=e;n=b;break}else $()}while(0);if(g|0){a=c[o+28>>2]|0;d=9324+(a<<2)|0;do if((o|0)==(c[d>>2]|0)){c[d>>2]=n;if(!n){c[2256]=c[2256]&~(1<<a);break b}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(!n)break b;else break}else $();while(0);b=c[2259]|0;if(n>>>0<b>>>0)$();c[n+24>>2]=g;a=o+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0<b>>>0)$();else{c[n+16>>2]=d;c[d+24>>2]=n;break}while(0);a=c[a+4>>2]|0;if(a|0)if(a>>>0<(c[2259]|0)>>>0)$();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}}else{d=c[o+8>>2]|0;b=c[o+12>>2]|0;a=9060+(e<<1<<2)|0;if((d|0)!=(a|0)){if(d>>>0<h>>>0)$();if((c[d+12>>2]|0)!=(o|0))$()}if((b|0)==(d|0)){c[2255]=c[2255]&~(1<<e);break}if((b|0)!=(a|0)){if(b>>>0<h>>>0)$();a=b+8|0;if((c[a>>2]|0)==(o|0))m=a;else $()}else m=b+8|0;c[d+12>>2]=b;c[m>>2]=d}while(0);c[r+4>>2]=f|1;c[r+f>>2]=f;if((r|0)==(c[2260]|0)){c[2257]=f;return}}else{c[a>>2]=d&-2;c[r+4>>2]=f|1;c[r+f>>2]=f}a=f>>>3;if(f>>>0<256){b=9060+(a<<1<<2)|0;d=c[2255]|0;a=1<<a;if(d&a){a=b+8|0;d=c[a>>2]|0;if(d>>>0<(c[2259]|0)>>>0)$();else{p=d;q=a}}else{c[2255]=d|a;p=b;q=b+8|0}c[q>>2]=r;c[p+12>>2]=r;c[r+8>>2]=p;c[r+12>>2]=b;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<<p;o=(q+520192|0)>>>16&4;q=q<<o;a=(q+245760|0)>>>16&2;a=14-(o|p|a)+(q<<a>>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=9324+(a<<2)|0;c[r+28>>2]=a;c[r+20>>2]=0;c[r+16>>2]=0;d=c[2256]|0;b=1<<a;if(!(d&b)){c[2256]=d|b;c[e>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r;return}d=f<<((a|0)==31?0:25-(a>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(f|0)){a=121;break}b=e+16+(d>>>31<<2)|0;a=c[b>>2]|0;if(!a){a=118;break}else{d=d<<1;e=a}}if((a|0)==118){if(b>>>0<(c[2259]|0)>>>0)$();c[b>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r;return}else if((a|0)==121){a=e+8|0;d=c[a>>2]|0;q=c[2259]|0;if(!(d>>>0>=q>>>0&e>>>0>=q>>>0))$();c[d+12>>2]=r;c[a>>2]=r;c[r+8>>2]=d;c[r+12>>2]=e;c[r+24>>2]=0;return}}function mb(){}function nb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (y=b+d+(c>>>0<a>>>0|0)>>>0,c|0)|0}function ob(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;g=f-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function pb(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){y=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}y=0;return b>>>c-32|0}function qb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=N(e,f)|0;d=a>>>16;a=(c>>>16)+(N(e,d)|0)|0;e=b>>>16;b=N(e,f)|0;return (y=(a>>>16)+(N(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function rb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=qb(e,f)|0;a=y;return (y=(N(b,f)|0)+(N(d,e)|0)+a|a&0,c|0|0)|0}function sb(a){a=a|0;var b=0,d=0;d=a+15&-16|0;b=c[i>>2]|0;a=b+d|0;if((d|0)>0&(a|0)<(b|0)|(a|0)<0){V()|0;aa(12);return -1}c[i>>2]=a;if((a|0)>(U()|0)?(T()|0)==0:0){c[i>>2]=b;aa(12);return -1}return b|0}function tb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return da(b|0,d|0,e|0)|0;h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function ub(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function vb(a,b){a=a|0;b=b|0;return ia[a&1](b|0)|0}function wb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ja[a&3](b|0,c|0,d|0)|0}function xb(a){a=a|0;R(0);return 0}function yb(a,b,c){a=a|0;b=b|0;c=c|0;R(1);return 0}
+-
+-// EMSCRIPTEN_END_FUNCS
+-var ia=[xb,Sa];var ja=[yb,_a,Ua,Ta];return{_llvm_bswap_i32:ub,_shine_check_config:Ha,_shine_flush:La,setThrew:oa,_bitshift64Lshr:pb,_shine_samples_per_pass:Ia,_fflush:eb,_shine_js_init:Qa,_memset:ob,_sbrk:sb,_memcpy:tb,___errno_location:Wa,_shine_encode_buffer:Ka,_shine_close:Ma,stackAlloc:ka,getTempRet0:qa,___muldi3:rb,setTempRet0:pa,_i64Add:nb,_emscripten_get_global_libc:Ra,stackSave:la,___muldsi3:qb,_free:hb,runPostSets:mb,establishStackSpace:na,stackRestore:ma,_malloc:gb,stackAlloc:ka,stackSave:la,stackRestore:ma,establishStackSpace:na,setThrew:oa,setTempRet0:pa,getTempRet0:qa,dynCall_ii:vb,dynCall_iiii:wb}})
+-
+-
+-// EMSCRIPTEN_END_ASM
+-(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _shine_check_config=Module["_shine_check_config"]=asm["_shine_check_config"];var _shine_flush=Module["_shine_flush"]=asm["_shine_flush"];var setThrew=Module["setThrew"]=asm["setThrew"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _shine_samples_per_pass=Module["_shine_samples_per_pass"]=asm["_shine_samples_per_pass"];var _fflush=Module["_fflush"]=asm["_fflush"];var _shine_js_init=Module["_shine_js_init"]=asm["_shine_js_init"];var _memset=Module["_memset"]=asm["_memset"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var _shine_encode_buffer=Module["_shine_encode_buffer"]=asm["_shine_encode_buffer"];var _shine_close=Module["_shine_close"]=asm["_shine_close"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=asm["_emscripten_get_global_libc"];var stackSave=Module["stackSave"]=asm["stackSave"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var _malloc=Module["_malloc"]=asm["_malloc"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i<argc-1;i=i+1){argv.push(allocate(intArrayFromString(args[i]),"i8",ALLOC_NORMAL));pad()}argv.push(0);argv=allocate(argv,"i32",ALLOC_NORMAL);try{var ret=Module["_main"](argc,argv,0);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="SimulateInfiniteLoop"){Module["noExitRuntime"]=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}Module.printErr("exception thrown: "+toLog);Module["quit"](1,e)}}finally{calledMain=true}};function run(args){args=args||Module["arguments"];if(preloadStartTime===null)preloadStartTime=Date.now();if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();var isNode=typeof process==="object"&&typeof require==="function";var int16Len=Module.HEAP16.BYTES_PER_ELEMENT;var ptrLen=Module.HEAP32.BYTES_PER_ELEMENT;function Shine(args){if(_shine_check_config(args.samplerate,args.bitrate)<0)throw"Invalid configuration";var mode;if(!args.mode){if(args.channels===1){mode=Shine.MONO}else{mode=Shine.JOINT_STEREO}}else{mode=args.mode}this._handle=_shine_js_init(args.channels,args.samplerate,mode,args.bitrate);this._channels=args.channels;this._samples_per_pass=_shine_samples_per_pass(this._handle);this._buffer=_malloc(this._channels*ptrLen);this._pcm=new Array(this._channels);this._rem=new Array(this._channels);this._written=_malloc(int16Len);var _tmp,chan;for(chan=0;chan<this._channels;chan++){this._rem[chan]=new Int16Array;_tmp=_malloc(this._samples_per_pass*int16Len);setValue(this._buffer+chan*ptrLen,_tmp,"*");this._pcm[chan]=Module.HEAP16.subarray(_tmp/int16Len,_tmp/int16Len+this._samples_per_pass)}return this}Shine.STEREO=0;Shine.JOINT_STEREO=1;Shine.DUAL_CHANNEL=2;Shine.MONO=3;Shine.prototype._encodePass=(function(data){if(!this._handle)throw"Closed";var chan;for(chan=0;chan<this._channels;chan++)this._pcm[chan].set(data[chan]);var _buf=_shine_encode_buffer(this._handle,this._buffer,this._written);var written=getValue(this._written,"i16");return Module.HEAPU8.subarray(_buf,_buf+written)});function concat(ctr,a,b){if(typeof b==="undefined"){return a}var ret=new ctr(a.length+b.length);ret.set(a);ret.subarray(a.length).set(b);return ret}function clip(x){return x>1?1:x<-1?-1:x}function convertFloat32(buf){var ret=new Array(buf.length);var samples=buf[0].length;var chan,i;for(chan=0;chan<buf.length;chan++){ret[chan]=new Int16Array(samples);for(i=0;i<samples;i++){ret[chan][i]=parseInt(clip(buf[chan][i])*32767)}}return ret}Shine.prototype.encode=(function(data){if(data.length!=this._channels)throw"Invalid data";var encoded=new Uint8Array;var tmp=new Array(this._channels);if(data[0]instanceof Float32Array){data=convertFloat32(data)}var chan;for(chan=0;chan<this._channels;chan++){tmp[chan]=new Float32Array;this._rem[chan]=concat(Int16Array,this._rem[chan],data[chan])}var i,enc;for(i=0;i<this._rem[0].length;i+=this._samples_per_pass){for(chan=0;chan<this._channels;chan++){tmp[chan]=this._rem[chan].subarray(i,i+this._samples_per_pass)}if(tmp[0].length<this._samples_per_pass){break}else{enc=this._encodePass(tmp);if(enc.length>0){encoded=concat(Uint8Array,encoded,enc)}}}if(tmp[0].length<this._samples_per_pass){this._rem=tmp}else{for(chan=0;chan<this._channels;chan++){this._rem[chan]=new Int16Array}}return encoded});Shine.prototype.close=(function(){if(!this._handle){throw"Closed"}var _buf=_shine_flush(this._handle,this._written);var written=getValue(this._written,"i16");var encoded=new Uint8Array(written);encoded.set(Module.HEAPU8.subarray(_buf,_buf+written));_free(this._written);_shine_close(this._handle);this._handle=null;var chan;for(chan=0;chan<this._channels;chan++){_free(getValue(this._buffer+chan*ptrLen,"*"))}_free(this._buffer);return encoded});if(isNode){module.exports=Shine}return Shine}).call(context)})()
+-
+-
+-
+-
+diff --git a/js/dist/libshine_browser.js b/js/dist/libshine_browser.js
+new file mode 100644
+index 0000000..5e8cd74
+--- /dev/null
++++ b/js/dist/libshine_browser.js
+@@ -0,0 +1,183 @@
++// libshine function wrappers
++
++var StereoMode = {
++ '0': 'STEREO',
++ '1': 'JOINT_STEREO',
++ '2': 'DUAL_CHANNEL',
++ '3': 'MONO',
++ STEREO: 0,
++ JOINT_STEREO: 1,
++ DUAL_CHANNEL: 2,
++ MONO: 3
++};
++
++var ShineModule;
++var int16Len;
++var ptrLen;
++
++function shineInit() {
++ int16Len = ShineModule._shine_js_int16_len();
++ ptrLen = ShineModule._shine_js_ptr_len();
++};
++
++function Shine(args) {
++ if (ShineModule._shine_check_config(args.samplerate, args.bitrate) < 0)
++ throw "Invalid configuration";
++
++ var stereoMode;
++ if (!args.stereoMode) {
++ if (args.channels === 1) {
++ stereoMode = Shine.MONO;
++ } else {
++ stereoMode = Shine.JOINT_STEREO;
++ }
++ } else {
++ stereoMode = args.stereoMode;
++ }
++
++ this._handle = ShineModule._shine_js_init(args.channels, args.samplerate, stereoMode, args.bitrate);
++
++ this._channels = args.channels;
++ this._samples_per_pass = ShineModule._shine_samples_per_pass(this._handle);
++
++ this._buffer = ShineModule._malloc(this._channels * ptrLen);
++ this._pcm = new Array(this._channels);
++ this._rem = new Array(this._channels);
++ this._written = ShineModule._malloc(int16Len);
++
++ var _tmp, chan;
++ for (chan=0; chan<this._channels; chan++) {
++ this._rem[chan] = new Int16Array;
++ _tmp = ShineModule._malloc(this._samples_per_pass * int16Len);
++ ShineModule.setValue(this._buffer + chan*ptrLen, _tmp, "*")
++ this._pcm[chan] = ShineModule.HEAP16.subarray(_tmp/int16Len, _tmp/int16Len+this._samples_per_pass)
++ }
++
++ return this;
++};
++
++Shine.checkConfig = function (samplerate, bitrate) {
++ return ShineModule._shine_check_config(samplerate, bitrate) >= 0;
++};
++
++Shine.prototype._encodePass = function (data) {
++ if (!this._handle)
++ throw "Closed";
++
++ var chan;
++ for (chan=0;chan<this._channels;chan++)
++ this._pcm[chan].set(data[chan]);
++
++ var _buf = ShineModule._shine_encode_buffer(this._handle, this._buffer, this._written);
++
++ var written = ShineModule.getValue(this._written, "i16");
++
++ return ShineModule.HEAPU8.subarray(_buf, _buf+written);
++};
++
++function concat(ctr, a, b) {
++ if (typeof b === "undefined") {
++ return a;
++ }
++ var ret = new ctr(a.length+b.length);
++ ret.set(a);
++ ret.subarray(a.length).set(b);
++ return ret;
++}
++
++function clip(x) {
++ return (x > 1 ? 1 : (x < -1 ? -1 : x));
++}
++
++function convertFloat32(buf) {
++ var ret = new Array(buf.length);
++ var samples = buf[0].length;
++ var chan, i;
++
++ for (chan=0;chan<buf.length;chan++) {
++ ret[chan] = new Int16Array(samples);
++ for (i=0;i<samples;i++) {
++ ret[chan][i] = parseInt(clip(buf[chan][i]) * 32767);
++ }
++ }
++ return ret;
++}
++
++Shine.prototype.encode = function (data) {
++ if (data.length != this._channels)
++ throw "Invalid data";
++
++ var encoded = new Uint8Array;
++ var tmp = new Array(this._channels);
++
++ if (data[0] instanceof Float32Array) {
++ data = convertFloat32(data);
++ }
++
++ var chan;
++ for (chan=0;chan<this._channels; chan++) {
++ tmp[chan] = new Float32Array;
++ this._rem[chan] = concat(Int16Array, this._rem[chan], data[chan]);
++ }
++
++ var i, enc;
++ for (i=0;i<this._rem[0].length;i+=this._samples_per_pass) {
++ for (chan=0; chan<this._channels; chan++) {
++ tmp[chan] = this._rem[chan].subarray(i, i+this._samples_per_pass);
++ }
++
++ if (tmp[0].length < this._samples_per_pass) {
++ break;
++ } else {
++ enc = this._encodePass(tmp);
++ if (enc.length > 0) {
++ encoded = concat(Uint8Array, encoded, enc);
++ }
++ }
++ }
++
++ if (tmp[0].length < this._samples_per_pass) {
++ this._rem = tmp;
++ } else {
++ for (chan=0; chan<this._channels; chan++) {
++ this._rem[chan] = new Int16Array;
++ }
++ }
++
++ return encoded;
++};
++
++Shine.prototype.close = function () {
++ if (!this._handle) {
++ throw "Closed";
++ }
++
++ var _buf = ShineModule._shine_flush(this._handle, this._written);
++
++ var written = ShineModule.getValue(this._written, "i16");
++ var encoded = new Uint8Array(written);
++
++ encoded.set(ShineModule.HEAPU8.subarray(_buf, _buf + written));
++
++ ShineModule._free(this._written);
++ ShineModule._shine_close(this._handle);
++ this._handle = null;
++
++ var chan;
++ for (chan=0; chan<this._channels; chan++) {
++ ShineModule._free(ShineModule.getValue(this._buffer + chan*ptrLen, "*"));
++ }
++ ShineModule._free(this._buffer);
++
++ return encoded;
++};
++var createModule = require("./libshine_browser_stubs").default;
++
++Shine.initialized = (createModule()).then(function (Module) {
++ ShineModule = Module;
++ shineInit();
++});
++
++module.exports.Shine = Shine;
++
++module.exports.StereoMode = StereoMode;
+diff --git a/js/dist/libshine_browser_stubs.js b/js/dist/libshine_browser_stubs.js
+new file mode 100644
+index 0000000..23863a3
+--- /dev/null
++++ b/js/dist/libshine_browser_stubs.js
+@@ -0,0 +1,16 @@
++
++var createModule = (() => {
++ var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
++
++ return (
++function(createModule) {
++ createModule = createModule || {};
++
++var Module=typeof createModule!="undefined"?createModule:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}var wasmBinaryFile;wasmBinaryFile="data:application/octet-stream;base64,AGFzbQEAAAABVg9gAX8Bf2ADf39/AGACf38Bf2AEf39/fwF/YAN/f38Bf2ACf38AYAF/AGABfAF8YAABf2ADfHx/AXxgAnx8AXxgAnx/AXxgAABgBH9/f38AYAJ8fwF/Ag0CAWEBYQAAAWEBYgABAxsaAQMBAAQFAAkKBgsCBwwNBQcOAgQAAgMICAYEBQFwAQEBBQYBAYACgAIGCAF/AUHglwULBzUNAWMCAAFkAA8BZQAIAWYACwFnABcBaAAWAWkAFQFqABQBawAbAWwAGgFtABkBbgAYAW8BAArC+gEahQoBDX8gAiAAKAIQIgRJBEAgACAEIAJrIgI2AhAgACAAKAIMIAEgAnRyNgIMDwsgACgCACEKIAAoAgQiBSAAKAIIIgNBBGpNBEAgAAJ/IAVBAm0gBWohCyAKRQRAIAsQCAwBCyALQUBPBEBB5JMBQTA2AgBBAAwBCwJ/QRAgC0ELakF4cSALQQtJGyEHQQAhAyAKQQhrIgUoAgQiDEF4cSEGAkAgDEEDcUUEQEEAIAdBgAJJDQIaIAdBBGogBk0EQCAFIQMgBiAHa0HIlwEoAgBBAXRNDQILQQAMAgsgBSAGaiEIAkAgBiAHTwRAIAYgB2siBEEQSQ0BIAUgDEEBcSAHckECcjYCBCAFIAdqIgMgBEEDcjYCBCAIIAgoAgRBAXI2AgQgAyAEEBEMAQtBgJQBKAIAIAhGBEBB9JMBKAIAIAZqIgYgB00NAiAFIAxBAXEgB3JBAnI2AgQgBSAHaiIEIAYgB2siA0EBcjYCBEH0kwEgAzYCAEGAlAEgBDYCAAwBC0H8kwEoAgAgCEYEQEHwkwEoAgAgBmoiBCAHSQ0CAkAgBCAHayIDQRBPBEAgBSAMQQFxIAdyQQJyNgIEIAUgB2oiBiADQQFyNgIEIAQgBWoiBCADNgIAIAQgBCgCBEF+cTYCBAwBCyAFIAxBAXEgBHJBAnI2AgQgBCAFaiIDIAMoAgRBAXI2AgRBACEDQQAhBgtB/JMBIAY2AgBB8JMBIAM2AgAMAQsgCCgCBCIEQQJxDQEgBEF4cSAGaiINIAdJDQEgDSAHayEPAkAgBEH/AU0EQCAIKAIIIgYgBEEDdiIDQQN0QZCUAWpGGiAGIAgoAgwiBEYEQEHokwFB6JMBKAIAQX4gA3dxNgIADAILIAYgBDYCDCAEIAY2AggMAQsgCCgCGCEOAkAgCCAIKAIMIglHBEAgCCgCCCIDQfiTASgCAEkaIAMgCTYCDCAJIAM2AggMAQsCQCAIQRRqIgYoAgAiAw0AIAhBEGoiBigCACIDDQBBACEJDAELA0AgBiEEIAMiCUEUaiIGKAIAIgMNACAJQRBqIQYgCSgCECIDDQALIARBADYCAAsgDkUNAAJAIAgoAhwiBEECdEGYlgFqIgMoAgAgCEYEQCADIAk2AgAgCQ0BQeyTAUHskwEoAgBBfiAEd3E2AgAMAgsgDkEQQRQgDigCECAIRhtqIAk2AgAgCUUNAQsgCSAONgIYIAgoAhAiAwRAIAkgAzYCECADIAk2AhgLIAgoAhQiA0UNACAJIAM2AhQgAyAJNgIYCyAPQQ9NBEAgBSAMQQFxIA1yQQJyNgIEIAUgDWoiAyADKAIEQQFyNgIEDAELIAUgDEEBcSAHckECcjYCBCAFIAdqIgQgD0EDcjYCBCAFIA1qIgMgAygCBEEBcjYCBCAEIA8QEQsgBSEDCyADCyIDBEAgA0EIagwBC0EAIAsQCCIFRQ0AGiAFIApBfEF4IApBBGsoAgAiA0EDcRsgA0F4cWoiAyALIAMgC0kbEAQgChALIAULIgo2AgAgACAAKAIEIgNBAm0gA2o2AgQgACgCECEEIAAoAgghAwsgAyAKaiAAKAIMIAEgAiAEayIDdnIiBUEYdCAFQYD+A3FBCHRyIAVBCHZBgP4DcSAFQRh2cnI2AgAgAEEgIANrIgM2AhAgACAAKAIIQQRqNgIIIAIgBEcEQCAAIAEgA3Q2AgwPCyAAQQA2AgwLgQIBBn8CQCADRQ0AIANBGGxB0ClqIgUoAgQhByADQQ9NBEAgASACTw0BIANBGGxB0ClqKAIUIQMDQCAEIAAgAUECdGoiBSgCACIGQQBHaiAFKAIEIgRBAEdqIAMgBiAHbCAEamotAABqIQQgAUECaiIBIAJJDQALDAELIAEgAk8NACAFKAIIIQUgA0EYbEHQKWooAhQhAwNAIAQgBUEAIAAgAUECdGoiBCgCACIGQQ5KIggbaiAFQQAgBCgCBCIEQQ5KIgkbaiADQQ8gBCAJGyIEQQ8gBiAIGyIGIAdsamotAABqIAZBAEdqIARBAEdqIQQgAUECaiIBIAJJDQALCyAEC/wDAQJ/IAJBgARPBEAgACABIAIQAQ8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiAEHAAEkNACACIABBQGoiBEsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIARNDQALCyAAIAJNDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAASQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLC1IBAn9B4JMBKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQAEUNAQtB4JMBIAA2AgAgAQ8LQeSTAUEwNgIAQX8L0gsBCH8CQCABIAJJBH8gAiABayIFQQNxIQYgASEEIAFBf3MgAmpBA08EQCAFQXxxIQkDQCADIAAgBEECdGoiBSgCACIKIAMgCkobIgMgBSgCBCIKIAMgCkobIgMgBSgCCCIKIAMgCkobIgMgBSgCDCIFIAMgBUobIQMgBEEEaiEEIAhBBGoiCCAJRw0ACwsgBgRAA0AgAyAAIARBAnRqKAIAIgUgAyAFShshAyAEQQFqIQQgB0EBaiIHIAZHDQALCyADRQRAQQAPCyADQQ5MBEAgA0GILCgCAE8EQEEMIQQCQAJAAkACQAJAQfArKAIAIANLDQBBCyEEQdgrKAIAIANLDQBBwCsoAgAgA0sNBEEJIQRBqCsoAgAgA0sNAEEIIQRBkCsoAgAgA0sNAEH4KigCACADSw0DQQYhBEHgKigCACADSw0AQcgqKAIAIANLDQJBBCEEQbAqKAIAIANLDQBBAyEEQZgqKAIAIANLDQBBgCooAgAgA0sNAUEBIQRB6CkoAgAgA0sNAEEAIQRB0CkoAgAgA00NCAsgACABIAIgBBADGiAEDwtBrCooAgAhBEGcKigCACEFIAAgASACQQIQAyEGQQAhAwNAIAMgACABQQJ0aiIHKAIAIghBAEdqIAcoAgQiA0EAR2ogBCAFIAhsIANqai0AAGohAyABQQJqIgEgAkkNAAtBAkEDIAMgBkobDwtB9CooAgAhBEHkKigCACEFIAAgASACQQUQAyEGQQAhAwNAIAMgACABQQJ0aiIHKAIAIghBAEdqIAcoAgQiA0EAR2ogBCAFIAhsIANqai0AAGohAyABQQJqIgEgAkkNAAtBBUEGIAMgBkobDwtBpCsoAgAhBkGUKygCACEHIAAgASACQQcQAyEFQQAhBCABIQMDQCAEIAAgA0ECdGoiCCgCACIJQQBHaiAIKAIEIgRBAEdqIAYgByAJbCAEamotAABqIQQgA0ECaiIDIAJJDQALIAQgBSAEIAVIGyEGQQdBCCAEIAVKGyEEQbwrKAIAIQVBrCsoAgAhB0EAIQMDQCADIAAgAUECdGoiCCgCACIJQQBHaiAIKAIEIgNBAEdqIAUgByAJbCADamotAABqIQMgAUECaiIBIAJJDQALQQkgBCADIAZMGw8LQewrKAIAIQZB3CsoAgAhByAAIAEgAkEKEAMhBUEAIQQgASEDA0AgBCAAIANBAnRqIggoAgAiCUEAR2ogCCgCBCIEQQBHaiAGIAcgCWwgBGpqLQAAaiEEIANBAmoiAyACSQ0ACyAEIAUgBCAFSBshBkEKQQsgBCAFShshBEGELCgCACEFQfQrKAIAIQdBACEDA0AgAyAAIAFBAnRqIggoAgAiCUEAR2ogCCgCBCIDQQBHaiAFIAcgCWwgA2pqLQAAaiEDIAFBAmoiASACSQ0AC0EMIAQgAyAGTBsPC0HMLCgCACEEQbwsKAIAIQUgACABIAJBDRADIQZBACEDA0AgAyAAIAFBAnRqIgcoAgAiCEEAR2ogBygCBCIDQQBHaiAEIAUgCGwgA2pqLQAAaiEDIAFBAmoiASACSQ0AC0ENQQ8gAyAGShsPCwJ/QQ8gA0EPayIFQcQsKAIATQ0AGkEQQdwsKAIAIAVPDQAaQRFB9CwoAgAgBU8NABpBEkGMLSgCACAFTw0AGkETQaQtKAIAIAVPDQAaQRRBvC0oAgAgBU8NABpBFUHULSgCACAFTw0AGkEWQewtKAIAIAVPDQAaQRdBAEGELigCACAFTxsLIQQCf0EYQZwuKAIAIAVPDQAaQRlBtC4oAgAgBU8NABpBGkHMLigCACAFTw0AGkEbQeQuKAIAIAVPDQAaQRxB/C4oAgAgBU8NABpBHUGULygCACAFTw0AGkEeQawvKAIAIAVPDQAaQR9BAEHELygCACAFTxsLIQMgACABIAIgBBADIQUgAyAEIAAgASACIAMQAyAFSBsFQQALDwsgACABIAJBABADGkEAC9YCAQF/AkAgAUUNACAAQQA6AAAgACABaiICQQFrQQA6AAAgAUEDSQ0AIABBADoAAiAAQQA6AAEgAkEDa0EAOgAAIAJBAmtBADoAACABQQdJDQAgAEEAOgADIAJBBGtBADoAACABQQlJDQAgAEEAIABrQQNxIgJqIgBBADYCACAAIAEgAmtBfHEiAmoiAUEEa0EANgIAIAJBCUkNACAAQQA2AgggAEEANgIEIAFBCGtBADYCACABQQxrQQA2AgAgAkEZSQ0AIABBADYCGCAAQQA2AhQgAEEANgIQIABBADYCDCABQRBrQQA2AgAgAUEUa0EANgIAIAFBGGtBADYCACABQRxrQQA2AgAgAiAAQQRxQRhyIgJrIgFBIEkNACAAIAJqIQADQCAAQgA3AxggAEIANwMQIABCADcDCCAAQgA3AwAgAEEgaiEAIAFBIGsiAUEfSw0ACwsLtykBC38jAEEQayILJAACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEHokwEoAgAiBkEQIABBC2pBeHEgAEELSRsiBUEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgJBA3QiAUGQlAFqIgAgAUGYlAFqKAIAIgEoAggiBEYEQEHokwEgBkF+IAJ3cTYCAAwBCyAEIAA2AgwgACAENgIICyABQQhqIQAgASACQQN0IgJBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMCgsgBUHwkwEoAgAiB00NASABBEACQEECIAB0IgJBACACa3IgASAAdHEiAEEAIABrcWgiAUEDdCIAQZCUAWoiAiAAQZiUAWooAgAiACgCCCIERgRAQeiTASAGQX4gAXdxIgY2AgAMAQsgBCACNgIMIAIgBDYCCAsgACAFQQNyNgIEIAAgBWoiCCABQQN0IgEgBWsiBEEBcjYCBCAAIAFqIAQ2AgAgBwRAIAdBeHFBkJQBaiEBQfyTASgCACECAn8gBkEBIAdBA3Z0IgNxRQRAQeiTASADIAZyNgIAIAEMAQsgASgCCAshAyABIAI2AgggAyACNgIMIAIgATYCDCACIAM2AggLIABBCGohAEH8kwEgCDYCAEHwkwEgBDYCAAwKC0HskwEoAgAiCkUNASAKQQAgCmtxaEECdEGYlgFqKAIAIgIoAgRBeHEgBWshAyACIQEDQAJAIAEoAhAiAEUEQCABKAIUIgBFDQELIAAoAgRBeHEgBWsiASADIAEgA0kiARshAyAAIAIgARshAiAAIQEMAQsLIAIoAhghCSACIAIoAgwiBEcEQCACKAIIIgBB+JMBKAIASRogACAENgIMIAQgADYCCAwJCyACQRRqIgEoAgAiAEUEQCACKAIQIgBFDQMgAkEQaiEBCwNAIAEhCCAAIgRBFGoiASgCACIADQAgBEEQaiEBIAQoAhAiAA0ACyAIQQA2AgAMCAtBfyEFIABBv39LDQAgAEELaiIAQXhxIQVB7JMBKAIAIghFDQBBACAFayEDAkACQAJAAn9BACAFQYACSQ0AGkEfIAVB////B0sNABogBUEmIABBCHZnIgBrdkEBcSAAQQF0a0E+agsiB0ECdEGYlgFqKAIAIgFFBEBBACEADAELQQAhACAFQRkgB0EBdmtBACAHQR9HG3QhAgNAAkAgASgCBEF4cSAFayIGIANPDQAgASEEIAYiAw0AQQAhAyABIQAMAwsgACABKAIUIgYgBiABIAJBHXZBBHFqKAIQIgFGGyAAIAYbIQAgAkEBdCECIAENAAsLIAAgBHJFBEBBACEEQQIgB3QiAEEAIABrciAIcSIARQ0DIABBACAAa3FoQQJ0QZiWAWooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAVrIgIgA0khASACIAMgARshAyAAIAQgARshBCAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAERQ0AIANB8JMBKAIAIAVrTw0AIAQoAhghByAEIAQoAgwiAkcEQCAEKAIIIgBB+JMBKAIASRogACACNgIMIAIgADYCCAwHCyAEQRRqIgEoAgAiAEUEQCAEKAIQIgBFDQMgBEEQaiEBCwNAIAEhBiAAIgJBFGoiASgCACIADQAgAkEQaiEBIAIoAhAiAA0ACyAGQQA2AgAMBgsgBUHwkwEoAgAiAU0EQEH8kwEoAgAhAAJAIAEgBWsiAkEQTwRAQfCTASACNgIAQfyTASAAIAVqIgQ2AgAgBCACQQFyNgIEIAAgAWogAjYCACAAIAVBA3I2AgQMAQtB/JMBQQA2AgBB8JMBQQA2AgAgACABQQNyNgIEIAAgAWoiASABKAIEQQFyNgIECyAAQQhqIQAMCAsgBUH0kwEoAgAiAkkEQEH0kwEgAiAFayIBNgIAQYCUAUGAlAEoAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEADAgLQQAhACAFQS9qIgMCf0HAlwEoAgAEQEHIlwEoAgAMAQtBzJcBQn83AgBBxJcBQoCggICAgAQ3AgBBwJcBIAtBDGpBcHFB2KrVqgVzNgIAQdSXAUEANgIAQaSXAUEANgIAQYAgCyIBaiIGQQAgAWsiCHEiASAFTQ0HQaCXASgCACIEBEBBmJcBKAIAIgcgAWoiCSAHTQ0IIAQgCUkNCAsCQEGklwEtAABBBHFFBEACQAJAAkACQEGAlAEoAgAiBARAQaiXASEAA0AgBCAAKAIAIgdPBEAgByAAKAIEaiAESw0DCyAAKAIIIgANAAsLQQAQBSICQX9GDQMgASEGQcSXASgCACIAQQFrIgQgAnEEQCABIAJrIAIgBGpBACAAa3FqIQYLIAUgBk8NA0GglwEoAgAiAARAQZiXASgCACIEIAZqIgggBE0NBCAAIAhJDQQLIAYQBSIAIAJHDQEMBQsgBiACayAIcSIGEAUiAiAAKAIAIAAoAgRqRg0BIAIhAAsgAEF/Rg0BIAYgBUEwak8EQCAAIQIMBAtByJcBKAIAIgIgAyAGa2pBACACa3EiAhAFQX9GDQEgAiAGaiEGIAAhAgwDCyACQX9HDQILQaSXAUGklwEoAgBBBHI2AgALIAEQBSECQQAQBSEAIAJBf0YNBSAAQX9GDQUgACACTQ0FIAAgAmsiBiAFQShqTQ0FC0GYlwFBmJcBKAIAIAZqIgA2AgBBnJcBKAIAIABJBEBBnJcBIAA2AgALAkBBgJQBKAIAIgMEQEGolwEhAANAIAIgACgCACIBIAAoAgQiBGpGDQIgACgCCCIADQALDAQLQfiTASgCACIAQQAgACACTRtFBEBB+JMBIAI2AgALQQAhAEGslwEgBjYCAEGolwEgAjYCAEGIlAFBfzYCAEGMlAFBwJcBKAIANgIAQbSXAUEANgIAA0AgAEEDdCIBQZiUAWogAUGQlAFqIgQ2AgAgAUGclAFqIAQ2AgAgAEEBaiIAQSBHDQALQfSTASAGQShrIgBBeCACa0EHcUEAIAJBCGpBB3EbIgFrIgQ2AgBBgJQBIAEgAmoiATYCACABIARBAXI2AgQgACACakEoNgIEQYSUAUHQlwEoAgA2AgAMBAsgAC0ADEEIcQ0CIAEgA0sNAiACIANNDQIgACAEIAZqNgIEQYCUASADQXggA2tBB3FBACADQQhqQQdxGyIAaiIBNgIAQfSTAUH0kwEoAgAgBmoiAiAAayIANgIAIAEgAEEBcjYCBCACIANqQSg2AgRBhJQBQdCXASgCADYCAAwDC0EAIQQMBQtBACECDAMLQfiTASgCACACSwRAQfiTASACNgIACyACIAZqIQFBqJcBIQACQAJAAkACQAJAAkADQCABIAAoAgBHBEAgACgCCCIADQEMAgsLIAAtAAxBCHFFDQELQaiXASEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiIEIANLDQMLIAAoAgghAAwACwALIAAgAjYCACAAIAAoAgQgBmo2AgQgAkF4IAJrQQdxQQAgAkEIakEHcRtqIgcgBUEDcjYCBCABQXggAWtBB3FBACABQQhqQQdxG2oiBiAFIAdqIgVrIQAgAyAGRgRAQYCUASAFNgIAQfSTAUH0kwEoAgAgAGoiADYCACAFIABBAXI2AgQMAwtB/JMBKAIAIAZGBEBB/JMBIAU2AgBB8JMBQfCTASgCACAAaiIANgIAIAUgAEEBcjYCBCAAIAVqIAA2AgAMAwsgBigCBCIDQQNxQQFGBEAgA0F4cSEJAkAgA0H/AU0EQCAGKAIIIgEgA0EDdiIEQQN0QZCUAWpGGiABIAYoAgwiAkYEQEHokwFB6JMBKAIAQX4gBHdxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBigCGCEIAkAgBiAGKAIMIgJHBEAgBigCCCIBIAI2AgwgAiABNgIIDAELAkAgBkEUaiIDKAIAIgENACAGQRBqIgMoAgAiAQ0AQQAhAgwBCwNAIAMhBCABIgJBFGoiAygCACIBDQAgAkEQaiEDIAIoAhAiAQ0ACyAEQQA2AgALIAhFDQACQCAGKAIcIgFBAnRBmJYBaiIEKAIAIAZGBEAgBCACNgIAIAINAUHskwFB7JMBKAIAQX4gAXdxNgIADAILIAhBEEEUIAgoAhAgBkYbaiACNgIAIAJFDQELIAIgCDYCGCAGKAIQIgEEQCACIAE2AhAgASACNgIYCyAGKAIUIgFFDQAgAiABNgIUIAEgAjYCGAsgBiAJaiIGKAIEIQMgACAJaiEACyAGIANBfnE2AgQgBSAAQQFyNgIEIAAgBWogADYCACAAQf8BTQRAIABBeHFBkJQBaiEBAn9B6JMBKAIAIgJBASAAQQN2dCIAcUUEQEHokwEgACACcjYCACABDAELIAEoAggLIQAgASAFNgIIIAAgBTYCDCAFIAE2AgwgBSAANgIIDAMLQR8hAyAAQf///wdNBEAgAEEmIABBCHZnIgFrdkEBcSABQQF0a0E+aiEDCyAFIAM2AhwgBUIANwIQIANBAnRBmJYBaiEBAkBB7JMBKAIAIgJBASADdCIEcUUEQEHskwEgAiAEcjYCACABIAU2AgAMAQsgAEEZIANBAXZrQQAgA0EfRxt0IQMgASgCACECA0AgAiIBKAIEQXhxIABGDQMgA0EddiECIANBAXQhAyABIAJBBHFqIgQoAhAiAg0ACyAEIAU2AhALIAUgATYCGCAFIAU2AgwgBSAFNgIIDAILQfSTASAGQShrIgBBeCACa0EHcUEAIAJBCGpBB3EbIgFrIgg2AgBBgJQBIAEgAmoiATYCACABIAhBAXI2AgQgACACakEoNgIEQYSUAUHQlwEoAgA2AgAgAyAEQScgBGtBB3FBACAEQSdrQQdxG2pBL2siACAAIANBEGpJGyIBQRs2AgQgAUGwlwEpAgA3AhAgAUGolwEpAgA3AghBsJcBIAFBCGo2AgBBrJcBIAY2AgBBqJcBIAI2AgBBtJcBQQA2AgAgAUEYaiEAA0AgAEEHNgIEIABBCGohAiAAQQRqIQAgAiAESQ0ACyABIANGDQMgASABKAIEQX5xNgIEIAMgASADayICQQFyNgIEIAEgAjYCACACQf8BTQRAIAJBeHFBkJQBaiEAAn9B6JMBKAIAIgFBASACQQN2dCICcUUEQEHokwEgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDCADIAA2AgwgAyABNgIIDAQLQR8hACACQf///wdNBEAgAkEmIAJBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyADIAA2AhwgA0IANwIQIABBAnRBmJYBaiEBAkBB7JMBKAIAIgRBASAAdCIGcUUEQEHskwEgBCAGcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEEA0AgBCIBKAIEQXhxIAJGDQQgAEEddiEEIABBAXQhACABIARBBHFqIgYoAhAiBA0ACyAGIAM2AhALIAMgATYCGCADIAM2AgwgAyADNgIIDAMLIAEoAggiACAFNgIMIAEgBTYCCCAFQQA2AhggBSABNgIMIAUgADYCCAsgB0EIaiEADAULIAEoAggiACADNgIMIAEgAzYCCCADQQA2AhggAyABNgIMIAMgADYCCAtB9JMBKAIAIgAgBU0NAEH0kwEgACAFayIBNgIAQYCUAUGAlAEoAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEADAMLQeSTAUEwNgIAQQAhAAwCCwJAIAdFDQACQCAEKAIcIgBBAnRBmJYBaiIBKAIAIARGBEAgASACNgIAIAINAUHskwEgCEF+IAB3cSIINgIADAILIAdBEEEUIAcoAhAgBEYbaiACNgIAIAJFDQELIAIgBzYCGCAEKAIQIgAEQCACIAA2AhAgACACNgIYCyAEKAIUIgBFDQAgAiAANgIUIAAgAjYCGAsCQCADQQ9NBEAgBCADIAVqIgBBA3I2AgQgACAEaiIAIAAoAgRBAXI2AgQMAQsgBCAFQQNyNgIEIAQgBWoiAiADQQFyNgIEIAIgA2ogAzYCACADQf8BTQRAIANBeHFBkJQBaiEAAn9B6JMBKAIAIgFBASADQQN2dCIDcUUEQEHokwEgASADcjYCACAADAELIAAoAggLIQEgACACNgIIIAEgAjYCDCACIAA2AgwgAiABNgIIDAELQR8hACADQf///wdNBEAgA0EmIANBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyACIAA2AhwgAkIANwIQIABBAnRBmJYBaiEBAkACQCAIQQEgAHQiBnFFBEBB7JMBIAYgCHI2AgAgASACNgIADAELIANBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhBQNAIAUiASgCBEF4cSADRg0CIABBHXYhBiAAQQF0IQAgASAGQQRxaiIGKAIQIgUNAAsgBiACNgIQCyACIAE2AhggAiACNgIMIAIgAjYCCAwBCyABKAIIIgAgAjYCDCABIAI2AgggAkEANgIYIAIgATYCDCACIAA2AggLIARBCGohAAwBCwJAIAlFDQACQCACKAIcIgBBAnRBmJYBaiIBKAIAIAJGBEAgASAENgIAIAQNAUHskwEgCkF+IAB3cTYCAAwCCyAJQRBBFCAJKAIQIAJGG2ogBDYCACAERQ0BCyAEIAk2AhggAigCECIABEAgBCAANgIQIAAgBDYCGAsgAigCFCIARQ0AIAQgADYCFCAAIAQ2AhgLAkAgA0EPTQRAIAIgAyAFaiIAQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDAELIAIgBUEDcjYCBCACIAVqIgQgA0EBcjYCBCADIARqIAM2AgAgBwRAIAdBeHFBkJQBaiEAQfyTASgCACEBAn9BASAHQQN2dCIFIAZxRQRAQeiTASAFIAZyNgIAIAAMAQsgACgCCAshBiAAIAE2AgggBiABNgIMIAEgADYCDCABIAY2AggLQfyTASAENgIAQfCTASADNgIACyACQQhqIQALIAtBEGokACAAC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgIQUgAyAAoiEEIAJFBEAgBCADIAWiRElVVVVVVcW/oKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBSAEoqGiIAGhIARESVVVVVVVxT+ioKELkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA/oiIDoSIERAAAAAAAAPA/IAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC4kMAQd/AkAgAEUNACAAQQhrIgIgAEEEaygCACIBQXhxIgBqIQUCQCABQQFxDQAgAUEDcUUNASACIAIoAgAiAWsiAkH4kwEoAgBJDQEgACABaiEAQfyTASgCACACRwRAIAFB/wFNBEAgAigCCCIEIAFBA3YiAUEDdEGQlAFqRhogBCACKAIMIgNGBEBB6JMBQeiTASgCAEF+IAF3cTYCAAwDCyAEIAM2AgwgAyAENgIIDAILIAIoAhghBgJAIAIgAigCDCIBRwRAIAIoAggiAyABNgIMIAEgAzYCCAwBCwJAIAJBFGoiBCgCACIDDQAgAkEQaiIEKAIAIgMNAEEAIQEMAQsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIACyAGRQ0BAkAgAigCHCIEQQJ0QZiWAWoiAygCACACRgRAIAMgATYCACABDQFB7JMBQeyTASgCAEF+IAR3cTYCAAwDCyAGQRBBFCAGKAIQIAJGG2ogATYCACABRQ0CCyABIAY2AhggAigCECIDBEAgASADNgIQIAMgATYCGAsgAigCFCIDRQ0BIAEgAzYCFCADIAE2AhgMAQsgBSgCBCIBQQNxQQNHDQBB8JMBIAA2AgAgBSABQX5xNgIEIAIgAEEBcjYCBCAAIAJqIAA2AgAPCyACIAVPDQAgBSgCBCIBQQFxRQ0AAkAgAUECcUUEQEGAlAEoAgAgBUYEQEGAlAEgAjYCAEH0kwFB9JMBKAIAIABqIgA2AgAgAiAAQQFyNgIEIAJB/JMBKAIARw0DQfCTAUEANgIAQfyTAUEANgIADwtB/JMBKAIAIAVGBEBB/JMBIAI2AgBB8JMBQfCTASgCACAAaiIANgIAIAIgAEEBcjYCBCAAIAJqIAA2AgAPCyABQXhxIABqIQACQCABQf8BTQRAIAUoAggiBCABQQN2IgFBA3RBkJQBakYaIAQgBSgCDCIDRgRAQeiTAUHokwEoAgBBfiABd3E2AgAMAgsgBCADNgIMIAMgBDYCCAwBCyAFKAIYIQYCQCAFIAUoAgwiAUcEQCAFKAIIIgNB+JMBKAIASRogAyABNgIMIAEgAzYCCAwBCwJAIAVBFGoiBCgCACIDDQAgBUEQaiIEKAIAIgMNAEEAIQEMAQsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIACyAGRQ0AAkAgBSgCHCIEQQJ0QZiWAWoiAygCACAFRgRAIAMgATYCACABDQFB7JMBQeyTASgCAEF+IAR3cTYCAAwCCyAGQRBBFCAGKAIQIAVGG2ogATYCACABRQ0BCyABIAY2AhggBSgCECIDBEAgASADNgIQIAMgATYCGAsgBSgCFCIDRQ0AIAEgAzYCFCADIAE2AhgLIAIgAEEBcjYCBCAAIAJqIAA2AgAgAkH8kwEoAgBHDQFB8JMBIAA2AgAPCyAFIAFBfnE2AgQgAiAAQQFyNgIEIAAgAmogADYCAAsgAEH/AU0EQCAAQXhxQZCUAWohAQJ/QeiTASgCACIDQQEgAEEDdnQiAHFFBEBB6JMBIAAgA3I2AgAgAQwBCyABKAIICyEAIAEgAjYCCCAAIAI2AgwgAiABNgIMIAIgADYCCA8LQR8hBCAAQf///wdNBEAgAEEmIABBCHZnIgFrdkEBcSABQQF0a0E+aiEECyACIAQ2AhwgAkIANwIQIARBAnRBmJYBaiEHAkACQAJAQeyTASgCACIDQQEgBHQiAXFFBEBB7JMBIAEgA3I2AgAgByACNgIAIAIgBzYCGAwBCyAAQRkgBEEBdmtBACAEQR9HG3QhBCAHKAIAIQEDQCABIgMoAgRBeHEgAEYNAiAEQR12IQEgBEEBdCEEIAMgAUEEcWoiB0EQaigCACIBDQALIAcgAjYCECACIAM2AhgLIAIgAjYCDCACIAI2AggMAQsgAygCCCIAIAI2AgwgAyACNgIIIAJBADYCGCACIAM2AgwgAiAANgIIC0GIlAFBiJQBKAIAQQFrIgBBfyAAGzYCAAsLqAEAAkAgAUGACE4EQCAARAAAAAAAAOB/oiEAIAFB/w9JBEAgAUH/B2shAQwCCyAARAAAAAAAAOB/oiEAQf0XIAEgAUH9F04bQf4PayEBDAELIAFBgXhKDQAgAEQAAAAAAABgA6IhACABQbhwSwRAIAFByQdqIQEMAQsgAEQAAAAAAABgA6IhAEHwaCABIAFB8GhMG0GSD2ohAQsgACABQf8Haq1CNIa/ogu8AgEBfwJ/QQAgAUECdEGAM2oiAigCACAARg0AGkEBIAIoAhAgAEYNABpBAiABQQJ0QaAzaigCACAARg0AGkEDIAFBAnQiAkGwM2ooAgAgAEYNABpBBCACQcAzaigCACAARg0AGkEFIAFBAnQiAkHQM2ooAgAgAEYNABpBBiACQeAzaigCACAARg0AGkEHIAFBAnQiAkHwM2ooAgAgAEYNABpBCCACQYA0aigCACAARg0AGkEJIAFBAnQiAkGQNGooAgAgAEYNABpBCiACQaA0aigCACAARg0AGkELIAFBAnQiAkGwNGooAgAgAEYNABpBDCACQcA0aigCACAARg0AGkENIAFBAnQiAkHQNGooAgAgAEYNABpBDiACQeA0aigCACAARg0AGkEPQX8gAUECdEHwNGooAgAgAEYbCwvoBAMBfwZ8An4gAL0iCEIwiKchASAIQoCAgICAgID3P31C//////+fwgFYBEAgCEKAgICAgICA+D9RBEBEAAAAAAAAAAAPCyAARAAAAAAAAPC/oCIAIAAgAEQAAAAAAACgQaIiAqAgAqEiAiACokGI8wArAwAiBaIiBqAiByAAIAAgAKIiA6IiBCAEIAQgBEHY8wArAwCiIANB0PMAKwMAoiAAQcjzACsDAKJBwPMAKwMAoKCgoiADQbjzACsDAKIgAEGw8wArAwCiQajzACsDAKCgoKIgA0Gg8wArAwCiIABBmPMAKwMAokGQ8wArAwCgoKCiIAAgAqEgBaIgACACoKIgBiAAIAehoKCgoA8LAkAgAUHw/wFrQZ+Afk0EQCAIQv///////////wCDUARAIwBBEGsiAUQAAAAAAADwvzkDCCABKwMIRAAAAAAAAAAAow8LIAhCgICAgICAgPj/AFENASABQYCAAnFFIAFB8P8BcUHw/wFHcUUEQCAAIAChIgAgAKMPCyAARAAAAAAAADBDor1CgICAgICAgKADfSEICyAIQoCAgICAgIDzP30iCUI0h6e3IgNB0PIAKwMAoiAJQi2Ip0H/AHFBBHQiAUHo8wBqKwMAoCIEIAFB4PMAaisDACAIIAlCgICAgICAgHiDfb8gAUHggwFqKwMAoSABQeiDAWorAwChoiIAoCIFIAAgACAAoiICoiACIABBgPMAKwMAokH48gArAwCgoiAAQfDyACsDAKJB6PIAKwMAoKCiIAJB4PIAKwMAoiADQdjyACsDAKIgACAEIAWhoKCgoKAhAAsgAAsDAAELkwwCB38BfiMAQYACayIHJAAgA0GAjQVqIgQgAkECdGoiBSgCAEECdCAEIAJBC3QiCGpBiMAAaiICaiAAKAIAIgQvAQBBEHQ2AnwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AnggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AnQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AnAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AmwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AmggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AmQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AmAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AlwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AlggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AlQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AlAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AkwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AkggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AkQgBSgCAEECdCACakFAayAEQQJqIgQvAQBBEHQ2AgAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AjwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AjggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AjQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AjAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AiwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AiggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AiQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AiAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AhwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AhggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AhQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AhAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AgwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AgggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AgQgAiAFKAIAQQJ0aiAEQQJqIgIvAQBBEHQ2AgAgACACQQJqNgIAIAUoAgAhCUHAACECA0AgByACQQFrIgBBAnQiCmogAkECdEHAO2oiBjQC/AEgAyAIakGIzQVqIgIgACAJaiIEQUBrQf8DcUECdGo0AgB+QiCIpyAKQcA7ajQCACACIARB/wNxQQJ0ajQCAH5CIIinaiAGNAL8AyACIARBgAFqQf8DcUECdGo0AgB+QiCIp2ogBjQC/AUgAiAEQcABakH/A3FBAnRqNAIAfkIgiKdqIAY0AvwHIAIgBEGAAmpB/wNxQQJ0ajQCAH5CIIinaiAGQfwJajQCACACIARBwAJqQf8DcUECdGo0AgB+QiCIp2ogBkH8C2o0AgAgAiAEQYADakH/A3FBAnRqNAIAfkIgiKdqIAZB/A1qNAIAIAIgBEHAA2pB/wNxQQJ0ajQCAH5CIIinajYCACAAIgINAAsgBSAFKAIAQeADakH/A3E2AgBBHyECIAc0AvwBIQsDQCALIAMgAiIFQQh0aiIIQYSPBWo0AgB+QiCIpyEGQT8hAANAIAYgByAAQQJ0IgRBBGsiCWo0AgAgCSAIQYiNBWoiAmo0AgB+QiCIp2ogByAEQQhrIgZqNAIAIAIgBmo0AgB+QiCIp2ogByAEQQxrIgZqNAIAIAIgBmo0AgB+QiCIp2ogByAEQRBrIgZqNAIAIAIgBmo0AgB+QiCIp2ogByAEQRRrIgZqNAIAIAIgBmo0AgB+QiCIp2ogByAEQRhrIgRqNAIAIAIgBGo0AgB+QiCIp2ogByAAQQdrIgBBAnQiBGo0AgAgAiAEajQCAH5CIIinaiEGIAANAAsgASAFQQJ0aiAGNgIAIAVBAWshAiAFDQALIAdBgAJqJAALyAsBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQfyTASgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RBkJQBakYaIAAoAgwiAyAERw0CQeiTAUHokwEoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgJHBEAgACgCCCIDQfiTASgCAEkaIAMgAjYCDCACIAM2AggMAQsCQCAAQRRqIgQoAgAiAw0AIABBEGoiBCgCACIDDQBBACECDAELA0AgBCEHIAMiAkEUaiIEKAIAIgMNACACQRBqIQQgAigCECIDDQALIAdBADYCAAsgBkUNAgJAIAAoAhwiBEECdEGYlgFqIgMoAgAgAEYEQCADIAI2AgAgAg0BQeyTAUHskwEoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAI2AgAgAkUNAwsgAiAGNgIYIAAoAhAiAwRAIAIgAzYCECADIAI2AhgLIAAoAhQiA0UNAiACIAM2AhQgAyACNgIYDAILIAUoAgQiAkEDcUEDRw0BQfCTASABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAsCQCAFKAIEIgJBAnFFBEBBgJQBKAIAIAVGBEBBgJQBIAA2AgBB9JMBQfSTASgCACABaiIBNgIAIAAgAUEBcjYCBCAAQfyTASgCAEcNA0HwkwFBADYCAEH8kwFBADYCAA8LQfyTASgCACAFRgRAQfyTASAANgIAQfCTAUHwkwEoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAkF4cSABaiEBAkAgAkH/AU0EQCAFKAIIIgQgAkEDdiICQQN0QZCUAWpGGiAEIAUoAgwiA0YEQEHokwFB6JMBKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgJHBEAgBSgCCCIDQfiTASgCAEkaIAMgAjYCDCACIAM2AggMAQsCQCAFQRRqIgMoAgAiBA0AIAVBEGoiAygCACIEDQBBACECDAELA0AgAyEHIAQiAkEUaiIDKAIAIgQNACACQRBqIQMgAigCECIEDQALIAdBADYCAAsgBkUNAAJAIAUoAhwiBEECdEGYlgFqIgMoAgAgBUYEQCADIAI2AgAgAg0BQeyTAUHskwEoAgBBfiAEd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAI2AgAgAkUNAQsgAiAGNgIYIAUoAhAiAwRAIAIgAzYCECADIAI2AhgLIAUoAhQiA0UNACACIAM2AhQgAyACNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABB/JMBKAIARw0BQfCTASABNgIADwsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFB/wFNBEAgAUF4cUGQlAFqIQICf0HokwEoAgAiA0EBIAFBA3Z0IgFxRQRAQeiTASABIANyNgIAIAIMAQsgAigCCAshASACIAA2AgggASAANgIMIAAgAjYCDCAAIAE2AggPC0EfIQQgAUH///8HTQRAIAFBJiABQQh2ZyICa3ZBAXEgAkEBdGtBPmohBAsgACAENgIcIABCADcCECAEQQJ0QZiWAWohBwJAAkBB7JMBKAIAIgNBASAEdCICcUUEQEHskwEgAiADcjYCACAHIAA2AgAgACAHNgIYDAELIAFBGSAEQQF2a0EAIARBH0cbdCEEIAcoAgAhAgNAIAIiAygCBEF4cSABRg0CIARBHXYhAiAEQQF0IQQgAyACQQRxaiIHQRBqKAIAIgINAAsgByAANgIQIAAgAzYCGAsgACAANgIMIAAgADYCCA8LIAMoAggiASAANgIMIAMgADYCCCAAQQA2AhggACADNgIMIAAgATYCCAsLwQEBAn8jAEEQayIBJAACfCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEBEAAAAAAAA8D8gAkGewZryA0kNARogAEQAAAAAAAAAABAKDAELIAAgAKEgAkGAgMD/B08NABoCQAJAAkACQCAAIAEQE0EDcQ4DAAECAwsgASsDACABKwMIEAoMAwsgASsDACABKwMIQQEQCZoMAgsgASsDACABKwMIEAqaDAELIAErAwAgASsDCEEBEAkLIQAgAUEQaiQAIAALzxgDFH8EfAF+IwBBMGsiCSQAAkACQAJAIAC9IhpCIIinIgNB/////wdxIgZB+tS9gARNBEAgA0H//z9xQfvDJEYNASAGQfyyi4AETQRAIBpCAFkEQCABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIhY5AwAgASAAIBahRDFjYhphtNC9oDkDCEEBIQMMBQsgASAARAAAQFT7Ifk/oCIARDFjYhphtNA9oCIWOQMAIAEgACAWoUQxY2IaYbTQPaA5AwhBfyEDDAQLIBpCAFkEQCABIABEAABAVPshCcCgIgBEMWNiGmG04L2gIhY5AwAgASAAIBahRDFjYhphtOC9oDkDCEECIQMMBAsgASAARAAAQFT7IQlAoCIARDFjYhphtOA9oCIWOQMAIAEgACAWoUQxY2IaYbTgPaA5AwhBfiEDDAMLIAZBu4zxgARNBEAgBkG8+9eABE0EQCAGQfyyy4AERg0CIBpCAFkEQCABIABEAAAwf3zZEsCgIgBEypSTp5EO6b2gIhY5AwAgASAAIBahRMqUk6eRDum9oDkDCEEDIQMMBQsgASAARAAAMH982RJAoCIARMqUk6eRDuk9oCIWOQMAIAEgACAWoUTKlJOnkQ7pPaA5AwhBfSEDDAQLIAZB+8PkgARGDQEgGkIAWQRAIAEgAEQAAEBU+yEZwKAiAEQxY2IaYbTwvaAiFjkDACABIAAgFqFEMWNiGmG08L2gOQMIQQQhAwwECyABIABEAABAVPshGUCgIgBEMWNiGmG08D2gIhY5AwAgASAAIBahRDFjYhphtPA9oDkDCEF8IQMMAwsgBkH6w+SJBEsNAQsgACAARIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIhdEAABAVPsh+b+ioCIWIBdEMWNiGmG00D2iIhihIhlEGC1EVPsh6b9jIQICfyAXmUQAAAAAAADgQWMEQCAXqgwBC0GAgICAeAshAwJAIAIEQCADQQFrIQMgF0QAAAAAAADwv6AiF0QxY2IaYbTQPaIhGCAAIBdEAABAVPsh+b+ioCEWDAELIBlEGC1EVPsh6T9kRQ0AIANBAWohAyAXRAAAAAAAAPA/oCIXRDFjYhphtNA9oiEYIAAgF0QAAEBU+yH5v6KgIRYLIAEgFiAYoSIAOQMAAkAgBkEUdiICIAC9QjSIp0H/D3FrQRFIDQAgASAWIBdEAABgGmG00D2iIgChIhkgF0RzcAMuihmjO6IgFiAZoSAAoaEiGKEiADkDACACIAC9QjSIp0H/D3FrQTJIBEAgGSEWDAELIAEgGSAXRAAAAC6KGaM7oiIAoSIWIBdEwUkgJZqDezmiIBkgFqEgAKGhIhihIgA5AwALIAEgFiAAoSAYoTkDCAwBCyAGQYCAwP8HTwRAIAEgACAAoSIAOQMAIAEgADkDCEEAIQMMAQsgGkL/////////B4NCgICAgICAgLDBAIS/IQBBACEDQQEhAgNAIAlBEGogA0EDdGoCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAu3IhY5AwAgACAWoUQAAAAAAABwQaIhAEEBIQMgAiEEQQAhAiAEDQALIAkgADkDIEECIQMDQCADIgJBAWshAyAJQRBqIAJBA3RqKwMARAAAAAAAAAAAYQ0ACyAJQRBqIQ5BACEEIwBBsARrIgUkACAGQRR2QZYIayIDQQNrQRhtIgZBACAGQQBKGyIPQWhsIANqIQZBxMsAKAIAIgggAkEBaiIKQQFrIgdqQQBOBEAgCCAKaiEDIA8gB2shAgNAIAVBwAJqIARBA3RqIAJBAEgEfEQAAAAAAAAAAAUgAkECdEHQywBqKAIAtws5AwAgAkEBaiECIARBAWoiBCADRw0ACwsgBkEYayELQQAhAyAIQQAgCEEAShshBCAKQQBMIQwDQAJAIAwEQEQAAAAAAAAAACEADAELIAMgB2ohDUEAIQJEAAAAAAAAAAAhAANAIA4gAkEDdGorAwAgBUHAAmogDSACa0EDdGorAwCiIACgIQAgAkEBaiICIApHDQALCyAFIANBA3RqIAA5AwAgAyAERiECIANBAWohAyACRQ0AC0EvIAZrIRJBMCAGayEQIAZBGWshEyAIIQMCQANAIAUgA0EDdGorAwAhAEEAIQIgAyEEIANBAEwiB0UEQANAIAVB4ANqIAJBAnRqAn8CfyAARAAAAAAAAHA+oiIWmUQAAAAAAADgQWMEQCAWqgwBC0GAgICAeAu3IhZEAAAAAAAAcMGiIACgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CzYCACAFIARBAWsiBEEDdGorAwAgFqAhACACQQFqIgIgA0cNAAsLAn8gACALEAwiACAARAAAAAAAAMA/opxEAAAAAAAAIMCioCIAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAshDCAAIAy3oSEAAkACQAJAAn8gC0EATCIURQRAIANBAnQgBWoiAiACKALcAyICIAIgEHUiAiAQdGsiBDYC3AMgAiAMaiEMIAQgEnUMAQsgCw0BIANBAnQgBWooAtwDQRd1CyINQQBMDQIMAQtBAiENIABEAAAAAAAA4D9mDQBBACENDAELQQAhAkEAIQQgB0UEQANAIAVB4ANqIAJBAnRqIhUoAgAhEUH///8HIQcCfwJAIAQNAEGAgIAIIQcgEQ0AQQAMAQsgFSAHIBFrNgIAQQELIQQgAkEBaiICIANHDQALCwJAIBQNAEH///8DIQICQAJAIBMOAgEAAgtB////ASECCyADQQJ0IAVqIgcgBygC3AMgAnE2AtwDCyAMQQFqIQwgDUECRw0ARAAAAAAAAPA/IAChIQBBAiENIARFDQAgAEQAAAAAAADwPyALEAyhIQALIABEAAAAAAAAAABhBEBBACEEIAMhAgJAIAMgCEwNAANAIAVB4ANqIAJBAWsiAkECdGooAgAgBHIhBCACIAhKDQALIARFDQAgCyEGA0AgBkEYayEGIAVB4ANqIANBAWsiA0ECdGooAgBFDQALDAMLQQEhAgNAIAIiBEEBaiECIAVB4ANqIAggBGtBAnRqKAIARQ0ACyADIARqIQQDQCAFQcACaiADIApqIgdBA3RqIANBAWoiAyAPakECdEHQywBqKAIAtzkDAEEAIQJEAAAAAAAAAAAhACAKQQBKBEADQCAOIAJBA3RqKwMAIAVBwAJqIAcgAmtBA3RqKwMAoiAAoCEAIAJBAWoiAiAKRw0ACwsgBSADQQN0aiAAOQMAIAMgBEgNAAsgBCEDDAELCwJAIABBGCAGaxAMIgBEAAAAAAAAcEFmBEAgBUHgA2ogA0ECdGoCfwJ/IABEAAAAAAAAcD6iIhaZRAAAAAAAAOBBYwRAIBaqDAELQYCAgIB4CyICt0QAAAAAAABwwaIgAKAiAJlEAAAAAAAA4EFjBEAgAKoMAQtBgICAgHgLNgIAIANBAWohAwwBCwJ/IACZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CyECIAshBgsgBUHgA2ogA0ECdGogAjYCAAtEAAAAAAAA8D8gBhAMIQACQCADQQBIDQAgAyECA0AgBSACIgRBA3RqIAAgBUHgA2ogAkECdGooAgC3ojkDACACQQFrIQIgAEQAAAAAAABwPqIhACAEDQALQQAhByADQQBIDQAgCEEAIAhBAEobIQYgAyEEA0AgBiAHIAYgB0kbIQsgAyAEayEIQQAhAkQAAAAAAAAAACEAA0AgAkEDdEGg4QBqKwMAIAUgAiAEakEDdGorAwCiIACgIQAgAiALRyEKIAJBAWohAiAKDQALIAVBoAFqIAhBA3RqIAA5AwAgBEEBayEEIAMgB0chAiAHQQFqIQcgAg0ACwtEAAAAAAAAAAAhACADQQBOBEAgAyECA0AgAiIEQQFrIQIgACAFQaABaiAEQQN0aisDAKAhACAEDQALCyAJIACaIAAgDRs5AwAgBSsDoAEgAKEhAEEBIQIgA0EASgRAA0AgACAFQaABaiACQQN0aisDAKAhACACIANHIQQgAkEBaiECIAQNAAsLIAkgAJogACANGzkDCCAFQbAEaiQAIAxBB3EhAyAJKwMAIQAgGkIAUwRAIAEgAJo5AwAgASAJKwMImjkDCEEAIANrIQMMAQsgASAAOQMAIAEgCSsDCDkDCAsgCUEwaiQAIAMLGAAgASAAKAJoNgIAIABBADYCaCAAKAJgC7xUAyF/JH4CfCAAIAEoAgA2AogRIAAoAgBBAkYEQCAAQYwRaiABKAIENgIACwJAIAArAzAiSEQAAAAAAAAAAGEEQCAAKAIgIQEMAQsgACAAKwM4IkkgSEQAAAAAAADwv6BlIgE2AiAgACBJRAAAAAAAAPA/RAAAAAAAAAAAIAEbIEihoDkDOAsgACAAQUBrKAIAIAFqQQN0IgE2AiQgACABIAAoAowEayAAKAIQbTYCkAQCQCAAIgEoAgAiBUUNACAFQQFrIQAgASgCECIEQQBKBEAgAUHg+ARqIQcDQCAAIQMgBEEASgRAIAEgA0ECdGpBiBFqIQpBACEFA0AgBUEBaiEGQQAhAANAIAogASADQYA2bGoiCSAGQYASbCIQakGw2QBqIgQgAEEHdCIIaiADIAEQECAKIAQgCEGAAXJqIgQgAyABEBAgBEEAIAQoAgRrNgIEIARBACAEKAIMazYCDCAEQQAgBCgCFGs2AhQgBEEAIAQoAhxrNgIcIARBACAEKAIkazYCJCAEQQAgBCgCLGs2AiwgBEEAIAQoAjRrNgI0IARBACAEKAI8azYCPCAEQQAgBCgCRGs2AkQgBEEAIAQoAkxrNgJMIARBACAEKAJUazYCVCAEQQAgBCgCXGs2AlwgBEEAIAQoAmRrNgJkIARBACAEKAJsazYCbCAEQQAgBCgCdGs2AnQgBEEAIAQoAnxrNgJ8IABBEEkhBCAAQQJqIQAgBA0ACyAFQYASbCINIAEgA0GAJGxqakGwxQFqIQxBACEFA0AgBUECdCIEIAlBsNkAaiIIIA1qaiIANAIAISQgCCAQaiAEaiIENAIAISUgADQCgAEhJiAANAKAAiEnIAA0AoADISggADQCgAQhKSAANAKABSEqIAA0AoAGISsgADQCgAchLCAAQYAIajQCACEtIABBgAlqNAIAIS4gAEGACmo0AgAhLyAAQYALajQCACEwIABBgAxqNAIAITEgAEGADWo0AgAhMiAAQYAOajQCACEzIABBgA9qNAIAITQgAEGAEGo0AgAhNSAAQYARajQCACE2IAQ0AoABITcgBDQCgAIhOCAENAKAAyE5IAQ0AoAEITogBDQCgAUhOyAENAKABiE8IAQ0AoAHIT0gBEGACGo0AgAhPiAEQYAJajQCACE/IARBgApqNAIAIUAgBEGAC2o0AgAhQSAEQYAMajQCACFCIARBgA1qNAIAIUMgBEGADmo0AgAhRCAEQYAPajQCACFFIARBgBBqNAIAIUYgBEGAEWo0AgAhR0ERIQQDQCAMIAVByABsaiIIIAQiAEECdGogByAAQZABbGoiBDQCjAEgR35CIIinIAQ0AogBIEZ+QiCIp2ogBDQChAEgRX5CIIinaiAENAKAASBEfkIgiKdqIAQ0AnwgQ35CIIinaiAENAJ4IEJ+QiCIp2ogBDQCdCBBfkIgiKdqIAQ0AnAgQH5CIIinaiAENAJsID9+QiCIp2ogBDQCaCA+fkIgiKdqIAQ0AmQgPX5CIIinaiAENAJgIDx+QiCIp2ogBDQCXCA7fkIgiKdqIAQ0AlggOn5CIIinaiAENAJUIDl+QiCIp2ogBDQCUCA4fkIgiKdqIAQ0AkwgN35CIIinaiAENAJIICV+QiCIp2ogBDQCRCA2fkIgiKdqIAQ0AkAgNX5CIIinaiAENAI8IDR+QiCIp2ogBDQCOCAzfkIgiKdqIAQ0AjQgMn5CIIinaiAENAIwIDF+QiCIp2ogBDQCLCAwfkIgiKdqIAQ0AiggL35CIIinaiAENAIkIC5+QiCIp2ogBDQCICAtfkIgiKdqIAQ0AhwgLH5CIIinaiAENAIYICt+QiCIp2ogBDQCFCAqfkIgiKdqIAQ0AhAgKX5CIIinaiAENAIMICh+QiCIp2ogBDQCCCAnfkIgiKdqIAQ0AgQgJn5CIIinaiAENAIAICR+QiCIp2o2AgAgAEEBayEEIAANAAsgBQRAIAhByABrIgAgADQCRCIkQoOoie4GfiAINAIAIiVCy4GU8fv/////AH58Qh+IPgJEIAggADQCQCImQpDthuMDfiAINAIEIidC+Nfzhgd+fEIfiD4CBCAIICRCtf7rjgR+ICVCg6iJ7gZ+fEIfiD4CACAAICZC+Nfzhgd+ICdC8JL5nPz/////AH58Qh+IPgJAIAggADQCPCIkQp6B88ACfiAINAIIIiVC+ty1zAd+fEIfiD4CCCAAICRC+ty1zAd+ICVC4v6Mv/3/////AH58Qh+IPgI8IAAgADQCOCIkQqeB9e4HfiAINAIMIiVC+6Lcxf7/////AH58Qh+IPgI4IAggJEKF3aO6AX4gJUKngfXuB358Qh+IPgIMIAAgADQCNCIkQrbBtPsHfiAINAIQIiVCrfyTn///////AH58Qh+IPgI0IAggJELTg+zgAH4gJUK2wbT7B358Qh+IPgIQIAAgADQCMCIkQr/8kf8HfiAINAIUIiVCyceG1v//////AH58Qh+IPgIwIAggJEK3uPkpfiAlQr/8kf8HfnxCH4g+AhQgACAANAIsIiRC4uTy/wd+IAg0AhgiJULH+7rx//////8AfnxCH4g+AiwgCCAkQrmExQ5+ICVC4uTy/wd+fEIfiD4CGCAIIAA0AigiJEKj++QDfiAINAIcIiVCk43//wd+fEIfiD4CHCAAICRCk43//wd+ICVC3YSb/P//////AH58Qh+IPgIoCyAFQQFqIgVBIEcNAAsgASgCECIEIAYiBUoNAAsLIAEgA0GANmxqQbDZAGoiACAAIARBgBJsakGAEhAEIANBAWshACADDQALDAELIAVBA3EiAwRAA0AgASAAQYA2bGpBsNkAaiIIIAggBEGAEmxqQYASEAQgAEEBayEAIAZBAWoiBiADRw0ACwsgBUEESQ0AA0AgASAAQYA2bGoiBUGw2QBqIgYgBiAEQYASbCIDakGAEhAEIAVBsCNqIgYgAyAGakGAEhAEIAVB0BJrIgYgAyAGakGAEhAEIAVB0MgAayIFIAMgBWpBgBIQBCAAQQNGIQUgAEEEayEAIAVFDQALCyMAQaAFayIVJAACQCABIgMoAgAiEEUNACADKAIQIgFBAEwNACADQbgJaiEZIBBB3ABsQYwBaiEaA0AgEEEBayEQIAFBAEoEQCAaIBdBpH9saiEdIBBBqAFsIRggAyAQQQR0aiEMQQAhDQNAIANBADYCvLECIAMgAyAQQYAkbGogDUGAEmxqIg9BsMUBaiIFNgK4jQIgAyAdIA1BuAFsIghqaiEJQb8EIQADQCADIAAiAUECdCIAaiIGQbyfAmogACAFaigCACIEIARBH3UiAHMgAGsiADYCACAGQbyNAmogBKwiJCAkfkKAgICABHxCH4g+AgAgAygCvLECIgYgAEgEQCADIAA2AryxAiAAIQYLIAFBAWshACABDQALIAMgCGogEEHcAGxqIhFBFTYC1AEgFSANQdACbCISIBhqakGoARAHAkAgAygCCEEDRw0AIAMoAkghBCADIA1BAnRqIghBmLQCaiAGNgIAQcAEIQFBACEFA0AgAUECdCEAIANBvI0CaiIGIAFBBGsiAUECdGooAgBBCnUgACAGaiIAQQxrKAIAQQp1IABBBGsoAgBBCnUgBWogAEEIaygCAEEKdWpqaiEFIAENAAsgBEHcAGxBgDVqIQsgCEHAsQJqAn9BACAFRQ0AGiAFt0RoXxwAAACgPqIQDkScRK3+Qi7mP6MiSJlEAAAAAAAA4EFjBEAgSKoMAQtBgICAgHgLNgIAIAsoAlQhBUEUIQADQEEAIQoCf0EAIAUgCyAAIghBAnQiE2ooAgAiBEwNABogBSAEayIHQQNxIQ5BACEGQQAhACAFIAQiAUF/c2pBA08EQCAHQXxxIRRBACEFA0AgAyABQQJ0aiIHQciNAmooAgBBCnUgB0G8jQJqKAIAQQp1IABqIAdBwI0CaigCAEEKdWogB0HEjQJqKAIAQQp1amohACABQQRqIQEgBUEEaiIFIBRHDQALCyAOBEADQCADIAFBAnRqQbyNAmooAgBBCnUgAGohACABQQFqIQEgBkEBaiIGIA5HDQALC0EAIABFDQAaIAC3RGhfHAAAAKA+ohAORJxErf5CLuY/oyJImUQAAAAAAADgQWMEQCBIqgwBC0GAgICAeAshACADIA1B1ABsaiATaiIBQcixAmogADYCAAJAIBIgFWogGGogCEEDdGorAwAiSEQAAAAAAAAAAGENACBIEA5EnESt/kIu5j+jIkiZRAAAAAAAAOBBYwRAIEiqIQoMAQtBgICAgHghCgsgAUHwsgJqIAo2AgAgCEEBayEAIAQhBSAIDQALIA1BAUcNACADKAKYtAJBAEdBA0ECIAMoApy0AhtqIAMoAsCxAiADKALEsQJrIgAgAEEfdSIAcyAAa0EKSWogAygC0LECIAMoAqSyAmsiACAAQR91IgBzIABrIgAgAygC1LECIAMoAqiyAmsiASABQR91IgFzIAFrIgEgAygC5LECIAMoAriyAmsiBCAEQR91IgRzIARrIgQgAygClLICIAMoAuiyAmsiBSAFQR91IgVzIAVrIAMoApiyAiADKALssgJrIgUgBUEfdSIFcyAFa2ogAygCkLICIAMoAuSyAmsiBSAFQR91IgVzIAVraiADKAKMsgIgAygC4LICayIFIAVBH3UiBXMgBWtqIAMoAoiyAiADKALcsgJrIgUgBUEfdSIFcyAFa2ogAygChLICIAMoAtiyAiIFayIGIAZBH3UiBnMgBmtqIAMoAoCyAiADKALUsgJrIgYgBkEfdSIGcyAGa2ogAygC/LECIAMoAtCyAmsiBiAGQR91IgZzIAZraiADKAL4sQIiBiADKALMsgJrIgggCEEfdSIIcyAIa2ogAygC9LECIAMoAsiyAiIIayIKIApBH3UiCnMgCmtqIAMoAvCxAiADKALEsgIiCmsiByAHQR91IgdzIAdraiADKALssQIgAygCwLICayIHIAdBH3UiB3MgB2tqIAMoAuixAiIHIAMoAryyAmsiCyALQR91IgtzIAtramogAygC4LECIAMoArSyAiILayIOIA5BH3UiDnMgDmtqIAMoAtyxAiADKAKwsgIiDmsiEiASQR91IhJzIBJraiADKALYsQIiEiADKAKssgJrIhMgE0EfdSITcyATa2pqaiADKALMsQIgAygCoLICIhNrIhQgFEEfdSIUcyAUa2ogAygCyLECIhQgAygCnLICayIWIBZBH3UiFnMgFmtqQeQASWpBBkcEQCAMQgA3AnwgDEIANwKEAQwBCyAMQQA2AnwgDCAAIAFqIAMoAtyxAiAOayIAIABBH3UiAHMgAGtqIBIgAygCrLICayIAIABBH3UiAHMgAGtqIAMoAsyxAiATayIAIABBH3UiAHMgAGtqIBQgAygCnLICayIAIABBH3UiAHMgAGtqQQpJIAMoAoCzAiADKALUswJrIgAgAEEfdSIAcyAAayADKAKEswIgAygC2LMCayIAIABBH3UiAHMgAGtqIAMoAvyyAiADKALQswJrIgAgAEEfdSIAcyAAa2ogAygC+LICIAMoAsyzAmsiACAAQR91IgBzIABraiADKAL0sgIgAygCyLMCayIAIABBH3UiAHMgAGtqIAMoAvCyAiADKALEswJrIgAgAEEfdSIAcyAAa2pBCklxNgJ8IAxBADYCgAEgDCADKALwsQIgCmsiACAAQR91IgBzIABrIARqIAMoAuyxAiADKALAsgJrIgAgAEEfdSIAcyAAa2ogByADKAK8sgJrIgAgAEEfdSIAcyAAa2ogAygC4LECIAtrIgAgAEEfdSIAcyAAa2pBCkkgAygClLMCIAMoAuizAmsiACAAQR91IgBzIABrIAMoApizAiADKALsswJrIgAgAEEfdSIAcyAAa2ogAygCkLMCIAMoAuSzAmsiACAAQR91IgBzIABraiADKAKMswIgAygC4LMCayIAIABBH3UiAHMgAGtqIAMoAoizAiADKALcswJrIgAgAEEfdSIAcyAAa2pBCklxNgKAASAMQQA2AoQBIAwgAygCgLICIAMoAtSyAmsiACAAQR91IgBzIABrIAMoAoSyAiAFayIAIABBH3UiAHMgAGtqIAMoAvyxAiADKALQsgJrIgAgAEEfdSIAcyAAa2ogBiADKALMsgJrIgAgAEEfdSIAcyAAa2ogAygC9LECIAhrIgAgAEEfdSIAcyAAa2pBCkkgAygCqLMCIAMoAvyzAmsiACAAQR91IgBzIABrIAMoAqyzAiADKAKAtAJrIgAgAEEfdSIAcyAAa2ogAygCpLMCIAMoAvizAmsiACAAQR91IgBzIABraiADKAKgswIgAygC9LMCayIAIABBH3UiAHMgAGtqIAMoApyzAiADKALwswJrIgAgAEEfdSIAcyAAa2pBCklxNgKEASAMQQA2AogBIAwgAygClLICIAMoAuiyAmsiACAAQR91IgBzIABrIAMoApiyAiADKALssgJrIgAgAEEfdSIAcyAAa2ogAygCkLICIAMoAuSyAmsiACAAQR91IgBzIABraiADKAKMsgIgAygC4LICayIAIABBH3UiAHMgAGtqIAMoAoiyAiADKALcsgJrIgAgAEEfdSIAcyAAa2pBCkkgAygCvLMCIAMoApC0AmsiACAAQR91IgBzIABrIAMoAsCzAiADKAKUtAJrIgAgAEEfdSIAcyAAa2ogAygCuLMCIAMoAoy0AmsiACAAQR91IgBzIABraiADKAK0swIgAygCiLQCayIAIABBH3UiAHMgAGtqIAMoArCzAiADKAKEtAJrIgAgAEEfdSIAcyAAa2pBCklxNgKIAQtB/x8gAygCkAQgAygCAG0iBCAEQf8fThshACADKAK0jQIiBQRAQQAhAUH/HyAAISMgAygCsI0CIgYgBUEDdEF2bWoiBSEiAn8gDCANQQN0akGQEWorAwBEzczMzMzMCECiIAS3oSJImUQAAAAAAADgQWMEQCBIqgwBC0GAgICAeAsiBEHlAE4EQCAGQQZsQQptIgEgBCABIARIGyEBCyAjICIgASABIAVIG2oiACAAQf8fThshAAsgGSANQbABbGogEEHYAGxqQdgAEAcgAyANQbgCbGogEEGcAWxqQZgMakGcARAHIAlCADcCCCAJQgA3AgAgEUIANwKsASARQQA2AqQBIBFCADcCnAEgEUIANwK0ASARQgA3ArwBIBFCADcCxAEgEUIANwLMASADKAK8sQIEQCAAIQogD0GwEWohBiADIA1BuAFsakGcAWoiFCAQQdwAbGohCUH8LygCACEWQeQvKAIAIRtB+AAhEkGIfyEPIANBuI0CaiEeA0BBoI0GIQgCQCADIBJBAXYiEyAPaiIfQf8AaiIAQQJ0akGgvAJqNAIAIiQgAzQCvLECfkKAgICACHxCIIinQZSKCkoNACAeIABBA3RqQegmaiEHIAMoAriNAiELQQAhAEEAIQUDQAJ/IAsgAEECdCIEaigCACIBIAFBH3UiAXMgAWutICR+QoCAgIAIfEIgiKciAUGPzgBMBEAgAyABQQJ0akGgwAJqKAIADAELIAcrAwAgAyAEakG8nwJqKAIAt6JEaF8cAAAAAD6iIkggSJ+inyJImUQAAAAAAADgQWMEQCBIqgwBC0GAgICAeAshASAEIAZqIAE2AgAgBSABIAEgBUgbIQUgAEEBaiIAQcAERw0AC0HABCEAIAVBgMAASg0AAkACQAJAAkADQCAARQRAIAlBADYCCCAAIQQMAgsCQCAAQQJ0IAZqIgFBBGsoAgAEQCAAIQQMAQsgBiAAQQJrIgRBAnRqKAIABEAgACEEDAELIAFBDGsoAgANACAGIABBBGsiAEECdGooAgBFDQELC0EAIQsgCUEANgIIIARBA0wNAAJAAkADQCAEQQJ0IAZqIgBBBGsoAgBBAUoNASAAQQhrKAIAQQFKDQEgAEEMaygCAEEBSg0BIAYgBEEEayIAQQJ0aigCAEECTg0BIAkgC0EBaiILNgIIIARBB0shASAAIQQgAQ0ACyAJIARBAXU2AgQMAQsgCSAEQQF1NgIEIAtFDQILQQAhAUEAIQcgBCEFQQAhCANAIAFBAkEBIAYgBUECdCIcaiIAKAIAIg4bIA5BAEcgBiAcQQRyaigCACIcGyAAKAIIIiBBAEdqIAAoAgwiAEEAR2oiIWogFiAcQQF0IA5qICBBAnRqIABBA3RqIgBqLQAAaiEBIAcgACAbai0AAGogIWohByAFQQRqIQUgCEEBaiIIIAtHDQALQQAhBSABIAdMDQIMAwsgCSAEQQF1NgIEC0EAIQELQQEhBSABIQcLIAkgBTYCMAJAIARFBEAgCUIANwIgIAkoAjwhAQwBCyADKAJIQdwAbEGANWohCEEAIQADQCAAIgVBAWohACAIIAVBAnRqKAIAIARIDQALQQAhAQJAIAVBA3QiC0GAMGooAgAiAEUNAANAIAQgAEECdCAIaigCBE4EQCAAIQEMAgsgAEEBayIADQALCyAJIAE2AiAgCSABQQJ0IAhqQQRqIggoAgAiATYCPCALQYQwaigCACEAAkAgBUEFSQ0AA0AgAEECdCAIaigCBCAETA0BIABBAWsiAA0AC0EAIQALIAkgBDYCRCAJIAA2AiQgCSAAQQJ0IAhqKAIENgJAC0EAIQggCUEANgIcIAlCADcCFEEAIQsgAQRAIAkgBkEAIAEQBiILNgIUCyABIAkoAkAiDkkEQCAJIAYgASAOEAYiCDYCGAtBACEFQQAhACAEIA5LBEAgCSAGIA4gBBAGIgA2AhwLIAsEQCAGQQAgASALEAMhBQsgCARAIAYgASAOIAgQAyAFaiEFCyAABH8gBiAOIAkoAkQgABADIAVqBSAFCyAHaiEICyAPIB8gCCAKSCIAGyEPIBMgEiATayAAGyISQQFKDQALIAkgDzYCSCAUIBBB3ABsaigCEEECdCIBQZAyaigCACEAIAFB0DFqKAIAIQECQAJAIA1FBEAgAEEFbCIAIAFBC2xqIQQMAQtBACABQQVsIAMgEEEEdGoiBSgCgAEbQQAgAUEGbCAFKAJ8G2pBACAAQQVsIgAgBSgChAEbaiEEIAUoAogBDQELIAAgBGohBAsgCSAENgI0IAogBGsiDkEASARAIAkgCSgCSEEBazYCSAsgBiEKQfwvKAIAIQ9B5C8oAgAhEiADQbiNAmohEwNAIAkgCSgCSCIAQQFqNgJIQYCAASEGIAMgAEGAAWoiAEECdGpBoLwCajQCACIkIAM0AryxAn5CgICAgAh8QiCIp0GUigpMBEAgEyAAQQN0akHoJmohBSADKAK4jQIhCEEAIQBBACEGA0ACfyAIIABBAnQiBGooAgAiASABQR91IgFzIAFrrSAkfkKAgICACHxCIIinIgFBj84ATARAIAMgAUECdGpBoMACaigCAAwBCyAFKwMAIAMgBGpBvJ8CaigCALeiRGhfHAAAAAA+oiJIIEifop8iSJlEAAAAAAAA4EFjBEAgSKoMAQtBgICAgHgLIQEgBCAKaiABNgIAIAYgASABIAZIGyEGIABBAWoiAEHABEcNAAsLQcAEIQAgBkGAwABKDQACQAJAAkACQANAIABFBEAgCUEANgIIIAAhAQwCCwJAIABBAnQgCmoiBEEEaygCAARAIAAhAQwBCyAKIABBAmsiAUECdGooAgAEQCAAIQEMAQsgBEEMaygCAA0AIAogAEEEayIAQQJ0aigCAEUNAQsLQQAhBCAJQQA2AgggAUEDTA0AAkACQANAIAFBAnQgCmoiAEEEaygCAEEBSg0BIABBCGsoAgBBAUoNASAAQQxrKAIAQQFKDQEgCiABQQRrIgBBAnRqKAIAQQJODQEgCSAEQQFqIgQ2AgggAUEHSyEFIAAhASAFDQALIAkgAUEBdTYCBAwBCyAJIAFBAXU2AgQgBEUNAgtBACEFQQAhCCABIQZBACEAA0AgBUECQQEgCiAGQQJ0IhRqIgcoAgAiCxsgC0EARyAKIBRBBHJqKAIAIhQbIAcoAggiFkEAR2ogBygCDCIHQQBHaiIbaiAPIBRBAXQgC2ogFkECdGogB0EDdGoiB2otAABqIQUgCCAHIBJqLQAAaiAbaiEIIAZBBGohBiAAQQFqIgAgBEcNAAtBACEGIAUgCEwNAgwDCyAJIAFBAXU2AgQLQQAhBQtBASEGIAUhCAsgCSAGNgIwAkAgAUUEQCAJQgA3AiAgCSgCPCEFDAELIAMoAkhB3ABsQYA1aiEGQQAhAANAIAAiBEEBaiEAIAYgBEECdGooAgAgAUgNAAtBACEFAkAgBEEDdCIHQYAwaigCACIARQ0AA0AgASAAQQJ0IAZqKAIETgRAIAAhBQwCCyAAQQFrIgANAAsLIAkgBTYCICAJIAVBAnQgBmpBBGoiBigCACIFNgI8IAdBhDBqKAIAIQACQCAEQQVJDQADQCAAQQJ0IAZqKAIEIAFMDQEgAEEBayIADQALQQAhAAsgCSABNgJEIAkgADYCJCAJIABBAnQgBmooAgQ2AkALQQAhACAJQQA2AhwgCUIANwIUQQAhByAFBEAgCSAKQQAgBRAGIgc2AhQLIAUgCSgCQCILSQRAIAkgCiAFIAsQBiIANgIYC0EAIQZBACEEIAEgC0sEQCAJIAogCyABEAYiBDYCHAsgBwRAIApBACAFIAcQAyEGCyAABEAgCiAFIAsgABADIAZqIQYLIAQEfyAKIAsgCSgCRCAEEAMgBmoFIAYLIAhqIgAgDkoNAAsgCSAJKAI0IABqIgA2AgAgESAANgKcAQsgAyADKAKwjQIgAygCkAQgAygCAG0gESgCnAFrajYCsI0CIBEgESgC5AFB0gFqNgKoASANQQFqIg0gAygCECIBSA0ACwsgF0EBaiEXIBANAAsLAkAgAygCACIEQQJHDQAgAy0AkARBAXFFDQAgAyADKAKwjQJBAWo2ArCNAgsgAyADKAKwjQIiACADKAK0jQIiASAAIAFIGyIFIAVBCG8iBWs2ArCNAgJAAkAgBSAAIAFrIgBBACAAQQBKG2oiAARAIAMoApwBIABqIgFB/x9JDQECQCADKAIQIgZBAEwNACAEQQBMDQBBACEFA0AgAyAFQbgBbGpBnAFqIQhBACEBA0ACQCAARQRAQQAhAAwBCyAIIAFB3ABsaiIKQf8fIAooAgAiCmsiByAAIAAgB0obIgcgCmo2AgAgACAHayEAIAFBAWoiASAERw0BCwsgBUEBaiIFIAZHDQALCyADIAA2AngLDAELIAMgATYCnAELIBVBoAVqJABBACEEIwBBoANrIggkAAJAIAMoAgAiBUEATA0AIAMoAhAiAEEATA0AA0BBACEGIABBAEoEQANAIAMgBEGAJGxqIAZBgBJsaiIAQbDFAWohASAAQbARaiEFQQAhAANAAkAgASAAQQJ0IgpqKAIAQQBODQAgBSAKaiIKKAIAIgdBAEwNACAKQQAgB2s2AgALAkAgASAAQQFyQQJ0IgpqKAIAQQBODQAgBSAKaiIKKAIAIgdBAEwNACAKQQAgB2s2AgALIABBAmoiAEHABEcNAAsgBkEBaiIGIAMoAhAiAEgNAAsgAygCACEFCyAEQQFqIgQgBUgNAAsLIAhBCGogA0H0AGoiBkGYAxAEIANB4ABqIgBB/w9BCxACIAAgAygCCEECEAIgACADKAIMQQIQAiAAIAMoAkxFQQEQAiAAIAMoAkRBBBACIAAgAygCSEEDb0ECEAIgACADKAIgQQEQAiAAIAMoAlBBARACIAAgAygCFEECEAIgACADKAJUQQIQAiAAIAMoAlhBARACIAAgAygCXEEBEAIgACADKAIcQQIQAgJAIAMoAghBA0YEQCAAQQBBCRACIAgoAgghASADKAIAQQJGBEAgACABQQMQAgwCCyAAIAFBBRACDAELIABBAEEIEAIgCCgCCCEBIAMoAgBBAkYEQCAAIAFBAhACDAELIAAgAUEBEAILAkAgAygCCEEDRw0AIAMoAgBBAEwNAEEAIQQDQCAAIAhBCGogBEEEdGoiASgCCEEBEAIgACABKAIMQQEQAiAAIAEoAhBBARACIAAgASgCFEEBEAIgBEEBaiIEIAMoAgBIDQALC0EAIQECQCADKAIQIgRBAEwNACADKAIAIgVBAEwNAANAIAVBAEoEQCABQbgBbCAIakEwaiEKQQAhBANAIAAgCiAEQdwAbGoiBSgCAEEMEAIgACAFKAIEQQkQAiAAIAUoAgxBCBACIAAgBSgCEEEEQQkgAygCCEEDRhsQAiAAQQBBARACIAAgBSgCFEEFEAIgACAFKAIYQQUQAiAAIAUoAhxBBRACIAAgBSgCIEEEEAIgACAFKAIkQQMQAiADKAIIQQNGBEAgACAFKAIoQQEQAgsgACAFKAIsQQEQAiAAIAUoAjBBARACIARBAWoiBCADKAIAIgVIDQALIAMoAhAhBAsgAUEBaiIBIARIDQALIAhBCGogBkGYAxAEIARBAEwNACAFQQBMDQAgA0G4CWohCUEAIQEDQCAFQQBKBEAgAUG4AWwgCGpBMGohGEEAIQQDQCADIARBgCRsaiABQYASbGohECAYIARB3ABsaiIKKAIQQQJ0IgVBkDJqKAIAIQYgBUHQMWooAgAhBQJAAkACQAJAAkACQAJAIAEEQCAEQQR0IAhqKAIQDQELIAAgCSABQbABbGogBEHYAGxqIgcoAgAgBRACIAAgBygCBCAFEAIgACAHKAIIIAUQAiAAIAcoAgwgBRACIAAgBygCECAFEAIgACAHKAIUIAUQAiABRQ0BCyAEQQR0IAhqKAIUDQELIAAgCSABQbABbGogBEHYAGxqIgcoAhggBRACIAAgBygCHCAFEAIgACAHKAIgIAUQAiAAIAcoAiQgBRACIAAgBygCKCAFEAIgAUUNAQsgBEEEdCAIaigCGA0BCyAAIAkgAUGwAWxqIARB2ABsaiIFKAIsIAYQAiAAIAUoAjAgBhACIAAgBSgCNCAGEAIgACAFKAI4IAYQAiAAIAUoAjwgBhACIAFFDQELIARBBHQgCGooAhwNAQsgACAJIAFBsAFsaiAEQdgAbGoiBSgCQCAGEAIgACAFKAJEIAYQAiAAIAUoAkggBhACIAAgBSgCTCAGEAIgACAFKAJQIAYQAgsgEEGwEWohECADKAJIIQUgACgCCEEDdCAAKAIQa0EgaiETIAooAgRBAXQiBkEASgRAIAVB3ABsQYA1aiIFIAooAiAiB0ECdGooAgQhGSAHIAooAiRqQQJ0IAVqKAIIIRpBACEFA0ACQCAKIAUgGU4gBSAaTmpBAnRqKAIUIg5FDQAgECAFQQJ0IgdqKAIAIg0gDUEfdSIMcyAMayEMIBAgB0EEcmooAgAiESARQR91IgdzIAdrIQsgDUEATCEPIBFBAEwhFyAOQRhsQdApaiIHKAIEIRUgDkEQTgRAIAAgBygCEEEPIAsgC0EOSyINGyIRIBVBDyAMIAxBDksiDhsiEmxqIhVBAXRqLwEAIAcoAhQgFWotAAAQAiAAIAtBD2sgDEEPa0EAIA4bIgxBAXQgD3IgDCASGyIMIAcoAggiB3RyIAwgDRsiDEEBdCAXciAMIBEbIBFBAEcgEkEAR2ogB0EAIA4baiAHQQAgDRtqEAIMAQsgACAHKAIQIAwgFWwgC2oiDEEBdGovAQAiC0EBdCAPciALIA0bIgtBAXQgF3IgCyARGyAHKAIUIAxqLQAAIBFBAEcgDUEAR2pqEAILIAVBAmoiBSAGSA0ACwsgCigCCEECdCAGaiIRIAZKBEAgCigCMEEYbEHQKWoiBSgClAYhCyAFKAKQBiEOA0AgACAOIBAgBkECdCIHQQRyaigCACIFIAVBH3UiDXMgDWtBAXQgByAQaiIMKAIAIgcgB0EfdSINcyANa2ogDCgCCCINIA1BH3UiD3MgD2tBAnRqIAwoAgwiDCAMQR91Ig9zIA9rQQN0aiIPQQF0ai8BACALIA9qLQAAEAIgACAHQR92Ig9BAXQgBUEATHIgDyAFGyIPQQF0IA1BAExyIA8gDRsiD0EBdCAMQQBMciAPIAwbIA1BAEdBAkEBIAcbIAdBAEcgBRtqIAxBAEdqEAIgBkEEaiIGIBFIDQALCwJAIAooAgAgCigCNGsgEyAAKAIIQQN0IAAoAhBrQSBqa2oiBkUNACAGIAZBIG0iBUEFdGshCiAGQR9qQT9PBEADQCAAQX9BIBACIAVBAWsiBQ0ACwsgCkUNACAAQX8gCnRBf3MgChACCyAEQQFqIgQgAygCACIFSA0ACyADKAIQIQQLIAFBAWoiASAESA0ACwsgCEGgA2okACACIAMoAmg2AgAgA0EANgJoIAMoAmALCwAgACgCEEHABGwLigEBAX9BAyECAn8CQEHQMigCACAARg0AQdQyKAIAIABGDQBB2DIoAgAgAEYNAEECIQJB3DIoAgAgAEYNAEHgMigCACAARg0AQeQyKAIAIABGDQBBACECQegyKAIAIABGDQBB7DIoAgAgAEYNAEF/QfAyKAIAIABHDQEaC0F/IAIgASACEA1BAEgbCwvsEgMEfAl/An4jAEEgayIJJAAgCSABNgIEIAkgADYCACAJQoCAgIAQNwIUIAlCgAE3AgwgCSADNgIMIAkgAjYCCAJ/IAkoAgwhAUHYMigCACEMQdQyKAIAIQ1BAyEDAkACQEHQMigCACIOIAkoAgQiAEYNACAAIA1GDQAgACAMRg0AQQIhA0HcMigCACAARg0AQeAyKAIAIABGDQBB5DIoAgAgAEYNAEEAIQNB6DIoAgAgAEYNAEHsMigCACAARg0AQfAyKAIAIABHDQELQQAgASADEA1BAEgNARpBACEDAkBBiO0FEAgiAkUNACACQQRrLQAAQQNxRQ0AIAJBiO0FEAcLIAJFDQAjAEEQayIKJAAgAkIANwKAjQUgAkGIzQVqQYAgEAdBHyEBA0AgASIIQQF0QQFyIQtBwAAhAUE/IQADQCAKQREgAWsgC2y3RGZtQ1T7Iak/ohASRAAAAABlzc1BoiIEOQMIIAREAAAAAAAA4D9EAAAAAAAA4L8gBEQAAAAAAAAAAGYboCIEvSIRQjSIp0H/D3EiAUH/B2shDwJAIAFBswhPBEAgCiAEOQMIDAELIAFB/gdNBEAgCiARQoCAgICAgICAgH+DNwMIDAELIBEgD60iEoZC/////////weDUARAIAogBDkDCAwBCyAKQoCAgICAgIB4IBKHIBGDNwMICyACIAhBCHRqIAAiAUECdGpBiI0FagJ/IAorAwhEfXoE6AsuAUCiIgSZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CzYCACABQQFrIQAgAQ0ACyAIQQFrIQEgCA0ACyAKQRBqJAAgAkHg+ARqIQtBESEAA0AgACIBQQF0QQFytyEFQSQhAANAIAsgAUGQAWxqIABBAWsiAEECdGoCfyMAQRBrIggkAAJAIAC3RAAAAAAAAOA/oEStROdKGFe2P6IiBL1CIIinQf////8HcSIKQfvDpP8DTQRAIApBgIDA8gNJDQEgBEQAAAAAAAAAAEEAEAkhBAwBCyAKQYCAwP8HTwRAIAQgBKEhBAwBCwJAAkACQAJAIAQgCBATQQNxDgMAAQIDCyAIKwMAIAgrAwhBARAJIQQMAwsgCCsDACAIKwMIEAohBAwCCyAIKwMAIAgrAwhBARAJmiEEDAELIAgrAwAgCCsDCBAKmiEECyAIQRBqJAAgBCAAQQF0QRNqt0SBROdKGFemP6IgBaIQEqJEAADA////30GiIgSZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CzYCACAADQALIAFBAWshACABDQALQf8AIQEgAkG4jQJqIQpBgAEhCANAIAogASIAQQN0akHoJmoCfEGAASAIa7dEAAAAAAAA0D+iIgS9QjSIp0H/D3EiAUHJB2siCEE/TwRAIAREAAAAAAAA8D+gIAhBAEgNARogBL0hEQJAIAFBiQhJDQBEAAAAAAAAAAAgEUKAgICAgICAeFENAhogBEQAAAAAAADwP6AgAUH/D08NAhogEUIAWQRAIwBBEGsiAUQAAAAAAAAAcDkDCCABKwMIRAAAAAAAAABwogwDCyARQoCAgICAgLPIQFQNACMAQRBrIgFEAAAAAAAAABA5AwggASsDCEQAAAAAAAAAEKIMAgsgAUEAIBFCAYZCgICAgICAgI2Bf1gbIQELIARBoOIAKwMAIgUgBKAiBiAFoaEiBCAEoiIFIAWiIARByOIAKwMAokHA4gArAwCgoiAFIARBuOIAKwMAokGw4gArAwCgoiAEQajiACsDAKIgBr0iEqdBBHRB8A9xIghB0OIAaisDAKCgoCEEIAhB2OIAaikDACASQi2GfCERIAFFBEACfCASQoCAgIAIg1AEQCARQoCAgICAgIAIfb8iBSAEoiAFoCIEIASgDAELIBFCgICAgICAgPA/fL8iBSAEoiIGIAWgIgREAAAAAAAA8D9jBHwjAEEQayIBIRAgAUKAgICAgICACDcDCCAQIAErAwhEAAAAAAAAEACiOQMIRAAAAAAAAAAAIAREAAAAAAAA8D+gIgcgBiAFIAShoCAERAAAAAAAAPA/IAehoKCgRAAAAAAAAPC/oCIEIAREAAAAAAAAAABhGwUgBAtEAAAAAAAAEACiCwwBCyARvyIFIASiIAWgCyIEOQMAIAQgBKAiBEQAAMD////fQWQhASAKIABBAnRqQeguakH/////BwJ/IAREAAAAAAAA4D+gIgSZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyABGzYCACAAQQFrIQEgACIIDQALQZDOACEAIAJBoMACaiEBA0AgASAAQQFrIghBAnRqAn8gCLciBJ8gBKKfRA+cM6K0N7i/oEQAAAAAAADgP6AiBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLNgIAIAEgAEECayIAQQJ0agJ/IAC3IgSfIASin0QPnDOitDe4v6BEAAAAAAAA4D+gIgSZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CzYCACAADQALIAIgCSgCADYCACACIAkoAgQiADYCBCACIAkoAgg2AhQgAiAJKAIMIgg2AhggAiAJKAIQNgIcIAIgCSgCFDYCWCACIAkoAhg2AlwgAkIANwOwjQIgAkEANgJUIAJCADcCTCACQQE2AgwgAkEINgIoAn8CQCAAIA5GDQBBASEDIAAgDUYNAEECIQMgACAMRg0AQQIhAUEDQdwyKAIAIABGDQEaQQRB4DIoAgAgAEYNARpBBUHkMigCACAARg0BGkEAIQFBBkHoMigCACAARg0BGkEHQewyKAIAIABGDQEaQX8hA0EIQfAyKAIAIABGDQEaC0EDIQEgAwshAyACIAE2AgggAiADNgJIIAIgAUECdEHAMWooAgAiAzYCECACIAggARANNgJEIAJBQGsCfyAIt0QAAAAAAECPQKJEAAAAAAAAwD+iIAO3RAAAAAAAAIJAoiAAt6OiIgSZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIANgIAIAIgBCAAt6EiBDkDMCACIASaOQM4IAREAAAAAAAAAABhBEAgAkEANgIgC0GAIBAIIQAgAkEgNgJwIAJCADcCaCACQYAgNgJkIAIgADYCYCACQfQAakGYAxAHIAJBqAFBoAIgAigCAEEBRiIAG0HoAEGoASAAGyACKAIQQQJGGzYCjAQgAiEDCyADCyEAIAlBIGokACAACwQAQQQLBABBAgsWAQF/IAAoAmAiAQRAIAEQCwsgABALCwvXiQEiAEGACAv1AQEAAQABAAAAAQMCAwAAAAABAAIAAQADAAEAAQADAAIAAAABAwYDAwUFBQYAAAAAAAMAAgABAAEAAQABAAMAAgAAAAICBgMCBQUFBgAAAAAAAQACAAYABQADAAEABAAEAAcABQAHAAEABgABAAEAAAABAwYHAwMGBwYGBwgHBgcIBwADAAUAAQAGAAIAAwACAAUABAAEAAEAAwADAAIAAAADAwUHAwIEBQQEBQYGBQYHAQACAAoAEwAQAAoAAwADAAcACgAFAAMACwAEAA0AEQAIAAQADAALABIADwALAAIABwAGAAkADgADAAEABgAEAAUAAwACAEGACgskAQMGCAgJAwQGBwcIBgUHCAgJBwcICQkJBwcICQkKCAgJCgoKAEGwCgtFAwAEAAYAEgAMAAUABQABAAIAEAAJAAMABwADAAUADgAHAAMAEwARAA8ADQAKAAQADQAFAAgACwAFAAEADAAEAAQAAQABAEGACwskAgMGCAgJAwIECAgIBgQGCAgJCAgICQkKCAcICQoKCQgJCQsLAEGwCwtFBwAFAAkADgAPAAcABgAEAAUABQAGAAcABwAGAAgACAAIAAUADwAGAAkACgAFAAEACwAHAAkABgAEAAEADgAEAAYAAgAGAEGADAskAwMFBggJAwMEBQYIBAQFBgcIBgUGBwcIBwYHBwgJCAcICAkJAEGwDAugHQEAAgAKABcAIwAeAAwAEQADAAMACAAMABIAFQAMAAcACwAJAA8AFQAgACgAEwAGAA4ADQAWACIALgAXABIABwAUABMAIQAvABsAFgAJAAMAHwAWACkAGgAVABQABQADAA4ADQAKAAsAEAAGAAUAAQAJAAgABwAIAAQABAACAAAAAQMGCAkJCQoDBAYHCAkICAYGBwgJCgkJBwcICQoKCQoICAkKCgoKCgkJCgoLCwoLCAgJCgoKCwsJCAkKCgsLCwMABAAKABgAIgAhABUADwAFAAMABAAKACAAEQALAAoACwAHAA0AEgAeAB8AFAAFABkACwATADsAGwASAAwABQAjACEAHwA6AB4AEAAHAAUAHAAaACAAEwARAA8ACAAOAA4ADAAJAA0ADgAJAAQAAQALAAQABgAGAAYAAwACAAAAAgMFBwgJCAkDAwQGCAgHCAUFBgcICQgIBwYHCQgKCAkICAgJCQoJCggICQoKCwoLCAcHCAkKCgoIBwgJCgoKCgkABgAQACEAKQAnACYAGgAHAAUABgAJABcAEAAaAAsAEQAHAAsADgAVAB4ACgAHABEACgAPAAwAEgAcAA4ABQAgAA0AFgATABIAEAAJAAUAKAARAB8AHQARAA0ABAACABsADAALAA8ACgAHAAQAAQAbAAwACAAMAAYAAwABAAAABAMFBwgJCQkDAwQFBwcICAUEBQYHCAcIBgUGBgcICAgHBgcHCAgICQgHCAgICQgJCAcHCAgJCQoJCAgJCQkJCgEABQAOABUAIgAzAC4ARwAqADQARAA0AEMALAArABMAAwAEAAwAEwAfABoALAAhAB8AGAAgABgAHwAjABYADgAPAA0AFwAkADsAMQBNAEEAHQAoAB4AKAAbACEAKgAQABYAFAAlAD0AOABPAEkAQAArAEwAOAAlABoAHwAZAA4AIwAQADwAOQBhAEsAcgBbADYASQA3ACkAMAA1ABcAGAA6ABsAMgBgAEwARgBdAFQATQA6AE8AHQBKADEAKQARAC8ALQBOAEoAcwBeAFoATwBFAFMARwAyADsAJgAkAA8ASAAiADgAXwBcAFUAWwBaAFYASQBNAEEAMwAsACsAKgArABQAHgAsADcATgBIAFcATgA9AC4ANgAlAB4AFAAQADUAGQApACUALAA7ADYAUQBCAEwAOQA2ACUAEgAnAAsAIwAhAB8AOQAqAFIASABQAC8AOgA3ABUAFgAaACYAFgA1ABkAFwAmAEYAPAAzACQANwAaACIAFwAbAA4ACQAHACIAIAAcACcAMQBLAB4ANAAwACgANAAcABIAEQAJAAUALQAVACIAQAA4ADIAMQAtAB8AEwAMAA8ACgAHAAYAAwAwABcAFAAnACQAIwA1ABUAEAAXAA0ACgAGAAEABAACABAADwARABsAGQAUAB0ACwARAAwAEAAIAAEAAQAAAAEAAQQGBwgJCQoJCgsLDAwNDQMEBgcICAkJCQkKCgsMDAwGBgcICQkKCgkKCgsLDA0NBwcICQkKCgoKCwsLCwwNDQgHCQkKCgsLCgsLDAwNDQ4JCAkKCgoLCwsLDAsNDQ4OCQkKCgsLCwsLDAwMDQ0ODgoJCgsLCwwMDAwNDQ0OEBAJCAkKCgsLDAwMDA0NDg8PCgkKCgsLCw0MDQ0ODg4QDwoKCgsLDAwNDA0ODQ4PEBELCgoLDAwMDA0NDQ4PDw8QCwsLDAwNDA0ODg8PDxAQEAwLDA0NDQ4ODg4ODxAPEBANDAwNDQ0PDg4RDw8PERAQDAwNDg4ODw4PDxAQExITEAcADAASADUALwBMAHwAbABZAHsAbAB3AGsAUQB6AD8ADQAFABAAGwAuACQAPQAzACoARgA0AFMAQQApADsAJAATABEADwAYACkAIgA7ADAAKABAADIATgA+AFAAOAAhAB0AHAAZACsAJwA/ADcAXQBMADsAXQBIADYASwAyAB0ANAAWACoAKABDADkAXwBPAEgAOQBZAEUAMQBCAC4AGwBNACUAIwBCADoANABbAEoAPgAwAE8APwBaAD4AKAAmAH0AIAA8ADgAMgBcAE4AQQA3AFcARwAzAEkAMwBGAB4AbQA1ADEAXgBYAEsAQgB6AFsASQA4ACoAQAAsABUAGQBaACsAKQBNAEkAPwA4AFwATQBCAC8AQwAwADUAJAAUAEcAIgBDADwAOgAxAFgATABDAGoARwA2ACYAJwAXAA8AbQA1ADMALwBaAFIAOgA5ADAASAA5ACkAFwAbAD4ACQBWACoAKAAlAEYAQAA0ACsARgA3ACoAGQAdABIACwALAHYARAAeADcAMgAuAEoAQQAxACcAGAAQABYADQAOAAcAWwAsACcAJgAiAD8ANAAtAB8ANAAcABMADgAIAAkAAwB7ADwAOgA1AC8AKwAgABYAJQAYABEADAAPAAoAAgABAEcAJQAiAB4AHAAUABEAGgAVABAACgAGAAgABgACAAAAAwQFBwcICQkJCgoLCwsMDQQDBQYHBwgICAkJCgoKCwsFBQUGBwcICAgJCQoKCwsLBgYGBwcICAkJCQoKCgsLCwcGBwcICAkJCQkKCgoLCwsIBwcICAgJCQkJCgoLCwsMCQcICAgJCQkJCgoKCwsMDAkICAkJCQkKCgoKCgsLCwwJCAgJCQkJCgoKCgsLDAwMCQgJCQkJCgoKCwsLCwwMDAoJCQkKCgoKCgsLCwsMDQwKCQkJCgoKCgsLCwsMDAwNCwoJCgoKCwsLCwsLDAwNDQsKCgoKCwsLCwwMDAwMDQ0MCwsLCwsLCwwMDAwNDQwNDAsLCwsLCwwMDAwMDQ0NDQEABQAOACwASgA/AG4AXQCsAJUAigDyAOEAwwB4AREAAwAEAAwAFAAjAD4ANQAvAFMASwBEAHcAyQBrAM8ACQAPAA0AFwAmAEMAOgBnAFoAoQBIAH8AdQBuANEAzgAQAC0AFQAnAEUAQAByAGMAVwCeAIwA/ADUAMcAgwFtARoASwAkAEQAQQBzAGUAswCkAJsACAH2AOIAiwF+AWoBCQBCAB4AOwA4AGYAuQCtAAkBjgD9AOgAkAGEAXoBvQEQAG8ANgA0AGQAuACyAKAAhQABAfQA5ADZAIEBbgHLAgoAYgAwAFsAWAClAJ0AlAAFAfgAlwGNAXQBfAF5A3QDCABVAFQAUQCfAJwAjwAEAfkAqwGRAYgBfwHXAskCxAIHAJoATABJAI0AgwAAAfUAqgGWAYoBgAHfAmcBxgJgAQsAiwCBAEMAfQD3AOkA5QDbAIkB5wLhAtACdQNyA7cBBADzAHgAdgBzAOMA3wCMAeoC5gLgAtECyALCAt8AtAEGAMoA4ADeANoA2ACFAYIBfQFsAXgDuwHDArgBtQHABgQA6wLTANIA0AByAXsB3gLTAsoCxwZzA20DbAODDWEDAgB5AXEBZgC7ANYC0gJmAccCxQJiA8YGZwOCDWYDsgEAAAwACgAHAAsACgARAAsACQANAAwACgAHAAUAAwABAAMAAQQGCAkJCgoLCwsMDAwNCQMEBgcICQkJCgoKCwwLDAgGBgcICQkKCgsKCwsLDAwJCAcICQkKCgoLCwwMDA0NCgkICQkKCgsLCwwMDA0NDQkJCAkJCgsLDAsMDA0NDQ4KCgkJCgsLCwsMDAwMDQ0OCgoJCgoLCwsMDA0NDQ0PDwoKCgoLCwsMDA0NDQ0ODg4KCwoKCwsMDA0NDQ0ODQ4NCwsLCgsMDAwMDQ4ODg8PDgoMCwsLDAwNDg4ODg4ODQ4LDAwMDAwNDQ0NDw4ODg4QCw4MDAwNDQ4ODhAPDw8RDwsNDQsMDg4NDg4PEA8RDw4LCQgICQkKCgoLCwsLCwsLCA8ADQAuAFAAkgAGAfgAsgGqAZ0CjQKJAm0CBQIIBFgADgAMABUAJgBHAIIAegDYANEAxgBHAVkBPwEpARcBKgAvABYAKQBKAEQAgAB4AN0AzwDCALYAVAE7AScBHQISAFEAJwBLAEYAhgB9AHQA3ADMAL4AsgBFATcBJQEPARAAkwBIAEUAhwB/AHYAcADSAMgAvABgAUMBMgEdARwCDgAHAUIAgQB+AHcAcgDWAMoAwAC0AFUBPQEtARkBBgEMAPkAewB5AHUAcQDXAM4AwwC5AFsBSgE0ASMBEAEIAgoAswFzAG8AbQDTAMsAxAC7AGEBTAE5ASoBGwETAn0BEQCrAdQA0ADNAMkAwQC6ALEAqQBAAS8BHgEMAQICeQEQAE8BxwDFAL8AvQC1AK4ATQFBATEBIQETAQkCewFzAQsAnAK4ALcAswCvAFgBSwE6ATABIgEVARICfwF1AW4BCgCMAloBqwCoAKQAPgE1ASsBHwEUAQcBAQJ3AXABagEGAIgCQgE8ATgBMwEuASQBHAENAQUBAAJ4AXIBbAFnAQQAbAIsASgBJgEgARoBEQEKAQMCfAF2AXEBbQFpAWUBAgAJBBgBFgESAQsBCAEDAX4BegF0AW8BawFoAWYBZAEAACsAFAATABEADwANAAsACQAHAAYABAAHAAUAAwABAAMABAQGBwgJCQoKCwsLCwsMCQQEBQYHCAgJCQkKCgoKCggGBQYHBwgICQkJCQoKCgsHBwYHBwgICAkJCQkKCgoKBwgHBwgICAgJCQkKCgoKCwcJBwgICAgJCQkJCgoKCgoHCQgICAgJCQkJCgoKCgoLBwoICAgJCQkJCgoKCgoLCwgKCQkJCQkJCQkKCgoKCwsICgkJCQkJCQoKCgoKCwsLCAsJCQkJCgoKCgoKCwsLCwgLCgkJCQoKCgoKCgsLCwsICwoKCgoKCgoKCgsLCwsLCAsKCgoKCgoKCwsLCwsLCwgMCgoKCgoKCwsLCwsLCwsICAcHBwcHBwcHBwcICAgIBAEABQAEAAUABgAFAAQABAAHAAMABgAAAAcAAgADAAEAAQQEBQQGBQYEBQUGBQYGBg8ADgANAAwACwAKAAkACAAHAAYABQAEAAMAAgABAAAABAQEBAQEBAQEBAQEBAQEBABB6CkLBQIAAAACAEH5KQsMBAAACAQAAAMAAAADAEGQKgsNEAQAACIEAAADAAAAAwBBqCoLBjAEAABCBABByCoLBQQAAAAEAEHYKgsNUAQAAHAEAAAEAAAABABB8CoLDYAEAACgBAAABgAAAAYAQYgrCw2wBAAAAAUAAAYAAAAGAEGgKwsNMAUAAIAFAAAGAAAABgBBuCsLDbAFAAAABgAACAAAAAgAQdArCw0wBgAAsAYAAAgAAAAIAEHoKwsN8AYAAHAHAAAIAAAACABBgCwLDbAHAAAwCAAAEAAAABAAQZgsCwZwCAAAcAoAQbgsCwUQAAAAEABByCwLjQNwCwAAcA0AABAAAAAQAAAAAQAAAAEAAABwDgAAcBAAABAAAAAQAAAAAgAAAAMAAABwDgAAcBAAABAAAAAQAAAAAwAAAAcAAABwDgAAcBAAABAAAAAQAAAABAAAAA8AAABwDgAAcBAAABAAAAAQAAAABgAAAD8AAABwDgAAcBAAABAAAAAQAAAACAAAAP8AAABwDgAAcBAAABAAAAAQAAAACgAAAP8DAABwDgAAcBAAABAAAAAQAAAADQAAAP8fAABwDgAAcBAAABAAAAAQAAAABAAAAA8AAABwEQAAcBMAABAAAAAQAAAABQAAAB8AAABwEQAAcBMAABAAAAAQAAAABgAAAD8AAABwEQAAcBMAABAAAAAQAAAABwAAAH8AAABwEQAAcBMAABAAAAAQAAAACAAAAP8AAABwEQAAcBMAABAAAAAQAAAACQAAAP8BAABwEQAAcBMAABAAAAAQAAAACwAAAP8HAABwEQAAcBMAABAAAAAQAAAADQAAAP8fAABwEQAAcBMAAAEAAAAQAEHgLwsNcBQAAJAUAAABAAAAEABB+C8LBqAUAADAFABBrDALiQEBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAIAAAADAAAAAwAAAAQAAAADAAAABAAAAAMAAAAEAAAABAAAAAUAAAAEAAAABQAAAAQAAAAGAAAABQAAAAYAAAAFAAAABgAAAAUAAAAHAAAABgAAAAcAAAAGAAAABwBBwDELDQEAAAD/////AQAAAAIAQeAxC5IBAwAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAQAAAAEAAAAAAAAAAEAAAACAAAAAwAAAAAAAAABAAAAAgAAAAMAAAABAAAAAgAAAAMAAAABAAAAAgAAAAMAAAACAAAAAwAAAESsAACAuwAAAH0AACJWAADAXQAAgD4AABErAADgLgAAQB8AQYAzC7oI/////////////////////wgAAAD/////CAAAACAAAAAQAAAA/////xAAAAAoAAAAGAAAAP////8YAAAAMAAAACAAAAD/////IAAAADgAAAAoAAAA/////ygAAABAAAAAMAAAAP////8wAAAAUAAAADgAAAD/////OAAAAGAAAABAAAAA/////0AAAABwAAAA//////////9QAAAAgAAAAP//////////YAAAAKAAAAD//////////3AAAADAAAAA//////////+AAAAA4AAAAP//////////kAAAAAABAAD//////////6AAAABAAQAA/////////////////////wAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAeAAAAJAAAACwAAAA0AAAAPgAAAEoAAABaAAAAbgAAAIYAAACiAAAAxAAAAO4AAAAgAQAAVgEAAKIBAABAAgAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAB4AAAAkAAAAKgAAADIAAAA8AAAASAAAAFgAAABqAAAAgAAAAJwAAAC+AAAA5gAAABQBAABKAQAAgAEAAEACAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABSAAAAZgAAAH4AAACcAAAAwgAAAPAAAAAoAQAAbAEAAMABAAAmAgAAQAIAAAAAAAAGAAAADAAAABIAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABQAAAAYAAAAHQAAACMAAAAqAAAAMgAAADuAAAAHAEAAFABAACMAQAA0AEAAAoCAABAAgAAAAAAAAYAAAAMAAAAEgAAABgAAAAeAAAAJAAAACwAAAA2AAAAQgAAAFAAAABgAAAAcgAAAIgAAACiAAAAwgAAAOgAAAAWAQAASgEAAIoBAADQAQAAHAIAAEACAAAAAAAABgAAAAwAAAASAAAAGAAAAB4AAAAkAAAALAAAAC0AAABCAAAAUAAAAGAAAAB0AAAAjAAAAKgAAADIAAAA7gAAAPgAAABQAQAAjAEAANABAAAKAgAAQAIAAAAAAAAGAAAADAAAABIAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABQAAAAYAAAAHQAAACMAAAAqAAAAMgAAADuAAAAHAEAAFABAACMAQAA0AEAAAoCAABAAgAAAAAAAAYAAAAMAAAAEgAAABgAAAAeAAAAJAAAACwAAAA2AAAAQgAAAFAAAABgAAAAdAAAAIwAAACoAAAAyAAAAO4AAAAcAQAAUAEAAIwBAADQAQAACgIAAEACAAAAAAAADAAAABgAAAAkAAAAMAAAADwAAABIAAAAWAAAAGwAAACEAAAAoAAAAMAAAADoAAAAGAEAAFABAACQAQAA3AEAADYCAAA4AgAAOgIAADwCAAA+AgAAQAIAQdw7C8oPnff//533//+d9///nff//533//+d9///Ou///zrv//867///Ou///9bm///W5v//1ub//3Pe//9z3v//D9b//w/W//+szf//SMX//+W8///lvP//gbT//x6s//+6o///V5v//5CK//8sgv//ZXH//wJp//87WP//10///xA///9JLv//HxX//1gE//+R8/7/Z9r+/zzB/v8SqP7/S5f+/yB+/v+SXP7/aEP+/z0q/v+vCP7/he/9/1vW/f/NtP3/opv9/xR6/f+GWP3/XD/9/zEm/f+jBP3/3fP8/7La/P+Iwfz/o1cDAGpoAwAxeQMAlIEDAPiJAwBbkgMAW5IDAPiJAwCUgQMAzXADAAZgAwB4PgMA6hwDAPnyAgCkwAIAT44CADNLAgC0/wEA0asBAItPAQB+4gAAcHUAAJ33//9lcf//yuL+/2hD/v+im/3/eev8/+wy/P+Zafv/4pf6/8e9+f/m0vj/BOj3/1zs9v9Q6PX/ROT0/9TX8/8Bw/L/y6Xx/zGA8P/6Yu//YD3u/8YX7f8t8uv/k8zq/1yv6f+Jmuj/toXn/0d55v87deX/9oHk/3if4/9dxeL/bQTi/0RU4f9FveD/cT/g/8fa3/+rl9//um3f/1Zl3/+Bft//ncHf/1bRHwC7Qh8Ay4EeAOmWHQCzeRwAJyobAKuwGQB2/BcA6xUWAA39EwB1qREA7CsPAEhrDADrbwkAnEoGADLiAgDXT///w4L7//d69/85SfP/JuXu/75O6v9ljuX/G6Tg/0KY2/94Ytb/hBPR/wKjy/9VGcb/RYfA/wrcuv/PMLX/MX2v/5PJqf+8JqT/SIye//8Kmf/gopP/s2SO/xNIif8sZoT//r5//4dSe/+QMXf/fGRz/67zb/8n32z/EEBq/6MFaP8LSWb/qhJl/4FiZP9WSWT/Ksdk/2HkZf9dqWf/gh5q/zRMbf9zMnH/BeJ1/4dSe/9djIH/TqCI//WFkP9JumYACRhdABGkUgA4RUcA4gM7AA3gLQBW0R8AhegQANIUAQAGZ/D/u9be/1VszP/VJ7n/ARql/3Y6kP+XkXr/yCdk/20FTf/oMjX/OrAc/46WA//j5en+nKbP/oLptP5av5n+JSh+/qk0Yv4S/kX++3sp/vPPDP5cAvD9/yPT/T89tv3iXpn9E6J8/dEGYP2srkP9o5kn/UPpC/2NnfD8q8/V/AGIu/xW16H81NaI/N+OcPzaB1n871pC/IKQLPz3sBf8eNUD/GkG8fssTN/7Jq/O+x1Av/t1B7H7kQ2k+9ZamPul9437AOSE+64wffut3Xb7/+px+wdhbvvFP2z7yHiUBDvAkwT5npEEARWOBFMiiQRSz4IEABx7BFsIcgQqpWcEb/JbBIv4TgTjv0AE2lAxBNSzIASX+Q4EiCr8AwlP6AN+b9MDEaW9Ayb4pgMhcY8DLCl3A6ooXgP/d0QDVTAqA3NiDwO9FvQCXWbYAlRRvAIv+Z8C7V2DAh6hZgLBwkkCAdwsAqT9DwINMPMBBYTWAe4BugFXy50B29eBAaZAZgF+FksBZFkwAR0aFgFyafwAxk/jABjNygCT+rIAONibAGluhQCKxW8A/+VaACvYRgCrkzMARSkhAPqYDwAu6/7/exfv/6ou4P/zH9L/HvzE/8i6uP/vW63/9+ei/0m6ZgALem8Asl93AKNzfgB5rYQA+x2KAI3NjgDMs5IAfuGVAKNWmACfG5oA1jibAKq2mwB/nZsAVu2aAPW2mQBd+pcA8L+VANkgkwBSDJAAhJuMAHDOiAB5rYQAAkGAANSZewDtt3YATZtxACBdbAAB9WYAuHNhAETZWwBtNlYAz4JQADHPSgD2I0UAu3g/AKvmOQD+XDQAfOwuAIidKQC+ZyQA5VsfAJtxGgBCsRUA2hoRAMe2DAAJhQgAPX0EACmwAADOHf3/ZLX5/xWQ9v+4lPP/FNTw/4tW7v/zAuz/Ferp/4oD6P9VT+b/2dXk/02G4/8XaeL/NX7h/0W94P9W0R8AYz4gAH+BIACqmiAARpIgAFVoIAA5JSAAj8AfALtCHwC8qx4Ak/sdAKM6HQCIYBwACn4bAMWKGgC5hhkASnoYAHdlFwCkUBYAbTMVANMNFAA66BIAoMIRAAadEADPfw8ANVoOAP88DQAsKAwAvBsLALAXCgCkEwkA/BcIABotBwA5QgYAHmgFAGeWBAAUzQMAhxQDAF5kAgCYvAEANh0BAJuOAABjCAAAkIr//4Id//91sP7/L1T+/0wA/v/NtP3/sXH9/1w//f8HDf3/FuP8/4jB/P/6n/z/M4/8/2x+/P8Idvz/pW38/6Vt/P8Idvz/bH78/8+G/P+Wl/z/o1cDAHg+AwBOJQMAIwwDAF37AgDP2QIApMACAHqnAgDshQIAXmQCADNLAgClKQIAexACAFH3AQDD1QEAmLwBAG6jAQDggQEAtWgBAO5XAQDEPgEAmSUBAG8MAQCo+wAA4eoAALfRAADwwAAAKbAAAMWnAAD+lgAAm44AANR9AABwdQAAqWQAAEZcAADiUwAAf0sAABtDAAAbQwAAuDoAAFQyAADxKQAA8SkAAI0hAACNIQAAKhkAACoZAAAqGQAAxhAAAMYQAADGEAAAxhAAAGMIAABjCAAAYwgAAGMIAABjCAAAYwgAQcDLAAvXFQMAAAAEAAAABAAAAAYAAACD+aIARE5uAPwpFQDRVycA3TT1AGLbwAA8mZUAQZBDAGNR/gC73qsAt2HFADpuJADSTUIASQbgAAnqLgAcktEA6x3+ACmxHADoPqcA9TWCAES7LgCc6YQAtCZwAEF+XwDWkTkAU4M5AJz0OQCLX4QAKPm9APgfOwDe/5cAD5gFABEv7wAKWosAbR9tAM9+NgAJyycARk+3AJ5mPwAt6l8Auid1AOXrxwA9e/EA9zkHAJJSigD7a+oAH7FfAAhdjQAwA1YAe/xGAPCrawAgvM8ANvSaAOOpHQBeYZEACBvmAIWZZQCgFF8AjUBoAIDY/wAnc00ABgYxAMpWFQDJqHMAe+JgAGuMwAAZxEcAzWfDAAno3ABZgyoAi3bEAKYclgBEr90AGVfRAKU+BQAFB/8AM34/AMIy6ACYT94Au30yACY9wwAea+8An/heADUfOgB/8soA8YcdAHyQIQBqJHwA1W76ADAtdwAVO0MAtRTGAMMZnQCtxMIALE1BAAwAXQCGfUYA43EtAJvGmgAzYgAAtNJ8ALSnlwA3VdUA1z72AKMQGABNdvwAZJ0qAHDXqwBjfPgAerBXABcV5wDASVYAO9bZAKeEOAAkI8sA1op3AFpUIwAAH7kA8QobABnO3wCfMf8AZh5qAJlXYQCs+0cAfn/YACJltwAy6IkA5r9gAO/EzQBsNgkAXT/UABbe1wBYO94A3puSANIiKAAohugA4lhNAMbKMgAI4xYA4H3LABfAUADzHacAGOBbAC4TNACDEmIAg0gBAPWOWwCtsH8AHunyAEhKQwAQZ9MAqt3YAK5fQgBqYc4ACiikANOZtAAGpvIAXHd/AKPCgwBhPIgAinN4AK+MWgBv170ALaZjAPS/ywCNge8AJsFnAFXKRQDK2TYAKKjSAMJhjQASyXcABCYUABJGmwDEWcQAyMVEAE2ykQAAF/MA1EOtAClJ5QD91RAAAL78AB6UzABwzu4AEz71AOzxgACz58MAx/goAJMFlADBcT4ALgmzAAtF8wCIEpwAqyB7AC61nwBHksIAezIvAAxVbQByp5AAa+cfADHLlgB5FkoAQXniAPTfiQDolJcA4uaEAJkxlwCI7WsAX182ALv9DgBImrQAZ6RsAHFyQgCNXTIAnxW4ALzlCQCNMSUA93Q5ADAFHAANDAEASwhoACzuWABHqpAAdOcCAL3WJAD3faYAbkhyAJ8W7wCOlKYAtJH2ANFTUQDPCvIAIJgzAPVLfgCyY2gA3T5fAEBdAwCFiX8AVVIpADdkwABt2BAAMkgyAFtMdQBOcdQARVRuAAsJwQAq9WkAFGbVACcHnQBdBFAAtDvbAOp2xQCH+RcASWt9AB0nugCWaSkAxsysAK0UVACQ4moAiNmJACxyUAAEpL4AdweUAPMwcAAA/CcA6nGoAGbCSQBk4D0Al92DAKM/lwBDlP0ADYaMADFB3gCSOZ0A3XCMABe35wAI3zsAFTcrAFyAoABagJMAEBGSAA/o2ABsgK8A2/9LADiQDwBZGHYAYqUVAGHLuwDHibkAEEC9ANLyBABJdScA67b2ANsiuwAKFKoAiSYvAGSDdgAJOzMADpQaAFE6qgAdo8IAr+2uAFwmEgBtwk0ALXqcAMBWlwADP4MACfD2ACtAjABtMZkAObQHAAwgFQDYw1sA9ZLEAMatSwBOyqUApzfNAOapNgCrkpQA3UJoABlj3gB2jO8AaItSAPzbNwCuoasA3xUxAACuoQAM+9oAZE1mAO0FtwApZTAAV1a/AEf/OgBq+bkAdb7zACiT3wCrgDAAZoz2AATLFQD6IgYA2eQdAD2zpABXG48ANs0JAE5C6QATvqQAMyO1APCqGgBPZagA0sGlAAs/DwBbeM0AI/l2AHuLBACJF3IAxqZTAG9u4gDv6wAAm0pYAMTatwCqZroAds/PANECHQCx8S0AjJnBAMOtdwCGSNoA912gAMaA9ACs8C8A3eyaAD9cvADQ3m0AkMcfACrbtgCjJToAAK+aAK1TkwC2VwQAKS20AEuAfgDaB6cAdqoOAHtZoQAWEioA3LctAPrl/QCJ2/4Aib79AOR2bAAGqfwAPoBwAIVuFQD9h/8AKD4HAGFnMwAqGIYATb3qALPnrwCPbW4AlWc5ADG/WwCE10gAMN8WAMctQwAlYTUAyXDOADDLuAC/bP0ApACiAAVs5ABa3aAAIW9HAGIS0gC5XIQAcGFJAGtW4ACZUgEAUFU3AB7VtwAz8cQAE25fAF0w5ACFLqkAHbLDAKEyNgAIt6QA6rHUABb3IQCPaeQAJ/93AAwDgACNQC0AT82gACClmQCzotMAL10KALT5QgAR2ssAfb7QAJvbwQCrF70AyqKBAAhqXAAuVRcAJwBVAH8U8ADhB4YAFAtkAJZBjQCHvt4A2v0qAGsltgB7iTQABfP+ALm/ngBoak8ASiqoAE/EWgAt+LwA11qYAPTHlQANTY0AIDqmAKRXXwAUP7EAgDiVAMwgAQBx3YYAyd62AL9g9QBNZREAAQdrAIywrACywNAAUVVIAB77DgCVcsMAowY7AMBANQAG3HsA4EXMAE4p+gDWysgA6PNBAHxk3gCbZNgA2b4xAKSXwwB3WNQAaePFAPDaEwC6OjwARhhGAFV1XwDSvfUAbpLGAKwuXQAORO0AHD5CAGHEhwAp/ekA59bzACJ8ygBvkTUACODFAP/XjQBuauIAsP3GAJMIwQB8XXQAa62yAM1unQA+cnsAxhFqAPfPqQApc98Atcm6ALcAUQDisg0AdLokAOV9YAB02IoADRUsAIEYDAB+ZpQAASkWAJ96dgD9/b4AVkXvANl+NgDs2RMAi7q5AMSX/AAxqCcA8W7DAJTFNgDYqFYAtKi1AM/MDgASiS0Ab1c0ACxWiQCZzuMA1iC5AGteqgA+KpwAEV/MAP0LSgDh9PsAjjttAOKGLADp1IQA/LSpAO/u0QAuNckALzlhADghRAAb2cgAgfwKAPtKagAvHNgAU7SEAE6ZjABUIswAKlXcAMDG1gALGZYAGnC4AGmVZAAmWmAAP1LuAH8RDwD0tREA/Mv1ADS8LQA0vO4A6F3MAN1eYABnjpsAkjPvAMkXuABhWJsA4Ve8AFGDxgDYPhAA3XFIAC0c3QCvGKEAISxGAFnz1wDZepgAnlTAAE+G+gBWBvwA5XmuAIkiNgA4rSIAZ5PcAFXoqgCCJjgAyuebAFENpACZM7EAqdcOAGkFSABlsvAAf4inAIhMlwD50TYAIZKzAHuCSgCYzyEAQJ/cANxHVQDhdDoAZ+tCAP6d3wBe1F8Ae2ekALqsegBV9qIAK4gjAEG6VQBZbggAISqGADlHgwCJ4+YA5Z7UAEn7QAD/VukAHA/KAMVZigCU+isA08HFAA/FzwDbWq4AR8WGAIVDYgAhhjsALHmUABBhhwAqTHsAgCwaAEO/EgCIJpAAeDyJAKjE5ADl23sAxDrCACb06gD3Z4oADZK/AGWjKwA9k7EAvXwLAKRR3AAn3WMAaeHdAJqUGQCoKZUAaM4oAAnttABEnyAATpjKAHCCYwB+fCMAD7kyAKf1jgAUVucAIfEIALWdKgBvfk0ApRlRALX5qwCC39YAlt1hABY2AgDEOp8Ag6KhAHLtbQA5jXoAgripAGsyXABGJ1sAADTtANIAdwD89FUAAVlNAOBxgABBo+EAC60BQPsh+T8AAAAALUR0PgAAAICYRvg8AAAAYFHMeDsAAACAgxvwOQAAAEAgJXo4AAAAgCKC4zYAAAAAHfNpNf6CK2VHFWdAAAAAAAAAOEMAAPr+Qi52vzo7nrya9wy9vf3/////3z88VFVVVVXFP5ErF89VVaU/F9CkZxERgT8AAAAAAADIQu85+v5CLuY/JMSC/72/zj+19AzXCGusP8xQRtKrsoM/hDpOm+DXVT8AQd7iAAuCMfA/br+IGk87mzw1M/upPfbvP13c2JwTYHG8YYB3Pprs7z/RZocQel6QvIV/bugV4+8/E/ZnNVLSjDx0hRXTsNnvP/qO+SOAzou83vbdKWvQ7z9hyOZhTvdgPMibdRhFx+8/mdMzW+SjkDyD88bKPr7vP217g12mmpc8D4n5bFi17z/87/2SGrWOPPdHciuSrO8/0ZwvcD2+Pjyi0dMy7KPvPwtukIk0A2q8G9P+r2ab7z8OvS8qUlaVvFFbEtABk+8/VepOjO+AULzMMWzAvYrvPxb01bkjyZG84C2prpqC7z+vVVzp49OAPFGOpciYeu8/SJOl6hUbgLx7UX08uHLvPz0y3lXwH4+86o2MOPlq7z+/UxM/jImLPHXLb+tbY+8/JusRdpzZlrzUXASE4FvvP2AvOj737Jo8qrloMYdU7z+dOIbLguePvB3Z/CJQTe8/jcOmREFvijzWjGKIO0bvP30E5LAFeoA8ltx9kUk/7z+UqKjj/Y6WPDhidW56OO8/fUh08hhehzw/prJPzjHvP/LnH5grR4A83XziZUUr7z9eCHE/e7iWvIFj9eHfJO8/MasJbeH3gjzh3h/1nR7vP/q/bxqbIT28kNna0H8Y7z+0CgxygjeLPAsD5KaFEu8/j8vOiZIUbjxWLz6prwzvP7arsE11TYM8FbcxCv4G7z9MdKziAUKGPDHYTPxwAe8/SvjTXTndjzz/FmSyCPzuPwRbjjuAo4a88Z+SX8X27j9oUEvM7UqSvMupOjen8e4/ji1RG/gHmbxm2AVtruzuP9I2lD7o0XG895/lNNvn7j8VG86zGRmZvOWoE8Mt4+4/bUwqp0ifhTwiNBJMpt7uP4ppKHpgEpO8HICsBEXa7j9biRdIj6dYvCou9yEK1u4/G5pJZ5ssfLyXqFDZ9dHuPxGswmDtY0M8LYlhYAjO7j/vZAY7CWaWPFcAHe1Byu4/eQOh2uHMbjzQPMG1osbuPzASDz+O/5M83tPX8CrD7j+wr3q7zpB2PCcqNtXav+4/d+BU670dkzwN3f2ZsrzuP46jcQA0lI+8pyyddrK57j9Jo5PczN6HvEJmz6Latu4/XzgPvcbeeLyCT51WK7TuP/Zce+xGEoa8D5JdyqSx7j+O1/0YBTWTPNontTZHr+4/BZuKL7eYezz9x5fUEq3uPwlUHOLhY5A8KVRI3Qer7j/qxhlQhcc0PLdGWYomqe4/NcBkK+YylDxIIa0Vb6fuP592mWFK5Iy8Cdx2ueGl7j+oTe87xTOMvIVVOrB+pO4/rukriXhThLwgw8w0RqPuP1hYVnjdzpO8JSJVgjii7j9kGX6AqhBXPHOpTNRVoe4/KCJev++zk7zNO39mnqDuP4K5NIetEmq8v9oLdRKg7j/uqW2472djvC8aZTyyn+4/UYjgVD3cgLyElFH5fZ/uP88+Wn5kH3i8dF/s6HWf7j+wfYvASu6GvHSBpUian+4/iuZVHjIZhrzJZ0JW65/uP9PUCV7LnJA8P13eT2mg7j8dpU253DJ7vIcB63MUoe4/a8BnVP3slDwywTAB7aHuP1Vs1qvh62U8Yk7PNvOi7j9Cz7MvxaGIvBIaPlQnpO4/NDc78bZpk7wTzkyZiaXuPx7/GTqEXoC8rccjRhqn7j9uV3LYUNSUvO2SRJvZqO4/AIoOW2etkDyZZorZx6ruP7Tq8MEvt40826AqQuWs7j//58WcYLZlvIxEtRYyr+4/RF/zWYP2ezw2dxWZrrHuP4M9HqcfCZO8xv+RC1u07j8pHmyLuKldvOXFzbA3t+4/WbmQfPkjbLwPUsjLRLruP6r59CJDQ5K8UE7en4K97j9LjmbXbMqFvLoHynDxwO4/J86RK/yvcTyQ8KOCkcTuP7tzCuE10m08IyPjGWPI7j9jImIiBMWHvGXlXXtmzO4/1THi44YcizwzLUrsm9DuPxW7vNPRu5G8XSU+sgPV7j/SMe6cMcyQPFizMBOe2e4/s1pzboRphDy//XlVa97uP7SdjpfN34K8evPTv2vj7j+HM8uSdxqMPK3TWpmf6O4/+tnRSo97kLxmto0pB+7uP7qu3FbZw1W8+xVPuKLz7j9A9qY9DqSQvDpZ5Y1y+e4/NJOtOPTWaLxHXvvydv/uPzWKWGvi7pG8SgahMLAF7z/N3V8K1/90PNLBS5AeDO8/rJiS+vu9kbwJHtdbwhLvP7MMrzCubnM8nFKF3ZsZ7z+U/Z9cMuOOPHrQ/1+rIO8/rFkJ0Y/ghDxL0Vcu8SfvP2caTjivzWM8tecGlG0v7z9oGZJsLGtnPGmQ79wgN+8/0rXMgxiKgLz6w11VCz/vP2/6/z9drY+8fIkHSi1H7z9JqXU4rg2QvPKJDQiHT+8/pwc9poWjdDyHpPvcGFjvPw8iQCCekYK8mIPJFuNg7z+sksHVUFqOPIUy2wPmae8/S2sBrFk6hDxgtAHzIXPvPx8+tAch1YK8X5t7M5d87z/JDUc7uSqJvCmh9RRGhu8/04g6YAS2dDz2P4vnLpDvP3FynVHsxYM8g0zH+1Ga7z/wkdOPEvePvNqQpKKvpO8/fXQj4piujbzxZ44tSK/vPwggqkG8w448J1ph7hu67z8y66nDlCuEPJe6azcrxe8/7oXRMalkijxARW5bdtDvP+3jO+S6N468FL6crf3b7z+dzZFNO4l3PNiQnoHB5+8/icxgQcEFUzzxcY8rwvPvPwA4+v5CLuY/MGfHk1fzLj0BAAAAAADgv1swUVVVVdU/kEXr////z78RAfEks5nJP5/IBuV1VcW/AAAAAAAA4L93VVVVVVXVP8v9/////8+/DN2VmZmZyT+nRWdVVVXFvzDeRKMkScI/ZT1CpP//v7/K1ioohHG8P/9osEPrmbm/hdCv94KBtz/NRdF1E1K1v5/e4MPwNPc/AJDmeX/M178f6SxqeBP3PwAADcLub9e/oLX6CGDy9j8A4FET4xPXv32MEx+m0fY/AHgoOFu41r/RtMULSbH2PwB4gJBVXda/ugwvM0eR9j8AABh20ALWvyNCIhifcfY/AJCQhsqo1b/ZHqWZT1L2PwBQA1ZDT9W/xCSPqlYz9j8AQGvDN/bUvxTcnWuzFPY/AFCo/aed1L9MXMZSZPb1PwCoiTmSRdS/TyyRtWfY9T8AuLA59O3Tv96QW8u8uvU/AHCPRM6W0794GtnyYZ31PwCgvRceQNO/h1ZGElaA9T8AgEbv4unSv9Nr586XY/U/AOAwOBuU0r+Tf6fiJUf1PwCI2ozFPtK/g0UGQv8q9T8AkCcp4enRv9+9stsiD/U/APhIK22V0b/X3jRHj/P0PwD4uZpnQdG/QCjez0PY9D8AmO+U0O3Qv8ijeMA+vfQ/ABDbGKWa0L+KJeDDf6L0PwC4Y1LmR9C/NITUJAWI9D8A8IZFIuvPvwstGRvObfQ/ALAXdUpHz79UGDnT2VP0PwAwED1EpM6/WoS0RCc69D8AsOlEDQLOv/v4FUG1IPQ/APB3KaJgzb+x9D7aggf0PwCQlQQBwMy/j/5XXY/u8z8AEIlWKSDMv+lMC6DZ1fM/ABCBjReBy78rwRDAYL3zPwDQ08zJ4sq/uNp1KySl8z8AkBIuQEXKvwLQn80ijfM/APAdaHeoyb8ceoTFW3XzPwAwSGltDMm/4jatSc5d8z8AwEWmIHHIv0DUTZh5RvM/ADAUtI/Wx78ky//OXC/zPwBwYjy4PMe/SQ2hdXcY8z8AYDebmqPGv5A5PjfIAfM/AKC3VDELxr9B+JW7TuvyPwAwJHZ9c8W/0akZAgrV8j8AMMKPe9zEvyr9t6j5vvI/AADSUSxGxL+rGwx6HKnyPwAAg7yKsMO/MLUUYHKT8j8AAElrmRvDv/WhV1f6ffI/AECkkFSHwr+/Ox2bs2jyPwCgefi588G/vfWPg51T8j8AoCwlyGDBvzsIyaq3PvI/ACD3V3/OwL+2QKkrASryPwCg/kncPMC/MkHMlnkV8j8AgEu8vVe/v5v80h0gAfI/AEBAlgg3vr8LSE1J9OzxPwBA+T6YF72/aWWPUvXY8T8AoNhOZ/m7v3x+VxEjxfE/AGAvIHncur/pJst0fLHxPwCAKOfDwLm/thosDAGe8T8AwHKzRqa4v71wtnuwivE/AACsswGNt7+2vO8linfxPwAAOEXxdLa/2jFMNY1k8T8AgIdtDl61v91fJ5C5UfE/AOCh3lxItL9M0jKkDj/xPwCgak3ZM7O/2vkQcoss8T8AYMX4eSCyvzG17CgwGvE/ACBimEYOsb+vNITa+wfxPwAA0mps+q+/s2tOD+718D8AQHdKjdqtv86fKl0G5PA/AACF5Oy8q78hpSxjRNLwPwDAEkCJoam/GpjifKfA8D8AwAIzWIinv9E2xoMvr/A/AIDWZ15xpb85E6CY253wPwCAZUmKXKO/3+dSr6uM8D8AQBVk40mhv/soTi+fe/A/AIDrgsBynr8ZjzWMtWrwPwCAUlLxVZq/LPnspe5Z8D8AgIHPYj2Wv5As0c1JSfA/AACqjPsokr+prfDGxjjwPwAA+SB7MYy/qTJ5E2Uo8D8AAKpdNRmEv0hz6ickGPA/AADswgMSeL+VsRQGBAjwPwAAJHkJBGC/Gvom9x/g7z8AAJCE8+9vP3TqYcIcoe8/AAA9NUHchz8umYGwEGPvPwCAwsSjzpM/za3uPPYl7z8AAIkUwZ+bP+cTkQPI6e4/AAARztiwoT+rsct4gK7uPwDAAdBbiqU/mwydohp07j8AgNhAg1ypP7WZCoOROu4/AIBX72onrT9WmmAJ4AHuPwDAmOWYdbA/mLt35QHK7T8AIA3j9VOyPwORfAvyku0/AAA4i90utD/OXPtmrFztPwDAV4dZBrY/nd5eqiwn7T8AAGo1dtq3P80saz5u8uw/AGAcTkOruT8Ceaeibb7sPwBgDbvHeLs/bQg3bSaL7D8AIOcyE0O9PwRYXb2UWOw/AGDecTEKvz+Mn7sztSbsPwBAkSsVZ8A/P+fs7oP16z8AsJKChUfBP8GW23X9xOs/ADDKzW4mwj8oSoYMHpXrPwBQxabXA8M/LD7vxeJl6z8AEDM8w9/DP4uIyWdIN+s/AIB6aza6xD9KMB0hSwnrPwDw0Sg5k8U/fu/yhejb6j8A8BgkzWrGP6I9YDEdr+o/AJBm7PhAxz+nWNM/5oLqPwDwGvXAFcg/i3MJ70BX6j8AgPZUKenIPydLq5AqLOo/AED4Aja7yT/R8pMToAHqPwAALBzti8o/GzzbJJ/X6T8A0AFcUVvLP5CxxwUlruk/AMC8zGcpzD8vzpfyLoXpPwBgSNU19sw/dUuk7rpc6T8AwEY0vcHNPzhI553GNOk/AODPuAGMzj/mUmcvTw3pPwCQF8AJVc8/ndf/jlLm6D8AuB8SbA7QP3wAzJ/Ov+g/ANCTDrhx0D8Ow77awJnoPwBwhp5r1NA/+xcjqid06D8A0EszhzbRPwias6wAT+g/AEgjZw2Y0T9VPmXoSSroPwCAzOD/+NE/YAL0lQEG6D8AaGPXX1nSPymj4GMl4uc/AKgUCTC50j+ttdx3s77nPwBgQxByGNM/wiWXZ6qb5z8AGOxtJnfTP1cGF/IHeec/ADCv+0/V0z8ME9bbylbnPwDgL+PuMtQ/a7ZPAQAQ5j88W0KRbAJ+PJW0TQMAMOY/QV0ASOq/jTx41JQNAFDmP7el1oanf448rW9OBwBw5j9MJVRr6vxhPK4P3/7/j+Y//Q5ZTCd+fLy8xWMHALDmPwHa3EhowYq89sFcHgDQ5j8Rk0mdHD+DPD72Bev/7+Y/Uy3iGgSAfryAl4YOABDnP1J5CXFm/3s8Euln/P8v5z8kh70m4gCMPGoRgd//T+c/0gHxbpECbryQnGcPAHDnP3ScVM1x/Ge8Nch++v+P5z+DBPWewb6BPObCIP7/r+c/ZWTMKRd+cLwAyT/t/8/nPxyLewhygIC8dhom6f/v5z+u+Z1tKMCNPOijnAQAEOg/M0zlUdJ/iTyPLJMXADDoP4HzMLbp/oq8nHMzBgBQ6D+8NWVrv7+JPMaJQiAAcOg/dXsR82W/i7wEefXr/4/oP1fLPaJuAIm83wS8IgCw6D8KS+A43wB9vIobDOX/z+g/BZ//RnEAiLxDjpH8/+/oPzhwetB7gYM8x1/6HgAQ6T8DtN92kT6JPLl7RhMAMOk/dgKYS06AfzxvB+7m/0/pPy5i/9nwfo+80RI83v9v6T+6OCaWqoJwvA2KRfT/j+k/76hkkRuAh7w+Lpjd/6/pPzeTWorgQIe8ZvtJ7f/P6T8A4JvBCM4/PFGc8SAA8Ok/CluIJ6o/irwGsEURABDqP1baWJlI/3Q8+va7BwAw6j8YbSuKq76MPHkdlxAAUOo/MHl43cr+iDxILvUdAHDqP9ur2D12QY+8UjNZHACQ6j8SdsKEAr+OvEs+TyoAsOo/Xz//PAT9abzRHq7X/8/qP7RwkBLnPoK8eARR7v/v6j+j3g7gPgZqPFsNZdv/D+s/uQofOMgGWjxXyqr+/y/rPx08I3QeAXm83LqV2f9P6z+fKoZoEP95vJxlniQAcOs/Pk+G0EX/ijxAFof5/4/rP/nDwpZ3/nw8T8sE0v+v6z/EK/LuJ/9jvEVcQdL/z+s/Ieo77rf/bLzfCWP4/+/rP1wLLpcDQYG8U3a14f8P7D8ZareUZMGLPONX+vH/L+w/7cYwje/+ZLwk5L/c/0/sP3VH7LxoP4S897lU7f9v7D/s4FPwo36EPNWPmev/j+w/8ZL5jQaDczyaISUhALDsPwQOGGSO/Wi8nEaU3f/P7D9y6sccvn6OPHbE/er/7+w//oifrTm+jjwr+JoWABDtP3FauaiRfXU8HfcPDQAw7T/ax3BpkMGJPMQPeer/T+0/DP5YxTcOWLzlh9wuAHDtP0QPwU3WgH+8qoLcIQCQ7T9cXP2Uj3x0vIMCa9j/r+0/fmEhxR1/jDw5R2wpANDtP1Ox/7KeAYg89ZBE5f/v7T+JzFLG0gBuPJT2q83/D+4/0mktIECDf7zdyFLb/y/uP2QIG8rBAHs87xZC8v9P7j9Rq5SwqP9yPBFeiuj/b+4/Wb7vsXP2V7wN/54RAJDuPwHIC16NgIS8RBel3/+v7j+1IEPVBgB4PKF/EhoA0O4/klxWYPgCULzEvLoHAPDuPxHmNV1EQIW8Ao169f8P7z8Fke85MftPvMeK5R4AMO8/VRFz8qyBijyUNIL1/0/vP0PH19RBP4o8a0yp/P9v7z91eJgc9AJivEHE+eH/j+8/S+d39NF9dzx+4+DS/6/vPzGjfJoZAW+8nuR3HADQ7z+xrM5L7oFxPDHD4Pf/7+8/WodwATcFbrxuYGX0/w/wP9oKHEmtfoq8WHqG8/8v8D/gsvzDaX+XvBcN/P3/T/A/W5TLNP6/lzyCTc0DAHDwP8tW5MCDAII86Mvy+f+P8D8adTe+3/9tvGXaDAEAsPA/6ybmrn8/kbw406QBANDwP/efSHn6fYA8/f3a+v/v8D/Aa9ZwBQR3vJb9ugsAEPE/YgtthNSAjjxd9OX6/y/xP+82/WT6v5082ZrVDQBQ8T+uUBJwdwCaPJpVIQ8AcPE/7t7j4vn9jTwmVCf8/4/xP3NyO9wwAJE8WTw9EgCw8T+IAQOAeX+ZPLeeKfj/z/E/Z4yfqzL5ZbwA1Ir0/+/xP+tbp52/f5M8pIaLDAAQ8j8iW/2Ra4CfPANDhQMAMPI/M7+f68L/kzyE9rz//0/yP3IuLn7nAXY82SEp9f9v8j9hDH92u/x/PDw6kxQAkPI/K0ECPMoCcrwTY1UUALDyPwIf8jOCgJK8O1L+6//P8j/y3E84fv+IvJatuAsA8PI/xUEwUFH/hbyv4nr7/w/zP50oXohxAIG8f1+s/v8v8z8Vt7c/Xf+RvFZnpgwAUPM/vYKLIoJ/lTwh9/sRAHDzP8zVDcS6AIA8uS9Z+f+P8z9Rp7ItnT+UvELS3QQAsPM/4Th2cGt/hTxXybL1/8/zPzESvxA6Ano8GLSw6v/v8z+wUrFmbX+YPPSvMhUAEPQ/JIUZXzf4Zzwpi0cXADD0P0NR3HLmAYM8Y7SV5/9P9D9aibK4af+JPOB1BOj/b/Q/VPLCm7HAlbznwW/v/4/0P3IqOvIJQJs8BKe+5f+v9D9FfQ2/t/+UvN4nEBcA0PQ/PWrccWTAmbziPvAPAPD0PxxThQuJf5c80UvcEgAQ9T82pGZxZQRgPHonBRYAMPU/CTIjzs6/lrxMcNvs/0/1P9ehBQVyAom8qVRf7/9v9T8SZMkO5r+bPBIQ5hcAkPU/kO+vgcV+iDySPskDALD1P8AMvwoIQZ+8vBlJHQDQ9T8pRyX7KoGYvIl6uOf/7/U/BGntgLd+lLwAQeCTAQsD4EsB";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["c"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["o"];addOnInit(Module["asm"]["d"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort("invalid type for getValue: "+type)}return null}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort("invalid type for setValue: "+type)}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ASSERTIONS=false;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output};function intArrayFromBase64(s){try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error("Converting base64 string to bytes failed.")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}var asmLibraryArg={"b":_emscripten_memcpy_big,"a":_emscripten_resize_heap};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["d"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["e"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["f"]).apply(null,arguments)};var _shine_check_config=Module["_shine_check_config"]=function(){return(_shine_check_config=Module["_shine_check_config"]=Module["asm"]["g"]).apply(null,arguments)};var _shine_samples_per_pass=Module["_shine_samples_per_pass"]=function(){return(_shine_samples_per_pass=Module["_shine_samples_per_pass"]=Module["asm"]["h"]).apply(null,arguments)};var _shine_encode_buffer=Module["_shine_encode_buffer"]=function(){return(_shine_encode_buffer=Module["_shine_encode_buffer"]=Module["asm"]["i"]).apply(null,arguments)};var _shine_flush=Module["_shine_flush"]=function(){return(_shine_flush=Module["_shine_flush"]=Module["asm"]["j"]).apply(null,arguments)};var _shine_close=Module["_shine_close"]=function(){return(_shine_close=Module["_shine_close"]=Module["asm"]["k"]).apply(null,arguments)};var _shine_js_int16_len=Module["_shine_js_int16_len"]=function(){return(_shine_js_int16_len=Module["_shine_js_int16_len"]=Module["asm"]["l"]).apply(null,arguments)};var _shine_js_ptr_len=Module["_shine_js_ptr_len"]=function(){return(_shine_js_ptr_len=Module["_shine_js_ptr_len"]=Module["asm"]["m"]).apply(null,arguments)};var _shine_js_init=Module["_shine_js_init"]=function(){return(_shine_js_init=Module["_shine_js_init"]=Module["asm"]["n"]).apply(null,arguments)};Module["setValue"]=setValue;Module["getValue"]=getValue;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();
++
++
++ return createModule.ready
++}
++);
++})();
++export default createModule;
+\ No newline at end of file
+diff --git a/js/dist/libshine_node.js b/js/dist/libshine_node.js
+new file mode 100644
+index 0000000..02d7990
+--- /dev/null
++++ b/js/dist/libshine_node.js
+@@ -0,0 +1 @@
++var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{var ret=tryParseAsDataURI(filename);if(ret){return binary?ret:ret.toString()}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{var ret=tryParseAsDataURI(filename);if(ret){onload(ret)}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="data:application/octet-stream;base64,AGFzbQEAAAABVg9gAX8Bf2ADf39/AGACf38Bf2AEf39/fwF/YAN/f38Bf2ACf38AYAF/AGABfAF8YAABf2ADfHx/AXxgAnx8AXxgAnx/AXxgAABgBH9/f38AYAJ8fwF/Ag0CAWEBYQAAAWEBYgABAxsaAQMBAAQFAAkKBgsCBwwNBQcOAgQAAgMICAYEBQFwAQEBBQYBAYACgAIGCAF/AUHglwULBzUNAWMCAAFkAA8BZQAIAWYACwFnABcBaAAWAWkAFQFqABQBawAbAWwAGgFtABkBbgAYAW8BAArC+gEahQoBDX8gAiAAKAIQIgRJBEAgACAEIAJrIgI2AhAgACAAKAIMIAEgAnRyNgIMDwsgACgCACEKIAAoAgQiBSAAKAIIIgNBBGpNBEAgAAJ/IAVBAm0gBWohCyAKRQRAIAsQCAwBCyALQUBPBEBB5JMBQTA2AgBBAAwBCwJ/QRAgC0ELakF4cSALQQtJGyEHQQAhAyAKQQhrIgUoAgQiDEF4cSEGAkAgDEEDcUUEQEEAIAdBgAJJDQIaIAdBBGogBk0EQCAFIQMgBiAHa0HIlwEoAgBBAXRNDQILQQAMAgsgBSAGaiEIAkAgBiAHTwRAIAYgB2siBEEQSQ0BIAUgDEEBcSAHckECcjYCBCAFIAdqIgMgBEEDcjYCBCAIIAgoAgRBAXI2AgQgAyAEEBEMAQtBgJQBKAIAIAhGBEBB9JMBKAIAIAZqIgYgB00NAiAFIAxBAXEgB3JBAnI2AgQgBSAHaiIEIAYgB2siA0EBcjYCBEH0kwEgAzYCAEGAlAEgBDYCAAwBC0H8kwEoAgAgCEYEQEHwkwEoAgAgBmoiBCAHSQ0CAkAgBCAHayIDQRBPBEAgBSAMQQFxIAdyQQJyNgIEIAUgB2oiBiADQQFyNgIEIAQgBWoiBCADNgIAIAQgBCgCBEF+cTYCBAwBCyAFIAxBAXEgBHJBAnI2AgQgBCAFaiIDIAMoAgRBAXI2AgRBACEDQQAhBgtB/JMBIAY2AgBB8JMBIAM2AgAMAQsgCCgCBCIEQQJxDQEgBEF4cSAGaiINIAdJDQEgDSAHayEPAkAgBEH/AU0EQCAIKAIIIgYgBEEDdiIDQQN0QZCUAWpGGiAGIAgoAgwiBEYEQEHokwFB6JMBKAIAQX4gA3dxNgIADAILIAYgBDYCDCAEIAY2AggMAQsgCCgCGCEOAkAgCCAIKAIMIglHBEAgCCgCCCIDQfiTASgCAEkaIAMgCTYCDCAJIAM2AggMAQsCQCAIQRRqIgYoAgAiAw0AIAhBEGoiBigCACIDDQBBACEJDAELA0AgBiEEIAMiCUEUaiIGKAIAIgMNACAJQRBqIQYgCSgCECIDDQALIARBADYCAAsgDkUNAAJAIAgoAhwiBEECdEGYlgFqIgMoAgAgCEYEQCADIAk2AgAgCQ0BQeyTAUHskwEoAgBBfiAEd3E2AgAMAgsgDkEQQRQgDigCECAIRhtqIAk2AgAgCUUNAQsgCSAONgIYIAgoAhAiAwRAIAkgAzYCECADIAk2AhgLIAgoAhQiA0UNACAJIAM2AhQgAyAJNgIYCyAPQQ9NBEAgBSAMQQFxIA1yQQJyNgIEIAUgDWoiAyADKAIEQQFyNgIEDAELIAUgDEEBcSAHckECcjYCBCAFIAdqIgQgD0EDcjYCBCAFIA1qIgMgAygCBEEBcjYCBCAEIA8QEQsgBSEDCyADCyIDBEAgA0EIagwBC0EAIAsQCCIFRQ0AGiAFIApBfEF4IApBBGsoAgAiA0EDcRsgA0F4cWoiAyALIAMgC0kbEAQgChALIAULIgo2AgAgACAAKAIEIgNBAm0gA2o2AgQgACgCECEEIAAoAgghAwsgAyAKaiAAKAIMIAEgAiAEayIDdnIiBUEYdCAFQYD+A3FBCHRyIAVBCHZBgP4DcSAFQRh2cnI2AgAgAEEgIANrIgM2AhAgACAAKAIIQQRqNgIIIAIgBEcEQCAAIAEgA3Q2AgwPCyAAQQA2AgwLgQIBBn8CQCADRQ0AIANBGGxB0ClqIgUoAgQhByADQQ9NBEAgASACTw0BIANBGGxB0ClqKAIUIQMDQCAEIAAgAUECdGoiBSgCACIGQQBHaiAFKAIEIgRBAEdqIAMgBiAHbCAEamotAABqIQQgAUECaiIBIAJJDQALDAELIAEgAk8NACAFKAIIIQUgA0EYbEHQKWooAhQhAwNAIAQgBUEAIAAgAUECdGoiBCgCACIGQQ5KIggbaiAFQQAgBCgCBCIEQQ5KIgkbaiADQQ8gBCAJGyIEQQ8gBiAIGyIGIAdsamotAABqIAZBAEdqIARBAEdqIQQgAUECaiIBIAJJDQALCyAEC/wDAQJ/IAJBgARPBEAgACABIAIQAQ8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiAEHAAEkNACACIABBQGoiBEsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIARNDQALCyAAIAJNDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAASQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLC1IBAn9B4JMBKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQAEUNAQtB4JMBIAA2AgAgAQ8LQeSTAUEwNgIAQX8L0gsBCH8CQCABIAJJBH8gAiABayIFQQNxIQYgASEEIAFBf3MgAmpBA08EQCAFQXxxIQkDQCADIAAgBEECdGoiBSgCACIKIAMgCkobIgMgBSgCBCIKIAMgCkobIgMgBSgCCCIKIAMgCkobIgMgBSgCDCIFIAMgBUobIQMgBEEEaiEEIAhBBGoiCCAJRw0ACwsgBgRAA0AgAyAAIARBAnRqKAIAIgUgAyAFShshAyAEQQFqIQQgB0EBaiIHIAZHDQALCyADRQRAQQAPCyADQQ5MBEAgA0GILCgCAE8EQEEMIQQCQAJAAkACQAJAQfArKAIAIANLDQBBCyEEQdgrKAIAIANLDQBBwCsoAgAgA0sNBEEJIQRBqCsoAgAgA0sNAEEIIQRBkCsoAgAgA0sNAEH4KigCACADSw0DQQYhBEHgKigCACADSw0AQcgqKAIAIANLDQJBBCEEQbAqKAIAIANLDQBBAyEEQZgqKAIAIANLDQBBgCooAgAgA0sNAUEBIQRB6CkoAgAgA0sNAEEAIQRB0CkoAgAgA00NCAsgACABIAIgBBADGiAEDwtBrCooAgAhBEGcKigCACEFIAAgASACQQIQAyEGQQAhAwNAIAMgACABQQJ0aiIHKAIAIghBAEdqIAcoAgQiA0EAR2ogBCAFIAhsIANqai0AAGohAyABQQJqIgEgAkkNAAtBAkEDIAMgBkobDwtB9CooAgAhBEHkKigCACEFIAAgASACQQUQAyEGQQAhAwNAIAMgACABQQJ0aiIHKAIAIghBAEdqIAcoAgQiA0EAR2ogBCAFIAhsIANqai0AAGohAyABQQJqIgEgAkkNAAtBBUEGIAMgBkobDwtBpCsoAgAhBkGUKygCACEHIAAgASACQQcQAyEFQQAhBCABIQMDQCAEIAAgA0ECdGoiCCgCACIJQQBHaiAIKAIEIgRBAEdqIAYgByAJbCAEamotAABqIQQgA0ECaiIDIAJJDQALIAQgBSAEIAVIGyEGQQdBCCAEIAVKGyEEQbwrKAIAIQVBrCsoAgAhB0EAIQMDQCADIAAgAUECdGoiCCgCACIJQQBHaiAIKAIEIgNBAEdqIAUgByAJbCADamotAABqIQMgAUECaiIBIAJJDQALQQkgBCADIAZMGw8LQewrKAIAIQZB3CsoAgAhByAAIAEgAkEKEAMhBUEAIQQgASEDA0AgBCAAIANBAnRqIggoAgAiCUEAR2ogCCgCBCIEQQBHaiAGIAcgCWwgBGpqLQAAaiEEIANBAmoiAyACSQ0ACyAEIAUgBCAFSBshBkEKQQsgBCAFShshBEGELCgCACEFQfQrKAIAIQdBACEDA0AgAyAAIAFBAnRqIggoAgAiCUEAR2ogCCgCBCIDQQBHaiAFIAcgCWwgA2pqLQAAaiEDIAFBAmoiASACSQ0AC0EMIAQgAyAGTBsPC0HMLCgCACEEQbwsKAIAIQUgACABIAJBDRADIQZBACEDA0AgAyAAIAFBAnRqIgcoAgAiCEEAR2ogBygCBCIDQQBHaiAEIAUgCGwgA2pqLQAAaiEDIAFBAmoiASACSQ0AC0ENQQ8gAyAGShsPCwJ/QQ8gA0EPayIFQcQsKAIATQ0AGkEQQdwsKAIAIAVPDQAaQRFB9CwoAgAgBU8NABpBEkGMLSgCACAFTw0AGkETQaQtKAIAIAVPDQAaQRRBvC0oAgAgBU8NABpBFUHULSgCACAFTw0AGkEWQewtKAIAIAVPDQAaQRdBAEGELigCACAFTxsLIQQCf0EYQZwuKAIAIAVPDQAaQRlBtC4oAgAgBU8NABpBGkHMLigCACAFTw0AGkEbQeQuKAIAIAVPDQAaQRxB/C4oAgAgBU8NABpBHUGULygCACAFTw0AGkEeQawvKAIAIAVPDQAaQR9BAEHELygCACAFTxsLIQMgACABIAIgBBADIQUgAyAEIAAgASACIAMQAyAFSBsFQQALDwsgACABIAJBABADGkEAC9YCAQF/AkAgAUUNACAAQQA6AAAgACABaiICQQFrQQA6AAAgAUEDSQ0AIABBADoAAiAAQQA6AAEgAkEDa0EAOgAAIAJBAmtBADoAACABQQdJDQAgAEEAOgADIAJBBGtBADoAACABQQlJDQAgAEEAIABrQQNxIgJqIgBBADYCACAAIAEgAmtBfHEiAmoiAUEEa0EANgIAIAJBCUkNACAAQQA2AgggAEEANgIEIAFBCGtBADYCACABQQxrQQA2AgAgAkEZSQ0AIABBADYCGCAAQQA2AhQgAEEANgIQIABBADYCDCABQRBrQQA2AgAgAUEUa0EANgIAIAFBGGtBADYCACABQRxrQQA2AgAgAiAAQQRxQRhyIgJrIgFBIEkNACAAIAJqIQADQCAAQgA3AxggAEIANwMQIABCADcDCCAAQgA3AwAgAEEgaiEAIAFBIGsiAUEfSw0ACwsLtykBC38jAEEQayILJAACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEHokwEoAgAiBkEQIABBC2pBeHEgAEELSRsiBUEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgJBA3QiAUGQlAFqIgAgAUGYlAFqKAIAIgEoAggiBEYEQEHokwEgBkF+IAJ3cTYCAAwBCyAEIAA2AgwgACAENgIICyABQQhqIQAgASACQQN0IgJBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMCgsgBUHwkwEoAgAiB00NASABBEACQEECIAB0IgJBACACa3IgASAAdHEiAEEAIABrcWgiAUEDdCIAQZCUAWoiAiAAQZiUAWooAgAiACgCCCIERgRAQeiTASAGQX4gAXdxIgY2AgAMAQsgBCACNgIMIAIgBDYCCAsgACAFQQNyNgIEIAAgBWoiCCABQQN0IgEgBWsiBEEBcjYCBCAAIAFqIAQ2AgAgBwRAIAdBeHFBkJQBaiEBQfyTASgCACECAn8gBkEBIAdBA3Z0IgNxRQRAQeiTASADIAZyNgIAIAEMAQsgASgCCAshAyABIAI2AgggAyACNgIMIAIgATYCDCACIAM2AggLIABBCGohAEH8kwEgCDYCAEHwkwEgBDYCAAwKC0HskwEoAgAiCkUNASAKQQAgCmtxaEECdEGYlgFqKAIAIgIoAgRBeHEgBWshAyACIQEDQAJAIAEoAhAiAEUEQCABKAIUIgBFDQELIAAoAgRBeHEgBWsiASADIAEgA0kiARshAyAAIAIgARshAiAAIQEMAQsLIAIoAhghCSACIAIoAgwiBEcEQCACKAIIIgBB+JMBKAIASRogACAENgIMIAQgADYCCAwJCyACQRRqIgEoAgAiAEUEQCACKAIQIgBFDQMgAkEQaiEBCwNAIAEhCCAAIgRBFGoiASgCACIADQAgBEEQaiEBIAQoAhAiAA0ACyAIQQA2AgAMCAtBfyEFIABBv39LDQAgAEELaiIAQXhxIQVB7JMBKAIAIghFDQBBACAFayEDAkACQAJAAn9BACAFQYACSQ0AGkEfIAVB////B0sNABogBUEmIABBCHZnIgBrdkEBcSAAQQF0a0E+agsiB0ECdEGYlgFqKAIAIgFFBEBBACEADAELQQAhACAFQRkgB0EBdmtBACAHQR9HG3QhAgNAAkAgASgCBEF4cSAFayIGIANPDQAgASEEIAYiAw0AQQAhAyABIQAMAwsgACABKAIUIgYgBiABIAJBHXZBBHFqKAIQIgFGGyAAIAYbIQAgAkEBdCECIAENAAsLIAAgBHJFBEBBACEEQQIgB3QiAEEAIABrciAIcSIARQ0DIABBACAAa3FoQQJ0QZiWAWooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAVrIgIgA0khASACIAMgARshAyAAIAQgARshBCAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAERQ0AIANB8JMBKAIAIAVrTw0AIAQoAhghByAEIAQoAgwiAkcEQCAEKAIIIgBB+JMBKAIASRogACACNgIMIAIgADYCCAwHCyAEQRRqIgEoAgAiAEUEQCAEKAIQIgBFDQMgBEEQaiEBCwNAIAEhBiAAIgJBFGoiASgCACIADQAgAkEQaiEBIAIoAhAiAA0ACyAGQQA2AgAMBgsgBUHwkwEoAgAiAU0EQEH8kwEoAgAhAAJAIAEgBWsiAkEQTwRAQfCTASACNgIAQfyTASAAIAVqIgQ2AgAgBCACQQFyNgIEIAAgAWogAjYCACAAIAVBA3I2AgQMAQtB/JMBQQA2AgBB8JMBQQA2AgAgACABQQNyNgIEIAAgAWoiASABKAIEQQFyNgIECyAAQQhqIQAMCAsgBUH0kwEoAgAiAkkEQEH0kwEgAiAFayIBNgIAQYCUAUGAlAEoAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEADAgLQQAhACAFQS9qIgMCf0HAlwEoAgAEQEHIlwEoAgAMAQtBzJcBQn83AgBBxJcBQoCggICAgAQ3AgBBwJcBIAtBDGpBcHFB2KrVqgVzNgIAQdSXAUEANgIAQaSXAUEANgIAQYAgCyIBaiIGQQAgAWsiCHEiASAFTQ0HQaCXASgCACIEBEBBmJcBKAIAIgcgAWoiCSAHTQ0IIAQgCUkNCAsCQEGklwEtAABBBHFFBEACQAJAAkACQEGAlAEoAgAiBARAQaiXASEAA0AgBCAAKAIAIgdPBEAgByAAKAIEaiAESw0DCyAAKAIIIgANAAsLQQAQBSICQX9GDQMgASEGQcSXASgCACIAQQFrIgQgAnEEQCABIAJrIAIgBGpBACAAa3FqIQYLIAUgBk8NA0GglwEoAgAiAARAQZiXASgCACIEIAZqIgggBE0NBCAAIAhJDQQLIAYQBSIAIAJHDQEMBQsgBiACayAIcSIGEAUiAiAAKAIAIAAoAgRqRg0BIAIhAAsgAEF/Rg0BIAYgBUEwak8EQCAAIQIMBAtByJcBKAIAIgIgAyAGa2pBACACa3EiAhAFQX9GDQEgAiAGaiEGIAAhAgwDCyACQX9HDQILQaSXAUGklwEoAgBBBHI2AgALIAEQBSECQQAQBSEAIAJBf0YNBSAAQX9GDQUgACACTQ0FIAAgAmsiBiAFQShqTQ0FC0GYlwFBmJcBKAIAIAZqIgA2AgBBnJcBKAIAIABJBEBBnJcBIAA2AgALAkBBgJQBKAIAIgMEQEGolwEhAANAIAIgACgCACIBIAAoAgQiBGpGDQIgACgCCCIADQALDAQLQfiTASgCACIAQQAgACACTRtFBEBB+JMBIAI2AgALQQAhAEGslwEgBjYCAEGolwEgAjYCAEGIlAFBfzYCAEGMlAFBwJcBKAIANgIAQbSXAUEANgIAA0AgAEEDdCIBQZiUAWogAUGQlAFqIgQ2AgAgAUGclAFqIAQ2AgAgAEEBaiIAQSBHDQALQfSTASAGQShrIgBBeCACa0EHcUEAIAJBCGpBB3EbIgFrIgQ2AgBBgJQBIAEgAmoiATYCACABIARBAXI2AgQgACACakEoNgIEQYSUAUHQlwEoAgA2AgAMBAsgAC0ADEEIcQ0CIAEgA0sNAiACIANNDQIgACAEIAZqNgIEQYCUASADQXggA2tBB3FBACADQQhqQQdxGyIAaiIBNgIAQfSTAUH0kwEoAgAgBmoiAiAAayIANgIAIAEgAEEBcjYCBCACIANqQSg2AgRBhJQBQdCXASgCADYCAAwDC0EAIQQMBQtBACECDAMLQfiTASgCACACSwRAQfiTASACNgIACyACIAZqIQFBqJcBIQACQAJAAkACQAJAAkADQCABIAAoAgBHBEAgACgCCCIADQEMAgsLIAAtAAxBCHFFDQELQaiXASEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiIEIANLDQMLIAAoAgghAAwACwALIAAgAjYCACAAIAAoAgQgBmo2AgQgAkF4IAJrQQdxQQAgAkEIakEHcRtqIgcgBUEDcjYCBCABQXggAWtBB3FBACABQQhqQQdxG2oiBiAFIAdqIgVrIQAgAyAGRgRAQYCUASAFNgIAQfSTAUH0kwEoAgAgAGoiADYCACAFIABBAXI2AgQMAwtB/JMBKAIAIAZGBEBB/JMBIAU2AgBB8JMBQfCTASgCACAAaiIANgIAIAUgAEEBcjYCBCAAIAVqIAA2AgAMAwsgBigCBCIDQQNxQQFGBEAgA0F4cSEJAkAgA0H/AU0EQCAGKAIIIgEgA0EDdiIEQQN0QZCUAWpGGiABIAYoAgwiAkYEQEHokwFB6JMBKAIAQX4gBHdxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBigCGCEIAkAgBiAGKAIMIgJHBEAgBigCCCIBIAI2AgwgAiABNgIIDAELAkAgBkEUaiIDKAIAIgENACAGQRBqIgMoAgAiAQ0AQQAhAgwBCwNAIAMhBCABIgJBFGoiAygCACIBDQAgAkEQaiEDIAIoAhAiAQ0ACyAEQQA2AgALIAhFDQACQCAGKAIcIgFBAnRBmJYBaiIEKAIAIAZGBEAgBCACNgIAIAINAUHskwFB7JMBKAIAQX4gAXdxNgIADAILIAhBEEEUIAgoAhAgBkYbaiACNgIAIAJFDQELIAIgCDYCGCAGKAIQIgEEQCACIAE2AhAgASACNgIYCyAGKAIUIgFFDQAgAiABNgIUIAEgAjYCGAsgBiAJaiIGKAIEIQMgACAJaiEACyAGIANBfnE2AgQgBSAAQQFyNgIEIAAgBWogADYCACAAQf8BTQRAIABBeHFBkJQBaiEBAn9B6JMBKAIAIgJBASAAQQN2dCIAcUUEQEHokwEgACACcjYCACABDAELIAEoAggLIQAgASAFNgIIIAAgBTYCDCAFIAE2AgwgBSAANgIIDAMLQR8hAyAAQf///wdNBEAgAEEmIABBCHZnIgFrdkEBcSABQQF0a0E+aiEDCyAFIAM2AhwgBUIANwIQIANBAnRBmJYBaiEBAkBB7JMBKAIAIgJBASADdCIEcUUEQEHskwEgAiAEcjYCACABIAU2AgAMAQsgAEEZIANBAXZrQQAgA0EfRxt0IQMgASgCACECA0AgAiIBKAIEQXhxIABGDQMgA0EddiECIANBAXQhAyABIAJBBHFqIgQoAhAiAg0ACyAEIAU2AhALIAUgATYCGCAFIAU2AgwgBSAFNgIIDAILQfSTASAGQShrIgBBeCACa0EHcUEAIAJBCGpBB3EbIgFrIgg2AgBBgJQBIAEgAmoiATYCACABIAhBAXI2AgQgACACakEoNgIEQYSUAUHQlwEoAgA2AgAgAyAEQScgBGtBB3FBACAEQSdrQQdxG2pBL2siACAAIANBEGpJGyIBQRs2AgQgAUGwlwEpAgA3AhAgAUGolwEpAgA3AghBsJcBIAFBCGo2AgBBrJcBIAY2AgBBqJcBIAI2AgBBtJcBQQA2AgAgAUEYaiEAA0AgAEEHNgIEIABBCGohAiAAQQRqIQAgAiAESQ0ACyABIANGDQMgASABKAIEQX5xNgIEIAMgASADayICQQFyNgIEIAEgAjYCACACQf8BTQRAIAJBeHFBkJQBaiEAAn9B6JMBKAIAIgFBASACQQN2dCICcUUEQEHokwEgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDCADIAA2AgwgAyABNgIIDAQLQR8hACACQf///wdNBEAgAkEmIAJBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyADIAA2AhwgA0IANwIQIABBAnRBmJYBaiEBAkBB7JMBKAIAIgRBASAAdCIGcUUEQEHskwEgBCAGcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEEA0AgBCIBKAIEQXhxIAJGDQQgAEEddiEEIABBAXQhACABIARBBHFqIgYoAhAiBA0ACyAGIAM2AhALIAMgATYCGCADIAM2AgwgAyADNgIIDAMLIAEoAggiACAFNgIMIAEgBTYCCCAFQQA2AhggBSABNgIMIAUgADYCCAsgB0EIaiEADAULIAEoAggiACADNgIMIAEgAzYCCCADQQA2AhggAyABNgIMIAMgADYCCAtB9JMBKAIAIgAgBU0NAEH0kwEgACAFayIBNgIAQYCUAUGAlAEoAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEADAMLQeSTAUEwNgIAQQAhAAwCCwJAIAdFDQACQCAEKAIcIgBBAnRBmJYBaiIBKAIAIARGBEAgASACNgIAIAINAUHskwEgCEF+IAB3cSIINgIADAILIAdBEEEUIAcoAhAgBEYbaiACNgIAIAJFDQELIAIgBzYCGCAEKAIQIgAEQCACIAA2AhAgACACNgIYCyAEKAIUIgBFDQAgAiAANgIUIAAgAjYCGAsCQCADQQ9NBEAgBCADIAVqIgBBA3I2AgQgACAEaiIAIAAoAgRBAXI2AgQMAQsgBCAFQQNyNgIEIAQgBWoiAiADQQFyNgIEIAIgA2ogAzYCACADQf8BTQRAIANBeHFBkJQBaiEAAn9B6JMBKAIAIgFBASADQQN2dCIDcUUEQEHokwEgASADcjYCACAADAELIAAoAggLIQEgACACNgIIIAEgAjYCDCACIAA2AgwgAiABNgIIDAELQR8hACADQf///wdNBEAgA0EmIANBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyACIAA2AhwgAkIANwIQIABBAnRBmJYBaiEBAkACQCAIQQEgAHQiBnFFBEBB7JMBIAYgCHI2AgAgASACNgIADAELIANBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhBQNAIAUiASgCBEF4cSADRg0CIABBHXYhBiAAQQF0IQAgASAGQQRxaiIGKAIQIgUNAAsgBiACNgIQCyACIAE2AhggAiACNgIMIAIgAjYCCAwBCyABKAIIIgAgAjYCDCABIAI2AgggAkEANgIYIAIgATYCDCACIAA2AggLIARBCGohAAwBCwJAIAlFDQACQCACKAIcIgBBAnRBmJYBaiIBKAIAIAJGBEAgASAENgIAIAQNAUHskwEgCkF+IAB3cTYCAAwCCyAJQRBBFCAJKAIQIAJGG2ogBDYCACAERQ0BCyAEIAk2AhggAigCECIABEAgBCAANgIQIAAgBDYCGAsgAigCFCIARQ0AIAQgADYCFCAAIAQ2AhgLAkAgA0EPTQRAIAIgAyAFaiIAQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDAELIAIgBUEDcjYCBCACIAVqIgQgA0EBcjYCBCADIARqIAM2AgAgBwRAIAdBeHFBkJQBaiEAQfyTASgCACEBAn9BASAHQQN2dCIFIAZxRQRAQeiTASAFIAZyNgIAIAAMAQsgACgCCAshBiAAIAE2AgggBiABNgIMIAEgADYCDCABIAY2AggLQfyTASAENgIAQfCTASADNgIACyACQQhqIQALIAtBEGokACAAC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgIQUgAyAAoiEEIAJFBEAgBCADIAWiRElVVVVVVcW/oKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBSAEoqGiIAGhIARESVVVVVVVxT+ioKELkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA/oiIDoSIERAAAAAAAAPA/IAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC4kMAQd/AkAgAEUNACAAQQhrIgIgAEEEaygCACIBQXhxIgBqIQUCQCABQQFxDQAgAUEDcUUNASACIAIoAgAiAWsiAkH4kwEoAgBJDQEgACABaiEAQfyTASgCACACRwRAIAFB/wFNBEAgAigCCCIEIAFBA3YiAUEDdEGQlAFqRhogBCACKAIMIgNGBEBB6JMBQeiTASgCAEF+IAF3cTYCAAwDCyAEIAM2AgwgAyAENgIIDAILIAIoAhghBgJAIAIgAigCDCIBRwRAIAIoAggiAyABNgIMIAEgAzYCCAwBCwJAIAJBFGoiBCgCACIDDQAgAkEQaiIEKAIAIgMNAEEAIQEMAQsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIACyAGRQ0BAkAgAigCHCIEQQJ0QZiWAWoiAygCACACRgRAIAMgATYCACABDQFB7JMBQeyTASgCAEF+IAR3cTYCAAwDCyAGQRBBFCAGKAIQIAJGG2ogATYCACABRQ0CCyABIAY2AhggAigCECIDBEAgASADNgIQIAMgATYCGAsgAigCFCIDRQ0BIAEgAzYCFCADIAE2AhgMAQsgBSgCBCIBQQNxQQNHDQBB8JMBIAA2AgAgBSABQX5xNgIEIAIgAEEBcjYCBCAAIAJqIAA2AgAPCyACIAVPDQAgBSgCBCIBQQFxRQ0AAkAgAUECcUUEQEGAlAEoAgAgBUYEQEGAlAEgAjYCAEH0kwFB9JMBKAIAIABqIgA2AgAgAiAAQQFyNgIEIAJB/JMBKAIARw0DQfCTAUEANgIAQfyTAUEANgIADwtB/JMBKAIAIAVGBEBB/JMBIAI2AgBB8JMBQfCTASgCACAAaiIANgIAIAIgAEEBcjYCBCAAIAJqIAA2AgAPCyABQXhxIABqIQACQCABQf8BTQRAIAUoAggiBCABQQN2IgFBA3RBkJQBakYaIAQgBSgCDCIDRgRAQeiTAUHokwEoAgBBfiABd3E2AgAMAgsgBCADNgIMIAMgBDYCCAwBCyAFKAIYIQYCQCAFIAUoAgwiAUcEQCAFKAIIIgNB+JMBKAIASRogAyABNgIMIAEgAzYCCAwBCwJAIAVBFGoiBCgCACIDDQAgBUEQaiIEKAIAIgMNAEEAIQEMAQsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIACyAGRQ0AAkAgBSgCHCIEQQJ0QZiWAWoiAygCACAFRgRAIAMgATYCACABDQFB7JMBQeyTASgCAEF+IAR3cTYCAAwCCyAGQRBBFCAGKAIQIAVGG2ogATYCACABRQ0BCyABIAY2AhggBSgCECIDBEAgASADNgIQIAMgATYCGAsgBSgCFCIDRQ0AIAEgAzYCFCADIAE2AhgLIAIgAEEBcjYCBCAAIAJqIAA2AgAgAkH8kwEoAgBHDQFB8JMBIAA2AgAPCyAFIAFBfnE2AgQgAiAAQQFyNgIEIAAgAmogADYCAAsgAEH/AU0EQCAAQXhxQZCUAWohAQJ/QeiTASgCACIDQQEgAEEDdnQiAHFFBEBB6JMBIAAgA3I2AgAgAQwBCyABKAIICyEAIAEgAjYCCCAAIAI2AgwgAiABNgIMIAIgADYCCA8LQR8hBCAAQf///wdNBEAgAEEmIABBCHZnIgFrdkEBcSABQQF0a0E+aiEECyACIAQ2AhwgAkIANwIQIARBAnRBmJYBaiEHAkACQAJAQeyTASgCACIDQQEgBHQiAXFFBEBB7JMBIAEgA3I2AgAgByACNgIAIAIgBzYCGAwBCyAAQRkgBEEBdmtBACAEQR9HG3QhBCAHKAIAIQEDQCABIgMoAgRBeHEgAEYNAiAEQR12IQEgBEEBdCEEIAMgAUEEcWoiB0EQaigCACIBDQALIAcgAjYCECACIAM2AhgLIAIgAjYCDCACIAI2AggMAQsgAygCCCIAIAI2AgwgAyACNgIIIAJBADYCGCACIAM2AgwgAiAANgIIC0GIlAFBiJQBKAIAQQFrIgBBfyAAGzYCAAsLqAEAAkAgAUGACE4EQCAARAAAAAAAAOB/oiEAIAFB/w9JBEAgAUH/B2shAQwCCyAARAAAAAAAAOB/oiEAQf0XIAEgAUH9F04bQf4PayEBDAELIAFBgXhKDQAgAEQAAAAAAABgA6IhACABQbhwSwRAIAFByQdqIQEMAQsgAEQAAAAAAABgA6IhAEHwaCABIAFB8GhMG0GSD2ohAQsgACABQf8Haq1CNIa/ogu8AgEBfwJ/QQAgAUECdEGAM2oiAigCACAARg0AGkEBIAIoAhAgAEYNABpBAiABQQJ0QaAzaigCACAARg0AGkEDIAFBAnQiAkGwM2ooAgAgAEYNABpBBCACQcAzaigCACAARg0AGkEFIAFBAnQiAkHQM2ooAgAgAEYNABpBBiACQeAzaigCACAARg0AGkEHIAFBAnQiAkHwM2ooAgAgAEYNABpBCCACQYA0aigCACAARg0AGkEJIAFBAnQiAkGQNGooAgAgAEYNABpBCiACQaA0aigCACAARg0AGkELIAFBAnQiAkGwNGooAgAgAEYNABpBDCACQcA0aigCACAARg0AGkENIAFBAnQiAkHQNGooAgAgAEYNABpBDiACQeA0aigCACAARg0AGkEPQX8gAUECdEHwNGooAgAgAEYbCwvoBAMBfwZ8An4gAL0iCEIwiKchASAIQoCAgICAgID3P31C//////+fwgFYBEAgCEKAgICAgICA+D9RBEBEAAAAAAAAAAAPCyAARAAAAAAAAPC/oCIAIAAgAEQAAAAAAACgQaIiAqAgAqEiAiACokGI8wArAwAiBaIiBqAiByAAIAAgAKIiA6IiBCAEIAQgBEHY8wArAwCiIANB0PMAKwMAoiAAQcjzACsDAKJBwPMAKwMAoKCgoiADQbjzACsDAKIgAEGw8wArAwCiQajzACsDAKCgoKIgA0Gg8wArAwCiIABBmPMAKwMAokGQ8wArAwCgoKCiIAAgAqEgBaIgACACoKIgBiAAIAehoKCgoA8LAkAgAUHw/wFrQZ+Afk0EQCAIQv///////////wCDUARAIwBBEGsiAUQAAAAAAADwvzkDCCABKwMIRAAAAAAAAAAAow8LIAhCgICAgICAgPj/AFENASABQYCAAnFFIAFB8P8BcUHw/wFHcUUEQCAAIAChIgAgAKMPCyAARAAAAAAAADBDor1CgICAgICAgKADfSEICyAIQoCAgICAgIDzP30iCUI0h6e3IgNB0PIAKwMAoiAJQi2Ip0H/AHFBBHQiAUHo8wBqKwMAoCIEIAFB4PMAaisDACAIIAlCgICAgICAgHiDfb8gAUHggwFqKwMAoSABQeiDAWorAwChoiIAoCIFIAAgACAAoiICoiACIABBgPMAKwMAokH48gArAwCgoiAAQfDyACsDAKJB6PIAKwMAoKCiIAJB4PIAKwMAoiADQdjyACsDAKIgACAEIAWhoKCgoKAhAAsgAAsDAAELkwwCB38BfiMAQYACayIHJAAgA0GAjQVqIgQgAkECdGoiBSgCAEECdCAEIAJBC3QiCGpBiMAAaiICaiAAKAIAIgQvAQBBEHQ2AnwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AnggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AnQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AnAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AmwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AmggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AmQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AmAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AlwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AlggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AlQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AlAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AkwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AkggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AkQgBSgCAEECdCACakFAayAEQQJqIgQvAQBBEHQ2AgAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AjwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AjggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AjQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AjAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AiwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AiggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AiQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AiAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AhwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AhggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AhQgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AhAgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AgwgBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AgggBSgCAEECdCACaiAEQQJqIgQvAQBBEHQ2AgQgAiAFKAIAQQJ0aiAEQQJqIgIvAQBBEHQ2AgAgACACQQJqNgIAIAUoAgAhCUHAACECA0AgByACQQFrIgBBAnQiCmogAkECdEHAO2oiBjQC/AEgAyAIakGIzQVqIgIgACAJaiIEQUBrQf8DcUECdGo0AgB+QiCIpyAKQcA7ajQCACACIARB/wNxQQJ0ajQCAH5CIIinaiAGNAL8AyACIARBgAFqQf8DcUECdGo0AgB+QiCIp2ogBjQC/AUgAiAEQcABakH/A3FBAnRqNAIAfkIgiKdqIAY0AvwHIAIgBEGAAmpB/wNxQQJ0ajQCAH5CIIinaiAGQfwJajQCACACIARBwAJqQf8DcUECdGo0AgB+QiCIp2ogBkH8C2o0AgAgAiAEQYADakH/A3FBAnRqNAIAfkIgiKdqIAZB/A1qNAIAIAIgBEHAA2pB/wNxQQJ0ajQCAH5CIIinajYCACAAIgINAAsgBSAFKAIAQeADakH/A3E2AgBBHyECIAc0AvwBIQsDQCALIAMgAiIFQQh0aiIIQYSPBWo0AgB+QiCIpyEGQT8hAANAIAYgByAAQQJ0IgRBBGsiCWo0AgAgCSAIQYiNBWoiAmo0AgB+QiCIp2ogByAEQQhrIgZqNAIAIAIgBmo0AgB+QiCIp2ogByAEQQxrIgZqNAIAIAIgBmo0AgB+QiCIp2ogByAEQRBrIgZqNAIAIAIgBmo0AgB+QiCIp2ogByAEQRRrIgZqNAIAIAIgBmo0AgB+QiCIp2ogByAEQRhrIgRqNAIAIAIgBGo0AgB+QiCIp2ogByAAQQdrIgBBAnQiBGo0AgAgAiAEajQCAH5CIIinaiEGIAANAAsgASAFQQJ0aiAGNgIAIAVBAWshAiAFDQALIAdBgAJqJAALyAsBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQfyTASgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RBkJQBakYaIAAoAgwiAyAERw0CQeiTAUHokwEoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgJHBEAgACgCCCIDQfiTASgCAEkaIAMgAjYCDCACIAM2AggMAQsCQCAAQRRqIgQoAgAiAw0AIABBEGoiBCgCACIDDQBBACECDAELA0AgBCEHIAMiAkEUaiIEKAIAIgMNACACQRBqIQQgAigCECIDDQALIAdBADYCAAsgBkUNAgJAIAAoAhwiBEECdEGYlgFqIgMoAgAgAEYEQCADIAI2AgAgAg0BQeyTAUHskwEoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAI2AgAgAkUNAwsgAiAGNgIYIAAoAhAiAwRAIAIgAzYCECADIAI2AhgLIAAoAhQiA0UNAiACIAM2AhQgAyACNgIYDAILIAUoAgQiAkEDcUEDRw0BQfCTASABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAsCQCAFKAIEIgJBAnFFBEBBgJQBKAIAIAVGBEBBgJQBIAA2AgBB9JMBQfSTASgCACABaiIBNgIAIAAgAUEBcjYCBCAAQfyTASgCAEcNA0HwkwFBADYCAEH8kwFBADYCAA8LQfyTASgCACAFRgRAQfyTASAANgIAQfCTAUHwkwEoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAkF4cSABaiEBAkAgAkH/AU0EQCAFKAIIIgQgAkEDdiICQQN0QZCUAWpGGiAEIAUoAgwiA0YEQEHokwFB6JMBKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgJHBEAgBSgCCCIDQfiTASgCAEkaIAMgAjYCDCACIAM2AggMAQsCQCAFQRRqIgMoAgAiBA0AIAVBEGoiAygCACIEDQBBACECDAELA0AgAyEHIAQiAkEUaiIDKAIAIgQNACACQRBqIQMgAigCECIEDQALIAdBADYCAAsgBkUNAAJAIAUoAhwiBEECdEGYlgFqIgMoAgAgBUYEQCADIAI2AgAgAg0BQeyTAUHskwEoAgBBfiAEd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAI2AgAgAkUNAQsgAiAGNgIYIAUoAhAiAwRAIAIgAzYCECADIAI2AhgLIAUoAhQiA0UNACACIAM2AhQgAyACNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABB/JMBKAIARw0BQfCTASABNgIADwsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFB/wFNBEAgAUF4cUGQlAFqIQICf0HokwEoAgAiA0EBIAFBA3Z0IgFxRQRAQeiTASABIANyNgIAIAIMAQsgAigCCAshASACIAA2AgggASAANgIMIAAgAjYCDCAAIAE2AggPC0EfIQQgAUH///8HTQRAIAFBJiABQQh2ZyICa3ZBAXEgAkEBdGtBPmohBAsgACAENgIcIABCADcCECAEQQJ0QZiWAWohBwJAAkBB7JMBKAIAIgNBASAEdCICcUUEQEHskwEgAiADcjYCACAHIAA2AgAgACAHNgIYDAELIAFBGSAEQQF2a0EAIARBH0cbdCEEIAcoAgAhAgNAIAIiAygCBEF4cSABRg0CIARBHXYhAiAEQQF0IQQgAyACQQRxaiIHQRBqKAIAIgINAAsgByAANgIQIAAgAzYCGAsgACAANgIMIAAgADYCCA8LIAMoAggiASAANgIMIAMgADYCCCAAQQA2AhggACADNgIMIAAgATYCCAsLwQEBAn8jAEEQayIBJAACfCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEBEAAAAAAAA8D8gAkGewZryA0kNARogAEQAAAAAAAAAABAKDAELIAAgAKEgAkGAgMD/B08NABoCQAJAAkACQCAAIAEQE0EDcQ4DAAECAwsgASsDACABKwMIEAoMAwsgASsDACABKwMIQQEQCZoMAgsgASsDACABKwMIEAqaDAELIAErAwAgASsDCEEBEAkLIQAgAUEQaiQAIAALzxgDFH8EfAF+IwBBMGsiCSQAAkACQAJAIAC9IhpCIIinIgNB/////wdxIgZB+tS9gARNBEAgA0H//z9xQfvDJEYNASAGQfyyi4AETQRAIBpCAFkEQCABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIhY5AwAgASAAIBahRDFjYhphtNC9oDkDCEEBIQMMBQsgASAARAAAQFT7Ifk/oCIARDFjYhphtNA9oCIWOQMAIAEgACAWoUQxY2IaYbTQPaA5AwhBfyEDDAQLIBpCAFkEQCABIABEAABAVPshCcCgIgBEMWNiGmG04L2gIhY5AwAgASAAIBahRDFjYhphtOC9oDkDCEECIQMMBAsgASAARAAAQFT7IQlAoCIARDFjYhphtOA9oCIWOQMAIAEgACAWoUQxY2IaYbTgPaA5AwhBfiEDDAMLIAZBu4zxgARNBEAgBkG8+9eABE0EQCAGQfyyy4AERg0CIBpCAFkEQCABIABEAAAwf3zZEsCgIgBEypSTp5EO6b2gIhY5AwAgASAAIBahRMqUk6eRDum9oDkDCEEDIQMMBQsgASAARAAAMH982RJAoCIARMqUk6eRDuk9oCIWOQMAIAEgACAWoUTKlJOnkQ7pPaA5AwhBfSEDDAQLIAZB+8PkgARGDQEgGkIAWQRAIAEgAEQAAEBU+yEZwKAiAEQxY2IaYbTwvaAiFjkDACABIAAgFqFEMWNiGmG08L2gOQMIQQQhAwwECyABIABEAABAVPshGUCgIgBEMWNiGmG08D2gIhY5AwAgASAAIBahRDFjYhphtPA9oDkDCEF8IQMMAwsgBkH6w+SJBEsNAQsgACAARIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIhdEAABAVPsh+b+ioCIWIBdEMWNiGmG00D2iIhihIhlEGC1EVPsh6b9jIQICfyAXmUQAAAAAAADgQWMEQCAXqgwBC0GAgICAeAshAwJAIAIEQCADQQFrIQMgF0QAAAAAAADwv6AiF0QxY2IaYbTQPaIhGCAAIBdEAABAVPsh+b+ioCEWDAELIBlEGC1EVPsh6T9kRQ0AIANBAWohAyAXRAAAAAAAAPA/oCIXRDFjYhphtNA9oiEYIAAgF0QAAEBU+yH5v6KgIRYLIAEgFiAYoSIAOQMAAkAgBkEUdiICIAC9QjSIp0H/D3FrQRFIDQAgASAWIBdEAABgGmG00D2iIgChIhkgF0RzcAMuihmjO6IgFiAZoSAAoaEiGKEiADkDACACIAC9QjSIp0H/D3FrQTJIBEAgGSEWDAELIAEgGSAXRAAAAC6KGaM7oiIAoSIWIBdEwUkgJZqDezmiIBkgFqEgAKGhIhihIgA5AwALIAEgFiAAoSAYoTkDCAwBCyAGQYCAwP8HTwRAIAEgACAAoSIAOQMAIAEgADkDCEEAIQMMAQsgGkL/////////B4NCgICAgICAgLDBAIS/IQBBACEDQQEhAgNAIAlBEGogA0EDdGoCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAu3IhY5AwAgACAWoUQAAAAAAABwQaIhAEEBIQMgAiEEQQAhAiAEDQALIAkgADkDIEECIQMDQCADIgJBAWshAyAJQRBqIAJBA3RqKwMARAAAAAAAAAAAYQ0ACyAJQRBqIQ5BACEEIwBBsARrIgUkACAGQRR2QZYIayIDQQNrQRhtIgZBACAGQQBKGyIPQWhsIANqIQZBxMsAKAIAIgggAkEBaiIKQQFrIgdqQQBOBEAgCCAKaiEDIA8gB2shAgNAIAVBwAJqIARBA3RqIAJBAEgEfEQAAAAAAAAAAAUgAkECdEHQywBqKAIAtws5AwAgAkEBaiECIARBAWoiBCADRw0ACwsgBkEYayELQQAhAyAIQQAgCEEAShshBCAKQQBMIQwDQAJAIAwEQEQAAAAAAAAAACEADAELIAMgB2ohDUEAIQJEAAAAAAAAAAAhAANAIA4gAkEDdGorAwAgBUHAAmogDSACa0EDdGorAwCiIACgIQAgAkEBaiICIApHDQALCyAFIANBA3RqIAA5AwAgAyAERiECIANBAWohAyACRQ0AC0EvIAZrIRJBMCAGayEQIAZBGWshEyAIIQMCQANAIAUgA0EDdGorAwAhAEEAIQIgAyEEIANBAEwiB0UEQANAIAVB4ANqIAJBAnRqAn8CfyAARAAAAAAAAHA+oiIWmUQAAAAAAADgQWMEQCAWqgwBC0GAgICAeAu3IhZEAAAAAAAAcMGiIACgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CzYCACAFIARBAWsiBEEDdGorAwAgFqAhACACQQFqIgIgA0cNAAsLAn8gACALEAwiACAARAAAAAAAAMA/opxEAAAAAAAAIMCioCIAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAshDCAAIAy3oSEAAkACQAJAAn8gC0EATCIURQRAIANBAnQgBWoiAiACKALcAyICIAIgEHUiAiAQdGsiBDYC3AMgAiAMaiEMIAQgEnUMAQsgCw0BIANBAnQgBWooAtwDQRd1CyINQQBMDQIMAQtBAiENIABEAAAAAAAA4D9mDQBBACENDAELQQAhAkEAIQQgB0UEQANAIAVB4ANqIAJBAnRqIhUoAgAhEUH///8HIQcCfwJAIAQNAEGAgIAIIQcgEQ0AQQAMAQsgFSAHIBFrNgIAQQELIQQgAkEBaiICIANHDQALCwJAIBQNAEH///8DIQICQAJAIBMOAgEAAgtB////ASECCyADQQJ0IAVqIgcgBygC3AMgAnE2AtwDCyAMQQFqIQwgDUECRw0ARAAAAAAAAPA/IAChIQBBAiENIARFDQAgAEQAAAAAAADwPyALEAyhIQALIABEAAAAAAAAAABhBEBBACEEIAMhAgJAIAMgCEwNAANAIAVB4ANqIAJBAWsiAkECdGooAgAgBHIhBCACIAhKDQALIARFDQAgCyEGA0AgBkEYayEGIAVB4ANqIANBAWsiA0ECdGooAgBFDQALDAMLQQEhAgNAIAIiBEEBaiECIAVB4ANqIAggBGtBAnRqKAIARQ0ACyADIARqIQQDQCAFQcACaiADIApqIgdBA3RqIANBAWoiAyAPakECdEHQywBqKAIAtzkDAEEAIQJEAAAAAAAAAAAhACAKQQBKBEADQCAOIAJBA3RqKwMAIAVBwAJqIAcgAmtBA3RqKwMAoiAAoCEAIAJBAWoiAiAKRw0ACwsgBSADQQN0aiAAOQMAIAMgBEgNAAsgBCEDDAELCwJAIABBGCAGaxAMIgBEAAAAAAAAcEFmBEAgBUHgA2ogA0ECdGoCfwJ/IABEAAAAAAAAcD6iIhaZRAAAAAAAAOBBYwRAIBaqDAELQYCAgIB4CyICt0QAAAAAAABwwaIgAKAiAJlEAAAAAAAA4EFjBEAgAKoMAQtBgICAgHgLNgIAIANBAWohAwwBCwJ/IACZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CyECIAshBgsgBUHgA2ogA0ECdGogAjYCAAtEAAAAAAAA8D8gBhAMIQACQCADQQBIDQAgAyECA0AgBSACIgRBA3RqIAAgBUHgA2ogAkECdGooAgC3ojkDACACQQFrIQIgAEQAAAAAAABwPqIhACAEDQALQQAhByADQQBIDQAgCEEAIAhBAEobIQYgAyEEA0AgBiAHIAYgB0kbIQsgAyAEayEIQQAhAkQAAAAAAAAAACEAA0AgAkEDdEGg4QBqKwMAIAUgAiAEakEDdGorAwCiIACgIQAgAiALRyEKIAJBAWohAiAKDQALIAVBoAFqIAhBA3RqIAA5AwAgBEEBayEEIAMgB0chAiAHQQFqIQcgAg0ACwtEAAAAAAAAAAAhACADQQBOBEAgAyECA0AgAiIEQQFrIQIgACAFQaABaiAEQQN0aisDAKAhACAEDQALCyAJIACaIAAgDRs5AwAgBSsDoAEgAKEhAEEBIQIgA0EASgRAA0AgACAFQaABaiACQQN0aisDAKAhACACIANHIQQgAkEBaiECIAQNAAsLIAkgAJogACANGzkDCCAFQbAEaiQAIAxBB3EhAyAJKwMAIQAgGkIAUwRAIAEgAJo5AwAgASAJKwMImjkDCEEAIANrIQMMAQsgASAAOQMAIAEgCSsDCDkDCAsgCUEwaiQAIAMLGAAgASAAKAJoNgIAIABBADYCaCAAKAJgC7xUAyF/JH4CfCAAIAEoAgA2AogRIAAoAgBBAkYEQCAAQYwRaiABKAIENgIACwJAIAArAzAiSEQAAAAAAAAAAGEEQCAAKAIgIQEMAQsgACAAKwM4IkkgSEQAAAAAAADwv6BlIgE2AiAgACBJRAAAAAAAAPA/RAAAAAAAAAAAIAEbIEihoDkDOAsgACAAQUBrKAIAIAFqQQN0IgE2AiQgACABIAAoAowEayAAKAIQbTYCkAQCQCAAIgEoAgAiBUUNACAFQQFrIQAgASgCECIEQQBKBEAgAUHg+ARqIQcDQCAAIQMgBEEASgRAIAEgA0ECdGpBiBFqIQpBACEFA0AgBUEBaiEGQQAhAANAIAogASADQYA2bGoiCSAGQYASbCIQakGw2QBqIgQgAEEHdCIIaiADIAEQECAKIAQgCEGAAXJqIgQgAyABEBAgBEEAIAQoAgRrNgIEIARBACAEKAIMazYCDCAEQQAgBCgCFGs2AhQgBEEAIAQoAhxrNgIcIARBACAEKAIkazYCJCAEQQAgBCgCLGs2AiwgBEEAIAQoAjRrNgI0IARBACAEKAI8azYCPCAEQQAgBCgCRGs2AkQgBEEAIAQoAkxrNgJMIARBACAEKAJUazYCVCAEQQAgBCgCXGs2AlwgBEEAIAQoAmRrNgJkIARBACAEKAJsazYCbCAEQQAgBCgCdGs2AnQgBEEAIAQoAnxrNgJ8IABBEEkhBCAAQQJqIQAgBA0ACyAFQYASbCINIAEgA0GAJGxqakGwxQFqIQxBACEFA0AgBUECdCIEIAlBsNkAaiIIIA1qaiIANAIAISQgCCAQaiAEaiIENAIAISUgADQCgAEhJiAANAKAAiEnIAA0AoADISggADQCgAQhKSAANAKABSEqIAA0AoAGISsgADQCgAchLCAAQYAIajQCACEtIABBgAlqNAIAIS4gAEGACmo0AgAhLyAAQYALajQCACEwIABBgAxqNAIAITEgAEGADWo0AgAhMiAAQYAOajQCACEzIABBgA9qNAIAITQgAEGAEGo0AgAhNSAAQYARajQCACE2IAQ0AoABITcgBDQCgAIhOCAENAKAAyE5IAQ0AoAEITogBDQCgAUhOyAENAKABiE8IAQ0AoAHIT0gBEGACGo0AgAhPiAEQYAJajQCACE/IARBgApqNAIAIUAgBEGAC2o0AgAhQSAEQYAMajQCACFCIARBgA1qNAIAIUMgBEGADmo0AgAhRCAEQYAPajQCACFFIARBgBBqNAIAIUYgBEGAEWo0AgAhR0ERIQQDQCAMIAVByABsaiIIIAQiAEECdGogByAAQZABbGoiBDQCjAEgR35CIIinIAQ0AogBIEZ+QiCIp2ogBDQChAEgRX5CIIinaiAENAKAASBEfkIgiKdqIAQ0AnwgQ35CIIinaiAENAJ4IEJ+QiCIp2ogBDQCdCBBfkIgiKdqIAQ0AnAgQH5CIIinaiAENAJsID9+QiCIp2ogBDQCaCA+fkIgiKdqIAQ0AmQgPX5CIIinaiAENAJgIDx+QiCIp2ogBDQCXCA7fkIgiKdqIAQ0AlggOn5CIIinaiAENAJUIDl+QiCIp2ogBDQCUCA4fkIgiKdqIAQ0AkwgN35CIIinaiAENAJIICV+QiCIp2ogBDQCRCA2fkIgiKdqIAQ0AkAgNX5CIIinaiAENAI8IDR+QiCIp2ogBDQCOCAzfkIgiKdqIAQ0AjQgMn5CIIinaiAENAIwIDF+QiCIp2ogBDQCLCAwfkIgiKdqIAQ0AiggL35CIIinaiAENAIkIC5+QiCIp2ogBDQCICAtfkIgiKdqIAQ0AhwgLH5CIIinaiAENAIYICt+QiCIp2ogBDQCFCAqfkIgiKdqIAQ0AhAgKX5CIIinaiAENAIMICh+QiCIp2ogBDQCCCAnfkIgiKdqIAQ0AgQgJn5CIIinaiAENAIAICR+QiCIp2o2AgAgAEEBayEEIAANAAsgBQRAIAhByABrIgAgADQCRCIkQoOoie4GfiAINAIAIiVCy4GU8fv/////AH58Qh+IPgJEIAggADQCQCImQpDthuMDfiAINAIEIidC+Nfzhgd+fEIfiD4CBCAIICRCtf7rjgR+ICVCg6iJ7gZ+fEIfiD4CACAAICZC+Nfzhgd+ICdC8JL5nPz/////AH58Qh+IPgJAIAggADQCPCIkQp6B88ACfiAINAIIIiVC+ty1zAd+fEIfiD4CCCAAICRC+ty1zAd+ICVC4v6Mv/3/////AH58Qh+IPgI8IAAgADQCOCIkQqeB9e4HfiAINAIMIiVC+6Lcxf7/////AH58Qh+IPgI4IAggJEKF3aO6AX4gJUKngfXuB358Qh+IPgIMIAAgADQCNCIkQrbBtPsHfiAINAIQIiVCrfyTn///////AH58Qh+IPgI0IAggJELTg+zgAH4gJUK2wbT7B358Qh+IPgIQIAAgADQCMCIkQr/8kf8HfiAINAIUIiVCyceG1v//////AH58Qh+IPgIwIAggJEK3uPkpfiAlQr/8kf8HfnxCH4g+AhQgACAANAIsIiRC4uTy/wd+IAg0AhgiJULH+7rx//////8AfnxCH4g+AiwgCCAkQrmExQ5+ICVC4uTy/wd+fEIfiD4CGCAIIAA0AigiJEKj++QDfiAINAIcIiVCk43//wd+fEIfiD4CHCAAICRCk43//wd+ICVC3YSb/P//////AH58Qh+IPgIoCyAFQQFqIgVBIEcNAAsgASgCECIEIAYiBUoNAAsLIAEgA0GANmxqQbDZAGoiACAAIARBgBJsakGAEhAEIANBAWshACADDQALDAELIAVBA3EiAwRAA0AgASAAQYA2bGpBsNkAaiIIIAggBEGAEmxqQYASEAQgAEEBayEAIAZBAWoiBiADRw0ACwsgBUEESQ0AA0AgASAAQYA2bGoiBUGw2QBqIgYgBiAEQYASbCIDakGAEhAEIAVBsCNqIgYgAyAGakGAEhAEIAVB0BJrIgYgAyAGakGAEhAEIAVB0MgAayIFIAMgBWpBgBIQBCAAQQNGIQUgAEEEayEAIAVFDQALCyMAQaAFayIVJAACQCABIgMoAgAiEEUNACADKAIQIgFBAEwNACADQbgJaiEZIBBB3ABsQYwBaiEaA0AgEEEBayEQIAFBAEoEQCAaIBdBpH9saiEdIBBBqAFsIRggAyAQQQR0aiEMQQAhDQNAIANBADYCvLECIAMgAyAQQYAkbGogDUGAEmxqIg9BsMUBaiIFNgK4jQIgAyAdIA1BuAFsIghqaiEJQb8EIQADQCADIAAiAUECdCIAaiIGQbyfAmogACAFaigCACIEIARBH3UiAHMgAGsiADYCACAGQbyNAmogBKwiJCAkfkKAgICABHxCH4g+AgAgAygCvLECIgYgAEgEQCADIAA2AryxAiAAIQYLIAFBAWshACABDQALIAMgCGogEEHcAGxqIhFBFTYC1AEgFSANQdACbCISIBhqakGoARAHAkAgAygCCEEDRw0AIAMoAkghBCADIA1BAnRqIghBmLQCaiAGNgIAQcAEIQFBACEFA0AgAUECdCEAIANBvI0CaiIGIAFBBGsiAUECdGooAgBBCnUgACAGaiIAQQxrKAIAQQp1IABBBGsoAgBBCnUgBWogAEEIaygCAEEKdWpqaiEFIAENAAsgBEHcAGxBgDVqIQsgCEHAsQJqAn9BACAFRQ0AGiAFt0RoXxwAAACgPqIQDkScRK3+Qi7mP6MiSJlEAAAAAAAA4EFjBEAgSKoMAQtBgICAgHgLNgIAIAsoAlQhBUEUIQADQEEAIQoCf0EAIAUgCyAAIghBAnQiE2ooAgAiBEwNABogBSAEayIHQQNxIQ5BACEGQQAhACAFIAQiAUF/c2pBA08EQCAHQXxxIRRBACEFA0AgAyABQQJ0aiIHQciNAmooAgBBCnUgB0G8jQJqKAIAQQp1IABqIAdBwI0CaigCAEEKdWogB0HEjQJqKAIAQQp1amohACABQQRqIQEgBUEEaiIFIBRHDQALCyAOBEADQCADIAFBAnRqQbyNAmooAgBBCnUgAGohACABQQFqIQEgBkEBaiIGIA5HDQALC0EAIABFDQAaIAC3RGhfHAAAAKA+ohAORJxErf5CLuY/oyJImUQAAAAAAADgQWMEQCBIqgwBC0GAgICAeAshACADIA1B1ABsaiATaiIBQcixAmogADYCAAJAIBIgFWogGGogCEEDdGorAwAiSEQAAAAAAAAAAGENACBIEA5EnESt/kIu5j+jIkiZRAAAAAAAAOBBYwRAIEiqIQoMAQtBgICAgHghCgsgAUHwsgJqIAo2AgAgCEEBayEAIAQhBSAIDQALIA1BAUcNACADKAKYtAJBAEdBA0ECIAMoApy0AhtqIAMoAsCxAiADKALEsQJrIgAgAEEfdSIAcyAAa0EKSWogAygC0LECIAMoAqSyAmsiACAAQR91IgBzIABrIgAgAygC1LECIAMoAqiyAmsiASABQR91IgFzIAFrIgEgAygC5LECIAMoAriyAmsiBCAEQR91IgRzIARrIgQgAygClLICIAMoAuiyAmsiBSAFQR91IgVzIAVrIAMoApiyAiADKALssgJrIgUgBUEfdSIFcyAFa2ogAygCkLICIAMoAuSyAmsiBSAFQR91IgVzIAVraiADKAKMsgIgAygC4LICayIFIAVBH3UiBXMgBWtqIAMoAoiyAiADKALcsgJrIgUgBUEfdSIFcyAFa2ogAygChLICIAMoAtiyAiIFayIGIAZBH3UiBnMgBmtqIAMoAoCyAiADKALUsgJrIgYgBkEfdSIGcyAGa2ogAygC/LECIAMoAtCyAmsiBiAGQR91IgZzIAZraiADKAL4sQIiBiADKALMsgJrIgggCEEfdSIIcyAIa2ogAygC9LECIAMoAsiyAiIIayIKIApBH3UiCnMgCmtqIAMoAvCxAiADKALEsgIiCmsiByAHQR91IgdzIAdraiADKALssQIgAygCwLICayIHIAdBH3UiB3MgB2tqIAMoAuixAiIHIAMoAryyAmsiCyALQR91IgtzIAtramogAygC4LECIAMoArSyAiILayIOIA5BH3UiDnMgDmtqIAMoAtyxAiADKAKwsgIiDmsiEiASQR91IhJzIBJraiADKALYsQIiEiADKAKssgJrIhMgE0EfdSITcyATa2pqaiADKALMsQIgAygCoLICIhNrIhQgFEEfdSIUcyAUa2ogAygCyLECIhQgAygCnLICayIWIBZBH3UiFnMgFmtqQeQASWpBBkcEQCAMQgA3AnwgDEIANwKEAQwBCyAMQQA2AnwgDCAAIAFqIAMoAtyxAiAOayIAIABBH3UiAHMgAGtqIBIgAygCrLICayIAIABBH3UiAHMgAGtqIAMoAsyxAiATayIAIABBH3UiAHMgAGtqIBQgAygCnLICayIAIABBH3UiAHMgAGtqQQpJIAMoAoCzAiADKALUswJrIgAgAEEfdSIAcyAAayADKAKEswIgAygC2LMCayIAIABBH3UiAHMgAGtqIAMoAvyyAiADKALQswJrIgAgAEEfdSIAcyAAa2ogAygC+LICIAMoAsyzAmsiACAAQR91IgBzIABraiADKAL0sgIgAygCyLMCayIAIABBH3UiAHMgAGtqIAMoAvCyAiADKALEswJrIgAgAEEfdSIAcyAAa2pBCklxNgJ8IAxBADYCgAEgDCADKALwsQIgCmsiACAAQR91IgBzIABrIARqIAMoAuyxAiADKALAsgJrIgAgAEEfdSIAcyAAa2ogByADKAK8sgJrIgAgAEEfdSIAcyAAa2ogAygC4LECIAtrIgAgAEEfdSIAcyAAa2pBCkkgAygClLMCIAMoAuizAmsiACAAQR91IgBzIABrIAMoApizAiADKALsswJrIgAgAEEfdSIAcyAAa2ogAygCkLMCIAMoAuSzAmsiACAAQR91IgBzIABraiADKAKMswIgAygC4LMCayIAIABBH3UiAHMgAGtqIAMoAoizAiADKALcswJrIgAgAEEfdSIAcyAAa2pBCklxNgKAASAMQQA2AoQBIAwgAygCgLICIAMoAtSyAmsiACAAQR91IgBzIABrIAMoAoSyAiAFayIAIABBH3UiAHMgAGtqIAMoAvyxAiADKALQsgJrIgAgAEEfdSIAcyAAa2ogBiADKALMsgJrIgAgAEEfdSIAcyAAa2ogAygC9LECIAhrIgAgAEEfdSIAcyAAa2pBCkkgAygCqLMCIAMoAvyzAmsiACAAQR91IgBzIABrIAMoAqyzAiADKAKAtAJrIgAgAEEfdSIAcyAAa2ogAygCpLMCIAMoAvizAmsiACAAQR91IgBzIABraiADKAKgswIgAygC9LMCayIAIABBH3UiAHMgAGtqIAMoApyzAiADKALwswJrIgAgAEEfdSIAcyAAa2pBCklxNgKEASAMQQA2AogBIAwgAygClLICIAMoAuiyAmsiACAAQR91IgBzIABrIAMoApiyAiADKALssgJrIgAgAEEfdSIAcyAAa2ogAygCkLICIAMoAuSyAmsiACAAQR91IgBzIABraiADKAKMsgIgAygC4LICayIAIABBH3UiAHMgAGtqIAMoAoiyAiADKALcsgJrIgAgAEEfdSIAcyAAa2pBCkkgAygCvLMCIAMoApC0AmsiACAAQR91IgBzIABrIAMoAsCzAiADKAKUtAJrIgAgAEEfdSIAcyAAa2ogAygCuLMCIAMoAoy0AmsiACAAQR91IgBzIABraiADKAK0swIgAygCiLQCayIAIABBH3UiAHMgAGtqIAMoArCzAiADKAKEtAJrIgAgAEEfdSIAcyAAa2pBCklxNgKIAQtB/x8gAygCkAQgAygCAG0iBCAEQf8fThshACADKAK0jQIiBQRAQQAhAUH/HyAAISMgAygCsI0CIgYgBUEDdEF2bWoiBSEiAn8gDCANQQN0akGQEWorAwBEzczMzMzMCECiIAS3oSJImUQAAAAAAADgQWMEQCBIqgwBC0GAgICAeAsiBEHlAE4EQCAGQQZsQQptIgEgBCABIARIGyEBCyAjICIgASABIAVIG2oiACAAQf8fThshAAsgGSANQbABbGogEEHYAGxqQdgAEAcgAyANQbgCbGogEEGcAWxqQZgMakGcARAHIAlCADcCCCAJQgA3AgAgEUIANwKsASARQQA2AqQBIBFCADcCnAEgEUIANwK0ASARQgA3ArwBIBFCADcCxAEgEUIANwLMASADKAK8sQIEQCAAIQogD0GwEWohBiADIA1BuAFsakGcAWoiFCAQQdwAbGohCUH8LygCACEWQeQvKAIAIRtB+AAhEkGIfyEPIANBuI0CaiEeA0BBoI0GIQgCQCADIBJBAXYiEyAPaiIfQf8AaiIAQQJ0akGgvAJqNAIAIiQgAzQCvLECfkKAgICACHxCIIinQZSKCkoNACAeIABBA3RqQegmaiEHIAMoAriNAiELQQAhAEEAIQUDQAJ/IAsgAEECdCIEaigCACIBIAFBH3UiAXMgAWutICR+QoCAgIAIfEIgiKciAUGPzgBMBEAgAyABQQJ0akGgwAJqKAIADAELIAcrAwAgAyAEakG8nwJqKAIAt6JEaF8cAAAAAD6iIkggSJ+inyJImUQAAAAAAADgQWMEQCBIqgwBC0GAgICAeAshASAEIAZqIAE2AgAgBSABIAEgBUgbIQUgAEEBaiIAQcAERw0AC0HABCEAIAVBgMAASg0AAkACQAJAAkADQCAARQRAIAlBADYCCCAAIQQMAgsCQCAAQQJ0IAZqIgFBBGsoAgAEQCAAIQQMAQsgBiAAQQJrIgRBAnRqKAIABEAgACEEDAELIAFBDGsoAgANACAGIABBBGsiAEECdGooAgBFDQELC0EAIQsgCUEANgIIIARBA0wNAAJAAkADQCAEQQJ0IAZqIgBBBGsoAgBBAUoNASAAQQhrKAIAQQFKDQEgAEEMaygCAEEBSg0BIAYgBEEEayIAQQJ0aigCAEECTg0BIAkgC0EBaiILNgIIIARBB0shASAAIQQgAQ0ACyAJIARBAXU2AgQMAQsgCSAEQQF1NgIEIAtFDQILQQAhAUEAIQcgBCEFQQAhCANAIAFBAkEBIAYgBUECdCIcaiIAKAIAIg4bIA5BAEcgBiAcQQRyaigCACIcGyAAKAIIIiBBAEdqIAAoAgwiAEEAR2oiIWogFiAcQQF0IA5qICBBAnRqIABBA3RqIgBqLQAAaiEBIAcgACAbai0AAGogIWohByAFQQRqIQUgCEEBaiIIIAtHDQALQQAhBSABIAdMDQIMAwsgCSAEQQF1NgIEC0EAIQELQQEhBSABIQcLIAkgBTYCMAJAIARFBEAgCUIANwIgIAkoAjwhAQwBCyADKAJIQdwAbEGANWohCEEAIQADQCAAIgVBAWohACAIIAVBAnRqKAIAIARIDQALQQAhAQJAIAVBA3QiC0GAMGooAgAiAEUNAANAIAQgAEECdCAIaigCBE4EQCAAIQEMAgsgAEEBayIADQALCyAJIAE2AiAgCSABQQJ0IAhqQQRqIggoAgAiATYCPCALQYQwaigCACEAAkAgBUEFSQ0AA0AgAEECdCAIaigCBCAETA0BIABBAWsiAA0AC0EAIQALIAkgBDYCRCAJIAA2AiQgCSAAQQJ0IAhqKAIENgJAC0EAIQggCUEANgIcIAlCADcCFEEAIQsgAQRAIAkgBkEAIAEQBiILNgIUCyABIAkoAkAiDkkEQCAJIAYgASAOEAYiCDYCGAtBACEFQQAhACAEIA5LBEAgCSAGIA4gBBAGIgA2AhwLIAsEQCAGQQAgASALEAMhBQsgCARAIAYgASAOIAgQAyAFaiEFCyAABH8gBiAOIAkoAkQgABADIAVqBSAFCyAHaiEICyAPIB8gCCAKSCIAGyEPIBMgEiATayAAGyISQQFKDQALIAkgDzYCSCAUIBBB3ABsaigCEEECdCIBQZAyaigCACEAIAFB0DFqKAIAIQECQAJAIA1FBEAgAEEFbCIAIAFBC2xqIQQMAQtBACABQQVsIAMgEEEEdGoiBSgCgAEbQQAgAUEGbCAFKAJ8G2pBACAAQQVsIgAgBSgChAEbaiEEIAUoAogBDQELIAAgBGohBAsgCSAENgI0IAogBGsiDkEASARAIAkgCSgCSEEBazYCSAsgBiEKQfwvKAIAIQ9B5C8oAgAhEiADQbiNAmohEwNAIAkgCSgCSCIAQQFqNgJIQYCAASEGIAMgAEGAAWoiAEECdGpBoLwCajQCACIkIAM0AryxAn5CgICAgAh8QiCIp0GUigpMBEAgEyAAQQN0akHoJmohBSADKAK4jQIhCEEAIQBBACEGA0ACfyAIIABBAnQiBGooAgAiASABQR91IgFzIAFrrSAkfkKAgICACHxCIIinIgFBj84ATARAIAMgAUECdGpBoMACaigCAAwBCyAFKwMAIAMgBGpBvJ8CaigCALeiRGhfHAAAAAA+oiJIIEifop8iSJlEAAAAAAAA4EFjBEAgSKoMAQtBgICAgHgLIQEgBCAKaiABNgIAIAYgASABIAZIGyEGIABBAWoiAEHABEcNAAsLQcAEIQAgBkGAwABKDQACQAJAAkACQANAIABFBEAgCUEANgIIIAAhAQwCCwJAIABBAnQgCmoiBEEEaygCAARAIAAhAQwBCyAKIABBAmsiAUECdGooAgAEQCAAIQEMAQsgBEEMaygCAA0AIAogAEEEayIAQQJ0aigCAEUNAQsLQQAhBCAJQQA2AgggAUEDTA0AAkACQANAIAFBAnQgCmoiAEEEaygCAEEBSg0BIABBCGsoAgBBAUoNASAAQQxrKAIAQQFKDQEgCiABQQRrIgBBAnRqKAIAQQJODQEgCSAEQQFqIgQ2AgggAUEHSyEFIAAhASAFDQALIAkgAUEBdTYCBAwBCyAJIAFBAXU2AgQgBEUNAgtBACEFQQAhCCABIQZBACEAA0AgBUECQQEgCiAGQQJ0IhRqIgcoAgAiCxsgC0EARyAKIBRBBHJqKAIAIhQbIAcoAggiFkEAR2ogBygCDCIHQQBHaiIbaiAPIBRBAXQgC2ogFkECdGogB0EDdGoiB2otAABqIQUgCCAHIBJqLQAAaiAbaiEIIAZBBGohBiAAQQFqIgAgBEcNAAtBACEGIAUgCEwNAgwDCyAJIAFBAXU2AgQLQQAhBQtBASEGIAUhCAsgCSAGNgIwAkAgAUUEQCAJQgA3AiAgCSgCPCEFDAELIAMoAkhB3ABsQYA1aiEGQQAhAANAIAAiBEEBaiEAIAYgBEECdGooAgAgAUgNAAtBACEFAkAgBEEDdCIHQYAwaigCACIARQ0AA0AgASAAQQJ0IAZqKAIETgRAIAAhBQwCCyAAQQFrIgANAAsLIAkgBTYCICAJIAVBAnQgBmpBBGoiBigCACIFNgI8IAdBhDBqKAIAIQACQCAEQQVJDQADQCAAQQJ0IAZqKAIEIAFMDQEgAEEBayIADQALQQAhAAsgCSABNgJEIAkgADYCJCAJIABBAnQgBmooAgQ2AkALQQAhACAJQQA2AhwgCUIANwIUQQAhByAFBEAgCSAKQQAgBRAGIgc2AhQLIAUgCSgCQCILSQRAIAkgCiAFIAsQBiIANgIYC0EAIQZBACEEIAEgC0sEQCAJIAogCyABEAYiBDYCHAsgBwRAIApBACAFIAcQAyEGCyAABEAgCiAFIAsgABADIAZqIQYLIAQEfyAKIAsgCSgCRCAEEAMgBmoFIAYLIAhqIgAgDkoNAAsgCSAJKAI0IABqIgA2AgAgESAANgKcAQsgAyADKAKwjQIgAygCkAQgAygCAG0gESgCnAFrajYCsI0CIBEgESgC5AFB0gFqNgKoASANQQFqIg0gAygCECIBSA0ACwsgF0EBaiEXIBANAAsLAkAgAygCACIEQQJHDQAgAy0AkARBAXFFDQAgAyADKAKwjQJBAWo2ArCNAgsgAyADKAKwjQIiACADKAK0jQIiASAAIAFIGyIFIAVBCG8iBWs2ArCNAgJAAkAgBSAAIAFrIgBBACAAQQBKG2oiAARAIAMoApwBIABqIgFB/x9JDQECQCADKAIQIgZBAEwNACAEQQBMDQBBACEFA0AgAyAFQbgBbGpBnAFqIQhBACEBA0ACQCAARQRAQQAhAAwBCyAIIAFB3ABsaiIKQf8fIAooAgAiCmsiByAAIAAgB0obIgcgCmo2AgAgACAHayEAIAFBAWoiASAERw0BCwsgBUEBaiIFIAZHDQALCyADIAA2AngLDAELIAMgATYCnAELIBVBoAVqJABBACEEIwBBoANrIggkAAJAIAMoAgAiBUEATA0AIAMoAhAiAEEATA0AA0BBACEGIABBAEoEQANAIAMgBEGAJGxqIAZBgBJsaiIAQbDFAWohASAAQbARaiEFQQAhAANAAkAgASAAQQJ0IgpqKAIAQQBODQAgBSAKaiIKKAIAIgdBAEwNACAKQQAgB2s2AgALAkAgASAAQQFyQQJ0IgpqKAIAQQBODQAgBSAKaiIKKAIAIgdBAEwNACAKQQAgB2s2AgALIABBAmoiAEHABEcNAAsgBkEBaiIGIAMoAhAiAEgNAAsgAygCACEFCyAEQQFqIgQgBUgNAAsLIAhBCGogA0H0AGoiBkGYAxAEIANB4ABqIgBB/w9BCxACIAAgAygCCEECEAIgACADKAIMQQIQAiAAIAMoAkxFQQEQAiAAIAMoAkRBBBACIAAgAygCSEEDb0ECEAIgACADKAIgQQEQAiAAIAMoAlBBARACIAAgAygCFEECEAIgACADKAJUQQIQAiAAIAMoAlhBARACIAAgAygCXEEBEAIgACADKAIcQQIQAgJAIAMoAghBA0YEQCAAQQBBCRACIAgoAgghASADKAIAQQJGBEAgACABQQMQAgwCCyAAIAFBBRACDAELIABBAEEIEAIgCCgCCCEBIAMoAgBBAkYEQCAAIAFBAhACDAELIAAgAUEBEAILAkAgAygCCEEDRw0AIAMoAgBBAEwNAEEAIQQDQCAAIAhBCGogBEEEdGoiASgCCEEBEAIgACABKAIMQQEQAiAAIAEoAhBBARACIAAgASgCFEEBEAIgBEEBaiIEIAMoAgBIDQALC0EAIQECQCADKAIQIgRBAEwNACADKAIAIgVBAEwNAANAIAVBAEoEQCABQbgBbCAIakEwaiEKQQAhBANAIAAgCiAEQdwAbGoiBSgCAEEMEAIgACAFKAIEQQkQAiAAIAUoAgxBCBACIAAgBSgCEEEEQQkgAygCCEEDRhsQAiAAQQBBARACIAAgBSgCFEEFEAIgACAFKAIYQQUQAiAAIAUoAhxBBRACIAAgBSgCIEEEEAIgACAFKAIkQQMQAiADKAIIQQNGBEAgACAFKAIoQQEQAgsgACAFKAIsQQEQAiAAIAUoAjBBARACIARBAWoiBCADKAIAIgVIDQALIAMoAhAhBAsgAUEBaiIBIARIDQALIAhBCGogBkGYAxAEIARBAEwNACAFQQBMDQAgA0G4CWohCUEAIQEDQCAFQQBKBEAgAUG4AWwgCGpBMGohGEEAIQQDQCADIARBgCRsaiABQYASbGohECAYIARB3ABsaiIKKAIQQQJ0IgVBkDJqKAIAIQYgBUHQMWooAgAhBQJAAkACQAJAAkACQAJAIAEEQCAEQQR0IAhqKAIQDQELIAAgCSABQbABbGogBEHYAGxqIgcoAgAgBRACIAAgBygCBCAFEAIgACAHKAIIIAUQAiAAIAcoAgwgBRACIAAgBygCECAFEAIgACAHKAIUIAUQAiABRQ0BCyAEQQR0IAhqKAIUDQELIAAgCSABQbABbGogBEHYAGxqIgcoAhggBRACIAAgBygCHCAFEAIgACAHKAIgIAUQAiAAIAcoAiQgBRACIAAgBygCKCAFEAIgAUUNAQsgBEEEdCAIaigCGA0BCyAAIAkgAUGwAWxqIARB2ABsaiIFKAIsIAYQAiAAIAUoAjAgBhACIAAgBSgCNCAGEAIgACAFKAI4IAYQAiAAIAUoAjwgBhACIAFFDQELIARBBHQgCGooAhwNAQsgACAJIAFBsAFsaiAEQdgAbGoiBSgCQCAGEAIgACAFKAJEIAYQAiAAIAUoAkggBhACIAAgBSgCTCAGEAIgACAFKAJQIAYQAgsgEEGwEWohECADKAJIIQUgACgCCEEDdCAAKAIQa0EgaiETIAooAgRBAXQiBkEASgRAIAVB3ABsQYA1aiIFIAooAiAiB0ECdGooAgQhGSAHIAooAiRqQQJ0IAVqKAIIIRpBACEFA0ACQCAKIAUgGU4gBSAaTmpBAnRqKAIUIg5FDQAgECAFQQJ0IgdqKAIAIg0gDUEfdSIMcyAMayEMIBAgB0EEcmooAgAiESARQR91IgdzIAdrIQsgDUEATCEPIBFBAEwhFyAOQRhsQdApaiIHKAIEIRUgDkEQTgRAIAAgBygCEEEPIAsgC0EOSyINGyIRIBVBDyAMIAxBDksiDhsiEmxqIhVBAXRqLwEAIAcoAhQgFWotAAAQAiAAIAtBD2sgDEEPa0EAIA4bIgxBAXQgD3IgDCASGyIMIAcoAggiB3RyIAwgDRsiDEEBdCAXciAMIBEbIBFBAEcgEkEAR2ogB0EAIA4baiAHQQAgDRtqEAIMAQsgACAHKAIQIAwgFWwgC2oiDEEBdGovAQAiC0EBdCAPciALIA0bIgtBAXQgF3IgCyARGyAHKAIUIAxqLQAAIBFBAEcgDUEAR2pqEAILIAVBAmoiBSAGSA0ACwsgCigCCEECdCAGaiIRIAZKBEAgCigCMEEYbEHQKWoiBSgClAYhCyAFKAKQBiEOA0AgACAOIBAgBkECdCIHQQRyaigCACIFIAVBH3UiDXMgDWtBAXQgByAQaiIMKAIAIgcgB0EfdSINcyANa2ogDCgCCCINIA1BH3UiD3MgD2tBAnRqIAwoAgwiDCAMQR91Ig9zIA9rQQN0aiIPQQF0ai8BACALIA9qLQAAEAIgACAHQR92Ig9BAXQgBUEATHIgDyAFGyIPQQF0IA1BAExyIA8gDRsiD0EBdCAMQQBMciAPIAwbIA1BAEdBAkEBIAcbIAdBAEcgBRtqIAxBAEdqEAIgBkEEaiIGIBFIDQALCwJAIAooAgAgCigCNGsgEyAAKAIIQQN0IAAoAhBrQSBqa2oiBkUNACAGIAZBIG0iBUEFdGshCiAGQR9qQT9PBEADQCAAQX9BIBACIAVBAWsiBQ0ACwsgCkUNACAAQX8gCnRBf3MgChACCyAEQQFqIgQgAygCACIFSA0ACyADKAIQIQQLIAFBAWoiASAESA0ACwsgCEGgA2okACACIAMoAmg2AgAgA0EANgJoIAMoAmALCwAgACgCEEHABGwLigEBAX9BAyECAn8CQEHQMigCACAARg0AQdQyKAIAIABGDQBB2DIoAgAgAEYNAEECIQJB3DIoAgAgAEYNAEHgMigCACAARg0AQeQyKAIAIABGDQBBACECQegyKAIAIABGDQBB7DIoAgAgAEYNAEF/QfAyKAIAIABHDQEaC0F/IAIgASACEA1BAEgbCwvsEgMEfAl/An4jAEEgayIJJAAgCSABNgIEIAkgADYCACAJQoCAgIAQNwIUIAlCgAE3AgwgCSADNgIMIAkgAjYCCAJ/IAkoAgwhAUHYMigCACEMQdQyKAIAIQ1BAyEDAkACQEHQMigCACIOIAkoAgQiAEYNACAAIA1GDQAgACAMRg0AQQIhA0HcMigCACAARg0AQeAyKAIAIABGDQBB5DIoAgAgAEYNAEEAIQNB6DIoAgAgAEYNAEHsMigCACAARg0AQfAyKAIAIABHDQELQQAgASADEA1BAEgNARpBACEDAkBBiO0FEAgiAkUNACACQQRrLQAAQQNxRQ0AIAJBiO0FEAcLIAJFDQAjAEEQayIKJAAgAkIANwKAjQUgAkGIzQVqQYAgEAdBHyEBA0AgASIIQQF0QQFyIQtBwAAhAUE/IQADQCAKQREgAWsgC2y3RGZtQ1T7Iak/ohASRAAAAABlzc1BoiIEOQMIIAREAAAAAAAA4D9EAAAAAAAA4L8gBEQAAAAAAAAAAGYboCIEvSIRQjSIp0H/D3EiAUH/B2shDwJAIAFBswhPBEAgCiAEOQMIDAELIAFB/gdNBEAgCiARQoCAgICAgICAgH+DNwMIDAELIBEgD60iEoZC/////////weDUARAIAogBDkDCAwBCyAKQoCAgICAgIB4IBKHIBGDNwMICyACIAhBCHRqIAAiAUECdGpBiI0FagJ/IAorAwhEfXoE6AsuAUCiIgSZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CzYCACABQQFrIQAgAQ0ACyAIQQFrIQEgCA0ACyAKQRBqJAAgAkHg+ARqIQtBESEAA0AgACIBQQF0QQFytyEFQSQhAANAIAsgAUGQAWxqIABBAWsiAEECdGoCfyMAQRBrIggkAAJAIAC3RAAAAAAAAOA/oEStROdKGFe2P6IiBL1CIIinQf////8HcSIKQfvDpP8DTQRAIApBgIDA8gNJDQEgBEQAAAAAAAAAAEEAEAkhBAwBCyAKQYCAwP8HTwRAIAQgBKEhBAwBCwJAAkACQAJAIAQgCBATQQNxDgMAAQIDCyAIKwMAIAgrAwhBARAJIQQMAwsgCCsDACAIKwMIEAohBAwCCyAIKwMAIAgrAwhBARAJmiEEDAELIAgrAwAgCCsDCBAKmiEECyAIQRBqJAAgBCAAQQF0QRNqt0SBROdKGFemP6IgBaIQEqJEAADA////30GiIgSZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CzYCACAADQALIAFBAWshACABDQALQf8AIQEgAkG4jQJqIQpBgAEhCANAIAogASIAQQN0akHoJmoCfEGAASAIa7dEAAAAAAAA0D+iIgS9QjSIp0H/D3EiAUHJB2siCEE/TwRAIAREAAAAAAAA8D+gIAhBAEgNARogBL0hEQJAIAFBiQhJDQBEAAAAAAAAAAAgEUKAgICAgICAeFENAhogBEQAAAAAAADwP6AgAUH/D08NAhogEUIAWQRAIwBBEGsiAUQAAAAAAAAAcDkDCCABKwMIRAAAAAAAAABwogwDCyARQoCAgICAgLPIQFQNACMAQRBrIgFEAAAAAAAAABA5AwggASsDCEQAAAAAAAAAEKIMAgsgAUEAIBFCAYZCgICAgICAgI2Bf1gbIQELIARBoOIAKwMAIgUgBKAiBiAFoaEiBCAEoiIFIAWiIARByOIAKwMAokHA4gArAwCgoiAFIARBuOIAKwMAokGw4gArAwCgoiAEQajiACsDAKIgBr0iEqdBBHRB8A9xIghB0OIAaisDAKCgoCEEIAhB2OIAaikDACASQi2GfCERIAFFBEACfCASQoCAgIAIg1AEQCARQoCAgICAgIAIfb8iBSAEoiAFoCIEIASgDAELIBFCgICAgICAgPA/fL8iBSAEoiIGIAWgIgREAAAAAAAA8D9jBHwjAEEQayIBIRAgAUKAgICAgICACDcDCCAQIAErAwhEAAAAAAAAEACiOQMIRAAAAAAAAAAAIAREAAAAAAAA8D+gIgcgBiAFIAShoCAERAAAAAAAAPA/IAehoKCgRAAAAAAAAPC/oCIEIAREAAAAAAAAAABhGwUgBAtEAAAAAAAAEACiCwwBCyARvyIFIASiIAWgCyIEOQMAIAQgBKAiBEQAAMD////fQWQhASAKIABBAnRqQeguakH/////BwJ/IAREAAAAAAAA4D+gIgSZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyABGzYCACAAQQFrIQEgACIIDQALQZDOACEAIAJBoMACaiEBA0AgASAAQQFrIghBAnRqAn8gCLciBJ8gBKKfRA+cM6K0N7i/oEQAAAAAAADgP6AiBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLNgIAIAEgAEECayIAQQJ0agJ/IAC3IgSfIASin0QPnDOitDe4v6BEAAAAAAAA4D+gIgSZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CzYCACAADQALIAIgCSgCADYCACACIAkoAgQiADYCBCACIAkoAgg2AhQgAiAJKAIMIgg2AhggAiAJKAIQNgIcIAIgCSgCFDYCWCACIAkoAhg2AlwgAkIANwOwjQIgAkEANgJUIAJCADcCTCACQQE2AgwgAkEINgIoAn8CQCAAIA5GDQBBASEDIAAgDUYNAEECIQMgACAMRg0AQQIhAUEDQdwyKAIAIABGDQEaQQRB4DIoAgAgAEYNARpBBUHkMigCACAARg0BGkEAIQFBBkHoMigCACAARg0BGkEHQewyKAIAIABGDQEaQX8hA0EIQfAyKAIAIABGDQEaC0EDIQEgAwshAyACIAE2AgggAiADNgJIIAIgAUECdEHAMWooAgAiAzYCECACIAggARANNgJEIAJBQGsCfyAIt0QAAAAAAECPQKJEAAAAAAAAwD+iIAO3RAAAAAAAAIJAoiAAt6OiIgSZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIANgIAIAIgBCAAt6EiBDkDMCACIASaOQM4IAREAAAAAAAAAABhBEAgAkEANgIgC0GAIBAIIQAgAkEgNgJwIAJCADcCaCACQYAgNgJkIAIgADYCYCACQfQAakGYAxAHIAJBqAFBoAIgAigCAEEBRiIAG0HoAEGoASAAGyACKAIQQQJGGzYCjAQgAiEDCyADCyEAIAlBIGokACAACwQAQQQLBABBAgsWAQF/IAAoAmAiAQRAIAEQCwsgABALCwvXiQEiAEGACAv1AQEAAQABAAAAAQMCAwAAAAABAAIAAQADAAEAAQADAAIAAAABAwYDAwUFBQYAAAAAAAMAAgABAAEAAQABAAMAAgAAAAICBgMCBQUFBgAAAAAAAQACAAYABQADAAEABAAEAAcABQAHAAEABgABAAEAAAABAwYHAwMGBwYGBwgHBgcIBwADAAUAAQAGAAIAAwACAAUABAAEAAEAAwADAAIAAAADAwUHAwIEBQQEBQYGBQYHAQACAAoAEwAQAAoAAwADAAcACgAFAAMACwAEAA0AEQAIAAQADAALABIADwALAAIABwAGAAkADgADAAEABgAEAAUAAwACAEGACgskAQMGCAgJAwQGBwcIBgUHCAgJBwcICQkJBwcICQkKCAgJCgoKAEGwCgtFAwAEAAYAEgAMAAUABQABAAIAEAAJAAMABwADAAUADgAHAAMAEwARAA8ADQAKAAQADQAFAAgACwAFAAEADAAEAAQAAQABAEGACwskAgMGCAgJAwIECAgIBgQGCAgJCAgICQkKCAcICQoKCQgJCQsLAEGwCwtFBwAFAAkADgAPAAcABgAEAAUABQAGAAcABwAGAAgACAAIAAUADwAGAAkACgAFAAEACwAHAAkABgAEAAEADgAEAAYAAgAGAEGADAskAwMFBggJAwMEBQYIBAQFBgcIBgUGBwcIBwYHBwgJCAcICAkJAEGwDAugHQEAAgAKABcAIwAeAAwAEQADAAMACAAMABIAFQAMAAcACwAJAA8AFQAgACgAEwAGAA4ADQAWACIALgAXABIABwAUABMAIQAvABsAFgAJAAMAHwAWACkAGgAVABQABQADAA4ADQAKAAsAEAAGAAUAAQAJAAgABwAIAAQABAACAAAAAQMGCAkJCQoDBAYHCAkICAYGBwgJCgkJBwcICQoKCQoICAkKCgoKCgkJCgoLCwoLCAgJCgoKCwsJCAkKCgsLCwMABAAKABgAIgAhABUADwAFAAMABAAKACAAEQALAAoACwAHAA0AEgAeAB8AFAAFABkACwATADsAGwASAAwABQAjACEAHwA6AB4AEAAHAAUAHAAaACAAEwARAA8ACAAOAA4ADAAJAA0ADgAJAAQAAQALAAQABgAGAAYAAwACAAAAAgMFBwgJCAkDAwQGCAgHCAUFBgcICQgIBwYHCQgKCAkICAgJCQoJCggICQoKCwoLCAcHCAkKCgoIBwgJCgoKCgkABgAQACEAKQAnACYAGgAHAAUABgAJABcAEAAaAAsAEQAHAAsADgAVAB4ACgAHABEACgAPAAwAEgAcAA4ABQAgAA0AFgATABIAEAAJAAUAKAARAB8AHQARAA0ABAACABsADAALAA8ACgAHAAQAAQAbAAwACAAMAAYAAwABAAAABAMFBwgJCQkDAwQFBwcICAUEBQYHCAcIBgUGBgcICAgHBgcHCAgICQgHCAgICQgJCAcHCAgJCQoJCAgJCQkJCgEABQAOABUAIgAzAC4ARwAqADQARAA0AEMALAArABMAAwAEAAwAEwAfABoALAAhAB8AGAAgABgAHwAjABYADgAPAA0AFwAkADsAMQBNAEEAHQAoAB4AKAAbACEAKgAQABYAFAAlAD0AOABPAEkAQAArAEwAOAAlABoAHwAZAA4AIwAQADwAOQBhAEsAcgBbADYASQA3ACkAMAA1ABcAGAA6ABsAMgBgAEwARgBdAFQATQA6AE8AHQBKADEAKQARAC8ALQBOAEoAcwBeAFoATwBFAFMARwAyADsAJgAkAA8ASAAiADgAXwBcAFUAWwBaAFYASQBNAEEAMwAsACsAKgArABQAHgAsADcATgBIAFcATgA9AC4ANgAlAB4AFAAQADUAGQApACUALAA7ADYAUQBCAEwAOQA2ACUAEgAnAAsAIwAhAB8AOQAqAFIASABQAC8AOgA3ABUAFgAaACYAFgA1ABkAFwAmAEYAPAAzACQANwAaACIAFwAbAA4ACQAHACIAIAAcACcAMQBLAB4ANAAwACgANAAcABIAEQAJAAUALQAVACIAQAA4ADIAMQAtAB8AEwAMAA8ACgAHAAYAAwAwABcAFAAnACQAIwA1ABUAEAAXAA0ACgAGAAEABAACABAADwARABsAGQAUAB0ACwARAAwAEAAIAAEAAQAAAAEAAQQGBwgJCQoJCgsLDAwNDQMEBgcICAkJCQkKCgsMDAwGBgcICQkKCgkKCgsLDA0NBwcICQkKCgoKCwsLCwwNDQgHCQkKCgsLCgsLDAwNDQ4JCAkKCgoLCwsLDAsNDQ4OCQkKCgsLCwsLDAwMDQ0ODgoJCgsLCwwMDAwNDQ0OEBAJCAkKCgsLDAwMDA0NDg8PCgkKCgsLCw0MDQ0ODg4QDwoKCgsLDAwNDA0ODQ4PEBELCgoLDAwMDA0NDQ4PDw8QCwsLDAwNDA0ODg8PDxAQEAwLDA0NDQ4ODg4ODxAPEBANDAwNDQ0PDg4RDw8PERAQDAwNDg4ODw4PDxAQExITEAcADAASADUALwBMAHwAbABZAHsAbAB3AGsAUQB6AD8ADQAFABAAGwAuACQAPQAzACoARgA0AFMAQQApADsAJAATABEADwAYACkAIgA7ADAAKABAADIATgA+AFAAOAAhAB0AHAAZACsAJwA/ADcAXQBMADsAXQBIADYASwAyAB0ANAAWACoAKABDADkAXwBPAEgAOQBZAEUAMQBCAC4AGwBNACUAIwBCADoANABbAEoAPgAwAE8APwBaAD4AKAAmAH0AIAA8ADgAMgBcAE4AQQA3AFcARwAzAEkAMwBGAB4AbQA1ADEAXgBYAEsAQgB6AFsASQA4ACoAQAAsABUAGQBaACsAKQBNAEkAPwA4AFwATQBCAC8AQwAwADUAJAAUAEcAIgBDADwAOgAxAFgATABDAGoARwA2ACYAJwAXAA8AbQA1ADMALwBaAFIAOgA5ADAASAA5ACkAFwAbAD4ACQBWACoAKAAlAEYAQAA0ACsARgA3ACoAGQAdABIACwALAHYARAAeADcAMgAuAEoAQQAxACcAGAAQABYADQAOAAcAWwAsACcAJgAiAD8ANAAtAB8ANAAcABMADgAIAAkAAwB7ADwAOgA1AC8AKwAgABYAJQAYABEADAAPAAoAAgABAEcAJQAiAB4AHAAUABEAGgAVABAACgAGAAgABgACAAAAAwQFBwcICQkJCgoLCwsMDQQDBQYHBwgICAkJCgoKCwsFBQUGBwcICAgJCQoKCwsLBgYGBwcICAkJCQoKCgsLCwcGBwcICAkJCQkKCgoLCwsIBwcICAgJCQkJCgoLCwsMCQcICAgJCQkJCgoKCwsMDAkICAkJCQkKCgoKCgsLCwwJCAgJCQkJCgoKCgsLDAwMCQgJCQkJCgoKCwsLCwwMDAoJCQkKCgoKCgsLCwsMDQwKCQkJCgoKCgsLCwsMDAwNCwoJCgoKCwsLCwsLDAwNDQsKCgoKCwsLCwwMDAwMDQ0MCwsLCwsLCwwMDAwNDQwNDAsLCwsLCwwMDAwMDQ0NDQEABQAOACwASgA/AG4AXQCsAJUAigDyAOEAwwB4AREAAwAEAAwAFAAjAD4ANQAvAFMASwBEAHcAyQBrAM8ACQAPAA0AFwAmAEMAOgBnAFoAoQBIAH8AdQBuANEAzgAQAC0AFQAnAEUAQAByAGMAVwCeAIwA/ADUAMcAgwFtARoASwAkAEQAQQBzAGUAswCkAJsACAH2AOIAiwF+AWoBCQBCAB4AOwA4AGYAuQCtAAkBjgD9AOgAkAGEAXoBvQEQAG8ANgA0AGQAuACyAKAAhQABAfQA5ADZAIEBbgHLAgoAYgAwAFsAWAClAJ0AlAAFAfgAlwGNAXQBfAF5A3QDCABVAFQAUQCfAJwAjwAEAfkAqwGRAYgBfwHXAskCxAIHAJoATABJAI0AgwAAAfUAqgGWAYoBgAHfAmcBxgJgAQsAiwCBAEMAfQD3AOkA5QDbAIkB5wLhAtACdQNyA7cBBADzAHgAdgBzAOMA3wCMAeoC5gLgAtECyALCAt8AtAEGAMoA4ADeANoA2ACFAYIBfQFsAXgDuwHDArgBtQHABgQA6wLTANIA0AByAXsB3gLTAsoCxwZzA20DbAODDWEDAgB5AXEBZgC7ANYC0gJmAccCxQJiA8YGZwOCDWYDsgEAAAwACgAHAAsACgARAAsACQANAAwACgAHAAUAAwABAAMAAQQGCAkJCgoLCwsMDAwNCQMEBgcICQkJCgoKCwwLDAgGBgcICQkKCgsKCwsLDAwJCAcICQkKCgoLCwwMDA0NCgkICQkKCgsLCwwMDA0NDQkJCAkJCgsLDAsMDA0NDQ4KCgkJCgsLCwsMDAwMDQ0OCgoJCgoLCwsMDA0NDQ0PDwoKCgoLCwsMDA0NDQ0ODg4KCwoKCwsMDA0NDQ0ODQ4NCwsLCgsMDAwMDQ4ODg8PDgoMCwsLDAwNDg4ODg4ODQ4LDAwMDAwNDQ0NDw4ODg4QCw4MDAwNDQ4ODhAPDw8RDwsNDQsMDg4NDg4PEA8RDw4LCQgICQkKCgoLCwsLCwsLCA8ADQAuAFAAkgAGAfgAsgGqAZ0CjQKJAm0CBQIIBFgADgAMABUAJgBHAIIAegDYANEAxgBHAVkBPwEpARcBKgAvABYAKQBKAEQAgAB4AN0AzwDCALYAVAE7AScBHQISAFEAJwBLAEYAhgB9AHQA3ADMAL4AsgBFATcBJQEPARAAkwBIAEUAhwB/AHYAcADSAMgAvABgAUMBMgEdARwCDgAHAUIAgQB+AHcAcgDWAMoAwAC0AFUBPQEtARkBBgEMAPkAewB5AHUAcQDXAM4AwwC5AFsBSgE0ASMBEAEIAgoAswFzAG8AbQDTAMsAxAC7AGEBTAE5ASoBGwETAn0BEQCrAdQA0ADNAMkAwQC6ALEAqQBAAS8BHgEMAQICeQEQAE8BxwDFAL8AvQC1AK4ATQFBATEBIQETAQkCewFzAQsAnAK4ALcAswCvAFgBSwE6ATABIgEVARICfwF1AW4BCgCMAloBqwCoAKQAPgE1ASsBHwEUAQcBAQJ3AXABagEGAIgCQgE8ATgBMwEuASQBHAENAQUBAAJ4AXIBbAFnAQQAbAIsASgBJgEgARoBEQEKAQMCfAF2AXEBbQFpAWUBAgAJBBgBFgESAQsBCAEDAX4BegF0AW8BawFoAWYBZAEAACsAFAATABEADwANAAsACQAHAAYABAAHAAUAAwABAAMABAQGBwgJCQoKCwsLCwsMCQQEBQYHCAgJCQkKCgoKCggGBQYHBwgICQkJCQoKCgsHBwYHBwgICAkJCQkKCgoKBwgHBwgICAgJCQkKCgoKCwcJBwgICAgJCQkJCgoKCgoHCQgICAgJCQkJCgoKCgoLBwoICAgJCQkJCgoKCgoLCwgKCQkJCQkJCQkKCgoKCwsICgkJCQkJCQoKCgoKCwsLCAsJCQkJCgoKCgoKCwsLCwgLCgkJCQoKCgoKCgsLCwsICwoKCgoKCgoKCgsLCwsLCAsKCgoKCgoKCwsLCwsLCwgMCgoKCgoKCwsLCwsLCwsICAcHBwcHBwcHBwcICAgIBAEABQAEAAUABgAFAAQABAAHAAMABgAAAAcAAgADAAEAAQQEBQQGBQYEBQUGBQYGBg8ADgANAAwACwAKAAkACAAHAAYABQAEAAMAAgABAAAABAQEBAQEBAQEBAQEBAQEBABB6CkLBQIAAAACAEH5KQsMBAAACAQAAAMAAAADAEGQKgsNEAQAACIEAAADAAAAAwBBqCoLBjAEAABCBABByCoLBQQAAAAEAEHYKgsNUAQAAHAEAAAEAAAABABB8CoLDYAEAACgBAAABgAAAAYAQYgrCw2wBAAAAAUAAAYAAAAGAEGgKwsNMAUAAIAFAAAGAAAABgBBuCsLDbAFAAAABgAACAAAAAgAQdArCw0wBgAAsAYAAAgAAAAIAEHoKwsN8AYAAHAHAAAIAAAACABBgCwLDbAHAAAwCAAAEAAAABAAQZgsCwZwCAAAcAoAQbgsCwUQAAAAEABByCwLjQNwCwAAcA0AABAAAAAQAAAAAQAAAAEAAABwDgAAcBAAABAAAAAQAAAAAgAAAAMAAABwDgAAcBAAABAAAAAQAAAAAwAAAAcAAABwDgAAcBAAABAAAAAQAAAABAAAAA8AAABwDgAAcBAAABAAAAAQAAAABgAAAD8AAABwDgAAcBAAABAAAAAQAAAACAAAAP8AAABwDgAAcBAAABAAAAAQAAAACgAAAP8DAABwDgAAcBAAABAAAAAQAAAADQAAAP8fAABwDgAAcBAAABAAAAAQAAAABAAAAA8AAABwEQAAcBMAABAAAAAQAAAABQAAAB8AAABwEQAAcBMAABAAAAAQAAAABgAAAD8AAABwEQAAcBMAABAAAAAQAAAABwAAAH8AAABwEQAAcBMAABAAAAAQAAAACAAAAP8AAABwEQAAcBMAABAAAAAQAAAACQAAAP8BAABwEQAAcBMAABAAAAAQAAAACwAAAP8HAABwEQAAcBMAABAAAAAQAAAADQAAAP8fAABwEQAAcBMAAAEAAAAQAEHgLwsNcBQAAJAUAAABAAAAEABB+C8LBqAUAADAFABBrDALiQEBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAIAAAADAAAAAwAAAAQAAAADAAAABAAAAAMAAAAEAAAABAAAAAUAAAAEAAAABQAAAAQAAAAGAAAABQAAAAYAAAAFAAAABgAAAAUAAAAHAAAABgAAAAcAAAAGAAAABwBBwDELDQEAAAD/////AQAAAAIAQeAxC5IBAwAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAQAAAAEAAAAAAAAAAEAAAACAAAAAwAAAAAAAAABAAAAAgAAAAMAAAABAAAAAgAAAAMAAAABAAAAAgAAAAMAAAACAAAAAwAAAESsAACAuwAAAH0AACJWAADAXQAAgD4AABErAADgLgAAQB8AQYAzC7oI/////////////////////wgAAAD/////CAAAACAAAAAQAAAA/////xAAAAAoAAAAGAAAAP////8YAAAAMAAAACAAAAD/////IAAAADgAAAAoAAAA/////ygAAABAAAAAMAAAAP////8wAAAAUAAAADgAAAD/////OAAAAGAAAABAAAAA/////0AAAABwAAAA//////////9QAAAAgAAAAP//////////YAAAAKAAAAD//////////3AAAADAAAAA//////////+AAAAA4AAAAP//////////kAAAAAABAAD//////////6AAAABAAQAA/////////////////////wAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAeAAAAJAAAACwAAAA0AAAAPgAAAEoAAABaAAAAbgAAAIYAAACiAAAAxAAAAO4AAAAgAQAAVgEAAKIBAABAAgAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAB4AAAAkAAAAKgAAADIAAAA8AAAASAAAAFgAAABqAAAAgAAAAJwAAAC+AAAA5gAAABQBAABKAQAAgAEAAEACAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABSAAAAZgAAAH4AAACcAAAAwgAAAPAAAAAoAQAAbAEAAMABAAAmAgAAQAIAAAAAAAAGAAAADAAAABIAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABQAAAAYAAAAHQAAACMAAAAqAAAAMgAAADuAAAAHAEAAFABAACMAQAA0AEAAAoCAABAAgAAAAAAAAYAAAAMAAAAEgAAABgAAAAeAAAAJAAAACwAAAA2AAAAQgAAAFAAAABgAAAAcgAAAIgAAACiAAAAwgAAAOgAAAAWAQAASgEAAIoBAADQAQAAHAIAAEACAAAAAAAABgAAAAwAAAASAAAAGAAAAB4AAAAkAAAALAAAAC0AAABCAAAAUAAAAGAAAAB0AAAAjAAAAKgAAADIAAAA7gAAAPgAAABQAQAAjAEAANABAAAKAgAAQAIAAAAAAAAGAAAADAAAABIAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABQAAAAYAAAAHQAAACMAAAAqAAAAMgAAADuAAAAHAEAAFABAACMAQAA0AEAAAoCAABAAgAAAAAAAAYAAAAMAAAAEgAAABgAAAAeAAAAJAAAACwAAAA2AAAAQgAAAFAAAABgAAAAdAAAAIwAAACoAAAAyAAAAO4AAAAcAQAAUAEAAIwBAADQAQAACgIAAEACAAAAAAAADAAAABgAAAAkAAAAMAAAADwAAABIAAAAWAAAAGwAAACEAAAAoAAAAMAAAADoAAAAGAEAAFABAACQAQAA3AEAADYCAAA4AgAAOgIAADwCAAA+AgAAQAIAQdw7C8oPnff//533//+d9///nff//533//+d9///Ou///zrv//867///Ou///9bm///W5v//1ub//3Pe//9z3v//D9b//w/W//+szf//SMX//+W8///lvP//gbT//x6s//+6o///V5v//5CK//8sgv//ZXH//wJp//87WP//10///xA///9JLv//HxX//1gE//+R8/7/Z9r+/zzB/v8SqP7/S5f+/yB+/v+SXP7/aEP+/z0q/v+vCP7/he/9/1vW/f/NtP3/opv9/xR6/f+GWP3/XD/9/zEm/f+jBP3/3fP8/7La/P+Iwfz/o1cDAGpoAwAxeQMAlIEDAPiJAwBbkgMAW5IDAPiJAwCUgQMAzXADAAZgAwB4PgMA6hwDAPnyAgCkwAIAT44CADNLAgC0/wEA0asBAItPAQB+4gAAcHUAAJ33//9lcf//yuL+/2hD/v+im/3/eev8/+wy/P+Zafv/4pf6/8e9+f/m0vj/BOj3/1zs9v9Q6PX/ROT0/9TX8/8Bw/L/y6Xx/zGA8P/6Yu//YD3u/8YX7f8t8uv/k8zq/1yv6f+Jmuj/toXn/0d55v87deX/9oHk/3if4/9dxeL/bQTi/0RU4f9FveD/cT/g/8fa3/+rl9//um3f/1Zl3/+Bft//ncHf/1bRHwC7Qh8Ay4EeAOmWHQCzeRwAJyobAKuwGQB2/BcA6xUWAA39EwB1qREA7CsPAEhrDADrbwkAnEoGADLiAgDXT///w4L7//d69/85SfP/JuXu/75O6v9ljuX/G6Tg/0KY2/94Ytb/hBPR/wKjy/9VGcb/RYfA/wrcuv/PMLX/MX2v/5PJqf+8JqT/SIye//8Kmf/gopP/s2SO/xNIif8sZoT//r5//4dSe/+QMXf/fGRz/67zb/8n32z/EEBq/6MFaP8LSWb/qhJl/4FiZP9WSWT/Ksdk/2HkZf9dqWf/gh5q/zRMbf9zMnH/BeJ1/4dSe/9djIH/TqCI//WFkP9JumYACRhdABGkUgA4RUcA4gM7AA3gLQBW0R8AhegQANIUAQAGZ/D/u9be/1VszP/VJ7n/ARql/3Y6kP+XkXr/yCdk/20FTf/oMjX/OrAc/46WA//j5en+nKbP/oLptP5av5n+JSh+/qk0Yv4S/kX++3sp/vPPDP5cAvD9/yPT/T89tv3iXpn9E6J8/dEGYP2srkP9o5kn/UPpC/2NnfD8q8/V/AGIu/xW16H81NaI/N+OcPzaB1n871pC/IKQLPz3sBf8eNUD/GkG8fssTN/7Jq/O+x1Av/t1B7H7kQ2k+9ZamPul9437AOSE+64wffut3Xb7/+px+wdhbvvFP2z7yHiUBDvAkwT5npEEARWOBFMiiQRSz4IEABx7BFsIcgQqpWcEb/JbBIv4TgTjv0AE2lAxBNSzIASX+Q4EiCr8AwlP6AN+b9MDEaW9Ayb4pgMhcY8DLCl3A6ooXgP/d0QDVTAqA3NiDwO9FvQCXWbYAlRRvAIv+Z8C7V2DAh6hZgLBwkkCAdwsAqT9DwINMPMBBYTWAe4BugFXy50B29eBAaZAZgF+FksBZFkwAR0aFgFyafwAxk/jABjNygCT+rIAONibAGluhQCKxW8A/+VaACvYRgCrkzMARSkhAPqYDwAu6/7/exfv/6ou4P/zH9L/HvzE/8i6uP/vW63/9+ei/0m6ZgALem8Asl93AKNzfgB5rYQA+x2KAI3NjgDMs5IAfuGVAKNWmACfG5oA1jibAKq2mwB/nZsAVu2aAPW2mQBd+pcA8L+VANkgkwBSDJAAhJuMAHDOiAB5rYQAAkGAANSZewDtt3YATZtxACBdbAAB9WYAuHNhAETZWwBtNlYAz4JQADHPSgD2I0UAu3g/AKvmOQD+XDQAfOwuAIidKQC+ZyQA5VsfAJtxGgBCsRUA2hoRAMe2DAAJhQgAPX0EACmwAADOHf3/ZLX5/xWQ9v+4lPP/FNTw/4tW7v/zAuz/Ferp/4oD6P9VT+b/2dXk/02G4/8XaeL/NX7h/0W94P9W0R8AYz4gAH+BIACqmiAARpIgAFVoIAA5JSAAj8AfALtCHwC8qx4Ak/sdAKM6HQCIYBwACn4bAMWKGgC5hhkASnoYAHdlFwCkUBYAbTMVANMNFAA66BIAoMIRAAadEADPfw8ANVoOAP88DQAsKAwAvBsLALAXCgCkEwkA/BcIABotBwA5QgYAHmgFAGeWBAAUzQMAhxQDAF5kAgCYvAEANh0BAJuOAABjCAAAkIr//4Id//91sP7/L1T+/0wA/v/NtP3/sXH9/1w//f8HDf3/FuP8/4jB/P/6n/z/M4/8/2x+/P8Idvz/pW38/6Vt/P8Idvz/bH78/8+G/P+Wl/z/o1cDAHg+AwBOJQMAIwwDAF37AgDP2QIApMACAHqnAgDshQIAXmQCADNLAgClKQIAexACAFH3AQDD1QEAmLwBAG6jAQDggQEAtWgBAO5XAQDEPgEAmSUBAG8MAQCo+wAA4eoAALfRAADwwAAAKbAAAMWnAAD+lgAAm44AANR9AABwdQAAqWQAAEZcAADiUwAAf0sAABtDAAAbQwAAuDoAAFQyAADxKQAA8SkAAI0hAACNIQAAKhkAACoZAAAqGQAAxhAAAMYQAADGEAAAxhAAAGMIAABjCAAAYwgAAGMIAABjCAAAYwgAQcDLAAvXFQMAAAAEAAAABAAAAAYAAACD+aIARE5uAPwpFQDRVycA3TT1AGLbwAA8mZUAQZBDAGNR/gC73qsAt2HFADpuJADSTUIASQbgAAnqLgAcktEA6x3+ACmxHADoPqcA9TWCAES7LgCc6YQAtCZwAEF+XwDWkTkAU4M5AJz0OQCLX4QAKPm9APgfOwDe/5cAD5gFABEv7wAKWosAbR9tAM9+NgAJyycARk+3AJ5mPwAt6l8Auid1AOXrxwA9e/EA9zkHAJJSigD7a+oAH7FfAAhdjQAwA1YAe/xGAPCrawAgvM8ANvSaAOOpHQBeYZEACBvmAIWZZQCgFF8AjUBoAIDY/wAnc00ABgYxAMpWFQDJqHMAe+JgAGuMwAAZxEcAzWfDAAno3ABZgyoAi3bEAKYclgBEr90AGVfRAKU+BQAFB/8AM34/AMIy6ACYT94Au30yACY9wwAea+8An/heADUfOgB/8soA8YcdAHyQIQBqJHwA1W76ADAtdwAVO0MAtRTGAMMZnQCtxMIALE1BAAwAXQCGfUYA43EtAJvGmgAzYgAAtNJ8ALSnlwA3VdUA1z72AKMQGABNdvwAZJ0qAHDXqwBjfPgAerBXABcV5wDASVYAO9bZAKeEOAAkI8sA1op3AFpUIwAAH7kA8QobABnO3wCfMf8AZh5qAJlXYQCs+0cAfn/YACJltwAy6IkA5r9gAO/EzQBsNgkAXT/UABbe1wBYO94A3puSANIiKAAohugA4lhNAMbKMgAI4xYA4H3LABfAUADzHacAGOBbAC4TNACDEmIAg0gBAPWOWwCtsH8AHunyAEhKQwAQZ9MAqt3YAK5fQgBqYc4ACiikANOZtAAGpvIAXHd/AKPCgwBhPIgAinN4AK+MWgBv170ALaZjAPS/ywCNge8AJsFnAFXKRQDK2TYAKKjSAMJhjQASyXcABCYUABJGmwDEWcQAyMVEAE2ykQAAF/MA1EOtAClJ5QD91RAAAL78AB6UzABwzu4AEz71AOzxgACz58MAx/goAJMFlADBcT4ALgmzAAtF8wCIEpwAqyB7AC61nwBHksIAezIvAAxVbQByp5AAa+cfADHLlgB5FkoAQXniAPTfiQDolJcA4uaEAJkxlwCI7WsAX182ALv9DgBImrQAZ6RsAHFyQgCNXTIAnxW4ALzlCQCNMSUA93Q5ADAFHAANDAEASwhoACzuWABHqpAAdOcCAL3WJAD3faYAbkhyAJ8W7wCOlKYAtJH2ANFTUQDPCvIAIJgzAPVLfgCyY2gA3T5fAEBdAwCFiX8AVVIpADdkwABt2BAAMkgyAFtMdQBOcdQARVRuAAsJwQAq9WkAFGbVACcHnQBdBFAAtDvbAOp2xQCH+RcASWt9AB0nugCWaSkAxsysAK0UVACQ4moAiNmJACxyUAAEpL4AdweUAPMwcAAA/CcA6nGoAGbCSQBk4D0Al92DAKM/lwBDlP0ADYaMADFB3gCSOZ0A3XCMABe35wAI3zsAFTcrAFyAoABagJMAEBGSAA/o2ABsgK8A2/9LADiQDwBZGHYAYqUVAGHLuwDHibkAEEC9ANLyBABJdScA67b2ANsiuwAKFKoAiSYvAGSDdgAJOzMADpQaAFE6qgAdo8IAr+2uAFwmEgBtwk0ALXqcAMBWlwADP4MACfD2ACtAjABtMZkAObQHAAwgFQDYw1sA9ZLEAMatSwBOyqUApzfNAOapNgCrkpQA3UJoABlj3gB2jO8AaItSAPzbNwCuoasA3xUxAACuoQAM+9oAZE1mAO0FtwApZTAAV1a/AEf/OgBq+bkAdb7zACiT3wCrgDAAZoz2AATLFQD6IgYA2eQdAD2zpABXG48ANs0JAE5C6QATvqQAMyO1APCqGgBPZagA0sGlAAs/DwBbeM0AI/l2AHuLBACJF3IAxqZTAG9u4gDv6wAAm0pYAMTatwCqZroAds/PANECHQCx8S0AjJnBAMOtdwCGSNoA912gAMaA9ACs8C8A3eyaAD9cvADQ3m0AkMcfACrbtgCjJToAAK+aAK1TkwC2VwQAKS20AEuAfgDaB6cAdqoOAHtZoQAWEioA3LctAPrl/QCJ2/4Aib79AOR2bAAGqfwAPoBwAIVuFQD9h/8AKD4HAGFnMwAqGIYATb3qALPnrwCPbW4AlWc5ADG/WwCE10gAMN8WAMctQwAlYTUAyXDOADDLuAC/bP0ApACiAAVs5ABa3aAAIW9HAGIS0gC5XIQAcGFJAGtW4ACZUgEAUFU3AB7VtwAz8cQAE25fAF0w5ACFLqkAHbLDAKEyNgAIt6QA6rHUABb3IQCPaeQAJ/93AAwDgACNQC0AT82gACClmQCzotMAL10KALT5QgAR2ssAfb7QAJvbwQCrF70AyqKBAAhqXAAuVRcAJwBVAH8U8ADhB4YAFAtkAJZBjQCHvt4A2v0qAGsltgB7iTQABfP+ALm/ngBoak8ASiqoAE/EWgAt+LwA11qYAPTHlQANTY0AIDqmAKRXXwAUP7EAgDiVAMwgAQBx3YYAyd62AL9g9QBNZREAAQdrAIywrACywNAAUVVIAB77DgCVcsMAowY7AMBANQAG3HsA4EXMAE4p+gDWysgA6PNBAHxk3gCbZNgA2b4xAKSXwwB3WNQAaePFAPDaEwC6OjwARhhGAFV1XwDSvfUAbpLGAKwuXQAORO0AHD5CAGHEhwAp/ekA59bzACJ8ygBvkTUACODFAP/XjQBuauIAsP3GAJMIwQB8XXQAa62yAM1unQA+cnsAxhFqAPfPqQApc98Atcm6ALcAUQDisg0AdLokAOV9YAB02IoADRUsAIEYDAB+ZpQAASkWAJ96dgD9/b4AVkXvANl+NgDs2RMAi7q5AMSX/AAxqCcA8W7DAJTFNgDYqFYAtKi1AM/MDgASiS0Ab1c0ACxWiQCZzuMA1iC5AGteqgA+KpwAEV/MAP0LSgDh9PsAjjttAOKGLADp1IQA/LSpAO/u0QAuNckALzlhADghRAAb2cgAgfwKAPtKagAvHNgAU7SEAE6ZjABUIswAKlXcAMDG1gALGZYAGnC4AGmVZAAmWmAAP1LuAH8RDwD0tREA/Mv1ADS8LQA0vO4A6F3MAN1eYABnjpsAkjPvAMkXuABhWJsA4Ve8AFGDxgDYPhAA3XFIAC0c3QCvGKEAISxGAFnz1wDZepgAnlTAAE+G+gBWBvwA5XmuAIkiNgA4rSIAZ5PcAFXoqgCCJjgAyuebAFENpACZM7EAqdcOAGkFSABlsvAAf4inAIhMlwD50TYAIZKzAHuCSgCYzyEAQJ/cANxHVQDhdDoAZ+tCAP6d3wBe1F8Ae2ekALqsegBV9qIAK4gjAEG6VQBZbggAISqGADlHgwCJ4+YA5Z7UAEn7QAD/VukAHA/KAMVZigCU+isA08HFAA/FzwDbWq4AR8WGAIVDYgAhhjsALHmUABBhhwAqTHsAgCwaAEO/EgCIJpAAeDyJAKjE5ADl23sAxDrCACb06gD3Z4oADZK/AGWjKwA9k7EAvXwLAKRR3AAn3WMAaeHdAJqUGQCoKZUAaM4oAAnttABEnyAATpjKAHCCYwB+fCMAD7kyAKf1jgAUVucAIfEIALWdKgBvfk0ApRlRALX5qwCC39YAlt1hABY2AgDEOp8Ag6KhAHLtbQA5jXoAgripAGsyXABGJ1sAADTtANIAdwD89FUAAVlNAOBxgABBo+EAC60BQPsh+T8AAAAALUR0PgAAAICYRvg8AAAAYFHMeDsAAACAgxvwOQAAAEAgJXo4AAAAgCKC4zYAAAAAHfNpNf6CK2VHFWdAAAAAAAAAOEMAAPr+Qi52vzo7nrya9wy9vf3/////3z88VFVVVVXFP5ErF89VVaU/F9CkZxERgT8AAAAAAADIQu85+v5CLuY/JMSC/72/zj+19AzXCGusP8xQRtKrsoM/hDpOm+DXVT8AQd7iAAuCMfA/br+IGk87mzw1M/upPfbvP13c2JwTYHG8YYB3Pprs7z/RZocQel6QvIV/bugV4+8/E/ZnNVLSjDx0hRXTsNnvP/qO+SOAzou83vbdKWvQ7z9hyOZhTvdgPMibdRhFx+8/mdMzW+SjkDyD88bKPr7vP217g12mmpc8D4n5bFi17z/87/2SGrWOPPdHciuSrO8/0ZwvcD2+Pjyi0dMy7KPvPwtukIk0A2q8G9P+r2ab7z8OvS8qUlaVvFFbEtABk+8/VepOjO+AULzMMWzAvYrvPxb01bkjyZG84C2prpqC7z+vVVzp49OAPFGOpciYeu8/SJOl6hUbgLx7UX08uHLvPz0y3lXwH4+86o2MOPlq7z+/UxM/jImLPHXLb+tbY+8/JusRdpzZlrzUXASE4FvvP2AvOj737Jo8qrloMYdU7z+dOIbLguePvB3Z/CJQTe8/jcOmREFvijzWjGKIO0bvP30E5LAFeoA8ltx9kUk/7z+UqKjj/Y6WPDhidW56OO8/fUh08hhehzw/prJPzjHvP/LnH5grR4A83XziZUUr7z9eCHE/e7iWvIFj9eHfJO8/MasJbeH3gjzh3h/1nR7vP/q/bxqbIT28kNna0H8Y7z+0CgxygjeLPAsD5KaFEu8/j8vOiZIUbjxWLz6prwzvP7arsE11TYM8FbcxCv4G7z9MdKziAUKGPDHYTPxwAe8/SvjTXTndjzz/FmSyCPzuPwRbjjuAo4a88Z+SX8X27j9oUEvM7UqSvMupOjen8e4/ji1RG/gHmbxm2AVtruzuP9I2lD7o0XG895/lNNvn7j8VG86zGRmZvOWoE8Mt4+4/bUwqp0ifhTwiNBJMpt7uP4ppKHpgEpO8HICsBEXa7j9biRdIj6dYvCou9yEK1u4/G5pJZ5ssfLyXqFDZ9dHuPxGswmDtY0M8LYlhYAjO7j/vZAY7CWaWPFcAHe1Byu4/eQOh2uHMbjzQPMG1osbuPzASDz+O/5M83tPX8CrD7j+wr3q7zpB2PCcqNtXav+4/d+BU670dkzwN3f2ZsrzuP46jcQA0lI+8pyyddrK57j9Jo5PczN6HvEJmz6Latu4/XzgPvcbeeLyCT51WK7TuP/Zce+xGEoa8D5JdyqSx7j+O1/0YBTWTPNontTZHr+4/BZuKL7eYezz9x5fUEq3uPwlUHOLhY5A8KVRI3Qer7j/qxhlQhcc0PLdGWYomqe4/NcBkK+YylDxIIa0Vb6fuP592mWFK5Iy8Cdx2ueGl7j+oTe87xTOMvIVVOrB+pO4/rukriXhThLwgw8w0RqPuP1hYVnjdzpO8JSJVgjii7j9kGX6AqhBXPHOpTNRVoe4/KCJev++zk7zNO39mnqDuP4K5NIetEmq8v9oLdRKg7j/uqW2472djvC8aZTyyn+4/UYjgVD3cgLyElFH5fZ/uP88+Wn5kH3i8dF/s6HWf7j+wfYvASu6GvHSBpUian+4/iuZVHjIZhrzJZ0JW65/uP9PUCV7LnJA8P13eT2mg7j8dpU253DJ7vIcB63MUoe4/a8BnVP3slDwywTAB7aHuP1Vs1qvh62U8Yk7PNvOi7j9Cz7MvxaGIvBIaPlQnpO4/NDc78bZpk7wTzkyZiaXuPx7/GTqEXoC8rccjRhqn7j9uV3LYUNSUvO2SRJvZqO4/AIoOW2etkDyZZorZx6ruP7Tq8MEvt40826AqQuWs7j//58WcYLZlvIxEtRYyr+4/RF/zWYP2ezw2dxWZrrHuP4M9HqcfCZO8xv+RC1u07j8pHmyLuKldvOXFzbA3t+4/WbmQfPkjbLwPUsjLRLruP6r59CJDQ5K8UE7en4K97j9LjmbXbMqFvLoHynDxwO4/J86RK/yvcTyQ8KOCkcTuP7tzCuE10m08IyPjGWPI7j9jImIiBMWHvGXlXXtmzO4/1THi44YcizwzLUrsm9DuPxW7vNPRu5G8XSU+sgPV7j/SMe6cMcyQPFizMBOe2e4/s1pzboRphDy//XlVa97uP7SdjpfN34K8evPTv2vj7j+HM8uSdxqMPK3TWpmf6O4/+tnRSo97kLxmto0pB+7uP7qu3FbZw1W8+xVPuKLz7j9A9qY9DqSQvDpZ5Y1y+e4/NJOtOPTWaLxHXvvydv/uPzWKWGvi7pG8SgahMLAF7z/N3V8K1/90PNLBS5AeDO8/rJiS+vu9kbwJHtdbwhLvP7MMrzCubnM8nFKF3ZsZ7z+U/Z9cMuOOPHrQ/1+rIO8/rFkJ0Y/ghDxL0Vcu8SfvP2caTjivzWM8tecGlG0v7z9oGZJsLGtnPGmQ79wgN+8/0rXMgxiKgLz6w11VCz/vP2/6/z9drY+8fIkHSi1H7z9JqXU4rg2QvPKJDQiHT+8/pwc9poWjdDyHpPvcGFjvPw8iQCCekYK8mIPJFuNg7z+sksHVUFqOPIUy2wPmae8/S2sBrFk6hDxgtAHzIXPvPx8+tAch1YK8X5t7M5d87z/JDUc7uSqJvCmh9RRGhu8/04g6YAS2dDz2P4vnLpDvP3FynVHsxYM8g0zH+1Ga7z/wkdOPEvePvNqQpKKvpO8/fXQj4piujbzxZ44tSK/vPwggqkG8w448J1ph7hu67z8y66nDlCuEPJe6azcrxe8/7oXRMalkijxARW5bdtDvP+3jO+S6N468FL6crf3b7z+dzZFNO4l3PNiQnoHB5+8/icxgQcEFUzzxcY8rwvPvPwA4+v5CLuY/MGfHk1fzLj0BAAAAAADgv1swUVVVVdU/kEXr////z78RAfEks5nJP5/IBuV1VcW/AAAAAAAA4L93VVVVVVXVP8v9/////8+/DN2VmZmZyT+nRWdVVVXFvzDeRKMkScI/ZT1CpP//v7/K1ioohHG8P/9osEPrmbm/hdCv94KBtz/NRdF1E1K1v5/e4MPwNPc/AJDmeX/M178f6SxqeBP3PwAADcLub9e/oLX6CGDy9j8A4FET4xPXv32MEx+m0fY/AHgoOFu41r/RtMULSbH2PwB4gJBVXda/ugwvM0eR9j8AABh20ALWvyNCIhifcfY/AJCQhsqo1b/ZHqWZT1L2PwBQA1ZDT9W/xCSPqlYz9j8AQGvDN/bUvxTcnWuzFPY/AFCo/aed1L9MXMZSZPb1PwCoiTmSRdS/TyyRtWfY9T8AuLA59O3Tv96QW8u8uvU/AHCPRM6W0794GtnyYZ31PwCgvRceQNO/h1ZGElaA9T8AgEbv4unSv9Nr586XY/U/AOAwOBuU0r+Tf6fiJUf1PwCI2ozFPtK/g0UGQv8q9T8AkCcp4enRv9+9stsiD/U/APhIK22V0b/X3jRHj/P0PwD4uZpnQdG/QCjez0PY9D8AmO+U0O3Qv8ijeMA+vfQ/ABDbGKWa0L+KJeDDf6L0PwC4Y1LmR9C/NITUJAWI9D8A8IZFIuvPvwstGRvObfQ/ALAXdUpHz79UGDnT2VP0PwAwED1EpM6/WoS0RCc69D8AsOlEDQLOv/v4FUG1IPQ/APB3KaJgzb+x9D7aggf0PwCQlQQBwMy/j/5XXY/u8z8AEIlWKSDMv+lMC6DZ1fM/ABCBjReBy78rwRDAYL3zPwDQ08zJ4sq/uNp1KySl8z8AkBIuQEXKvwLQn80ijfM/APAdaHeoyb8ceoTFW3XzPwAwSGltDMm/4jatSc5d8z8AwEWmIHHIv0DUTZh5RvM/ADAUtI/Wx78ky//OXC/zPwBwYjy4PMe/SQ2hdXcY8z8AYDebmqPGv5A5PjfIAfM/AKC3VDELxr9B+JW7TuvyPwAwJHZ9c8W/0akZAgrV8j8AMMKPe9zEvyr9t6j5vvI/AADSUSxGxL+rGwx6HKnyPwAAg7yKsMO/MLUUYHKT8j8AAElrmRvDv/WhV1f6ffI/AECkkFSHwr+/Ox2bs2jyPwCgefi588G/vfWPg51T8j8AoCwlyGDBvzsIyaq3PvI/ACD3V3/OwL+2QKkrASryPwCg/kncPMC/MkHMlnkV8j8AgEu8vVe/v5v80h0gAfI/AEBAlgg3vr8LSE1J9OzxPwBA+T6YF72/aWWPUvXY8T8AoNhOZ/m7v3x+VxEjxfE/AGAvIHncur/pJst0fLHxPwCAKOfDwLm/thosDAGe8T8AwHKzRqa4v71wtnuwivE/AACsswGNt7+2vO8linfxPwAAOEXxdLa/2jFMNY1k8T8AgIdtDl61v91fJ5C5UfE/AOCh3lxItL9M0jKkDj/xPwCgak3ZM7O/2vkQcoss8T8AYMX4eSCyvzG17CgwGvE/ACBimEYOsb+vNITa+wfxPwAA0mps+q+/s2tOD+718D8AQHdKjdqtv86fKl0G5PA/AACF5Oy8q78hpSxjRNLwPwDAEkCJoam/GpjifKfA8D8AwAIzWIinv9E2xoMvr/A/AIDWZ15xpb85E6CY253wPwCAZUmKXKO/3+dSr6uM8D8AQBVk40mhv/soTi+fe/A/AIDrgsBynr8ZjzWMtWrwPwCAUlLxVZq/LPnspe5Z8D8AgIHPYj2Wv5As0c1JSfA/AACqjPsokr+prfDGxjjwPwAA+SB7MYy/qTJ5E2Uo8D8AAKpdNRmEv0hz6ickGPA/AADswgMSeL+VsRQGBAjwPwAAJHkJBGC/Gvom9x/g7z8AAJCE8+9vP3TqYcIcoe8/AAA9NUHchz8umYGwEGPvPwCAwsSjzpM/za3uPPYl7z8AAIkUwZ+bP+cTkQPI6e4/AAARztiwoT+rsct4gK7uPwDAAdBbiqU/mwydohp07j8AgNhAg1ypP7WZCoOROu4/AIBX72onrT9WmmAJ4AHuPwDAmOWYdbA/mLt35QHK7T8AIA3j9VOyPwORfAvyku0/AAA4i90utD/OXPtmrFztPwDAV4dZBrY/nd5eqiwn7T8AAGo1dtq3P80saz5u8uw/AGAcTkOruT8Ceaeibb7sPwBgDbvHeLs/bQg3bSaL7D8AIOcyE0O9PwRYXb2UWOw/AGDecTEKvz+Mn7sztSbsPwBAkSsVZ8A/P+fs7oP16z8AsJKChUfBP8GW23X9xOs/ADDKzW4mwj8oSoYMHpXrPwBQxabXA8M/LD7vxeJl6z8AEDM8w9/DP4uIyWdIN+s/AIB6aza6xD9KMB0hSwnrPwDw0Sg5k8U/fu/yhejb6j8A8BgkzWrGP6I9YDEdr+o/AJBm7PhAxz+nWNM/5oLqPwDwGvXAFcg/i3MJ70BX6j8AgPZUKenIPydLq5AqLOo/AED4Aja7yT/R8pMToAHqPwAALBzti8o/GzzbJJ/X6T8A0AFcUVvLP5CxxwUlruk/AMC8zGcpzD8vzpfyLoXpPwBgSNU19sw/dUuk7rpc6T8AwEY0vcHNPzhI553GNOk/AODPuAGMzj/mUmcvTw3pPwCQF8AJVc8/ndf/jlLm6D8AuB8SbA7QP3wAzJ/Ov+g/ANCTDrhx0D8Ow77awJnoPwBwhp5r1NA/+xcjqid06D8A0EszhzbRPwias6wAT+g/AEgjZw2Y0T9VPmXoSSroPwCAzOD/+NE/YAL0lQEG6D8AaGPXX1nSPymj4GMl4uc/AKgUCTC50j+ttdx3s77nPwBgQxByGNM/wiWXZ6qb5z8AGOxtJnfTP1cGF/IHeec/ADCv+0/V0z8ME9bbylbnPwDgL+PuMtQ/a7ZPAQAQ5j88W0KRbAJ+PJW0TQMAMOY/QV0ASOq/jTx41JQNAFDmP7el1oanf448rW9OBwBw5j9MJVRr6vxhPK4P3/7/j+Y//Q5ZTCd+fLy8xWMHALDmPwHa3EhowYq89sFcHgDQ5j8Rk0mdHD+DPD72Bev/7+Y/Uy3iGgSAfryAl4YOABDnP1J5CXFm/3s8Euln/P8v5z8kh70m4gCMPGoRgd//T+c/0gHxbpECbryQnGcPAHDnP3ScVM1x/Ge8Nch++v+P5z+DBPWewb6BPObCIP7/r+c/ZWTMKRd+cLwAyT/t/8/nPxyLewhygIC8dhom6f/v5z+u+Z1tKMCNPOijnAQAEOg/M0zlUdJ/iTyPLJMXADDoP4HzMLbp/oq8nHMzBgBQ6D+8NWVrv7+JPMaJQiAAcOg/dXsR82W/i7wEefXr/4/oP1fLPaJuAIm83wS8IgCw6D8KS+A43wB9vIobDOX/z+g/BZ//RnEAiLxDjpH8/+/oPzhwetB7gYM8x1/6HgAQ6T8DtN92kT6JPLl7RhMAMOk/dgKYS06AfzxvB+7m/0/pPy5i/9nwfo+80RI83v9v6T+6OCaWqoJwvA2KRfT/j+k/76hkkRuAh7w+Lpjd/6/pPzeTWorgQIe8ZvtJ7f/P6T8A4JvBCM4/PFGc8SAA8Ok/CluIJ6o/irwGsEURABDqP1baWJlI/3Q8+va7BwAw6j8YbSuKq76MPHkdlxAAUOo/MHl43cr+iDxILvUdAHDqP9ur2D12QY+8UjNZHACQ6j8SdsKEAr+OvEs+TyoAsOo/Xz//PAT9abzRHq7X/8/qP7RwkBLnPoK8eARR7v/v6j+j3g7gPgZqPFsNZdv/D+s/uQofOMgGWjxXyqr+/y/rPx08I3QeAXm83LqV2f9P6z+fKoZoEP95vJxlniQAcOs/Pk+G0EX/ijxAFof5/4/rP/nDwpZ3/nw8T8sE0v+v6z/EK/LuJ/9jvEVcQdL/z+s/Ieo77rf/bLzfCWP4/+/rP1wLLpcDQYG8U3a14f8P7D8ZareUZMGLPONX+vH/L+w/7cYwje/+ZLwk5L/c/0/sP3VH7LxoP4S897lU7f9v7D/s4FPwo36EPNWPmev/j+w/8ZL5jQaDczyaISUhALDsPwQOGGSO/Wi8nEaU3f/P7D9y6sccvn6OPHbE/er/7+w//oifrTm+jjwr+JoWABDtP3FauaiRfXU8HfcPDQAw7T/ax3BpkMGJPMQPeer/T+0/DP5YxTcOWLzlh9wuAHDtP0QPwU3WgH+8qoLcIQCQ7T9cXP2Uj3x0vIMCa9j/r+0/fmEhxR1/jDw5R2wpANDtP1Ox/7KeAYg89ZBE5f/v7T+JzFLG0gBuPJT2q83/D+4/0mktIECDf7zdyFLb/y/uP2QIG8rBAHs87xZC8v9P7j9Rq5SwqP9yPBFeiuj/b+4/Wb7vsXP2V7wN/54RAJDuPwHIC16NgIS8RBel3/+v7j+1IEPVBgB4PKF/EhoA0O4/klxWYPgCULzEvLoHAPDuPxHmNV1EQIW8Ao169f8P7z8Fke85MftPvMeK5R4AMO8/VRFz8qyBijyUNIL1/0/vP0PH19RBP4o8a0yp/P9v7z91eJgc9AJivEHE+eH/j+8/S+d39NF9dzx+4+DS/6/vPzGjfJoZAW+8nuR3HADQ7z+xrM5L7oFxPDHD4Pf/7+8/WodwATcFbrxuYGX0/w/wP9oKHEmtfoq8WHqG8/8v8D/gsvzDaX+XvBcN/P3/T/A/W5TLNP6/lzyCTc0DAHDwP8tW5MCDAII86Mvy+f+P8D8adTe+3/9tvGXaDAEAsPA/6ybmrn8/kbw406QBANDwP/efSHn6fYA8/f3a+v/v8D/Aa9ZwBQR3vJb9ugsAEPE/YgtthNSAjjxd9OX6/y/xP+82/WT6v5082ZrVDQBQ8T+uUBJwdwCaPJpVIQ8AcPE/7t7j4vn9jTwmVCf8/4/xP3NyO9wwAJE8WTw9EgCw8T+IAQOAeX+ZPLeeKfj/z/E/Z4yfqzL5ZbwA1Ir0/+/xP+tbp52/f5M8pIaLDAAQ8j8iW/2Ra4CfPANDhQMAMPI/M7+f68L/kzyE9rz//0/yP3IuLn7nAXY82SEp9f9v8j9hDH92u/x/PDw6kxQAkPI/K0ECPMoCcrwTY1UUALDyPwIf8jOCgJK8O1L+6//P8j/y3E84fv+IvJatuAsA8PI/xUEwUFH/hbyv4nr7/w/zP50oXohxAIG8f1+s/v8v8z8Vt7c/Xf+RvFZnpgwAUPM/vYKLIoJ/lTwh9/sRAHDzP8zVDcS6AIA8uS9Z+f+P8z9Rp7ItnT+UvELS3QQAsPM/4Th2cGt/hTxXybL1/8/zPzESvxA6Ano8GLSw6v/v8z+wUrFmbX+YPPSvMhUAEPQ/JIUZXzf4Zzwpi0cXADD0P0NR3HLmAYM8Y7SV5/9P9D9aibK4af+JPOB1BOj/b/Q/VPLCm7HAlbznwW/v/4/0P3IqOvIJQJs8BKe+5f+v9D9FfQ2/t/+UvN4nEBcA0PQ/PWrccWTAmbziPvAPAPD0PxxThQuJf5c80UvcEgAQ9T82pGZxZQRgPHonBRYAMPU/CTIjzs6/lrxMcNvs/0/1P9ehBQVyAom8qVRf7/9v9T8SZMkO5r+bPBIQ5hcAkPU/kO+vgcV+iDySPskDALD1P8AMvwoIQZ+8vBlJHQDQ9T8pRyX7KoGYvIl6uOf/7/U/BGntgLd+lLwAQeCTAQsD4EsB";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["c"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["o"];addOnInit(Module["asm"]["d"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort("invalid type for getValue: "+type)}return null}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort("invalid type for setValue: "+type)}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ASSERTIONS=false;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output};function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE=="boolean"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(s,"base64");return new Uint8Array(buf["buffer"],buf["byteOffset"],buf["byteLength"])}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error("Converting base64 string to bytes failed.")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}var asmLibraryArg={"b":_emscripten_memcpy_big,"a":_emscripten_resize_heap};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["d"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["e"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["f"]).apply(null,arguments)};var _shine_check_config=Module["_shine_check_config"]=function(){return(_shine_check_config=Module["_shine_check_config"]=Module["asm"]["g"]).apply(null,arguments)};var _shine_samples_per_pass=Module["_shine_samples_per_pass"]=function(){return(_shine_samples_per_pass=Module["_shine_samples_per_pass"]=Module["asm"]["h"]).apply(null,arguments)};var _shine_encode_buffer=Module["_shine_encode_buffer"]=function(){return(_shine_encode_buffer=Module["_shine_encode_buffer"]=Module["asm"]["i"]).apply(null,arguments)};var _shine_flush=Module["_shine_flush"]=function(){return(_shine_flush=Module["_shine_flush"]=Module["asm"]["j"]).apply(null,arguments)};var _shine_close=Module["_shine_close"]=function(){return(_shine_close=Module["_shine_close"]=Module["asm"]["k"]).apply(null,arguments)};var _shine_js_int16_len=Module["_shine_js_int16_len"]=function(){return(_shine_js_int16_len=Module["_shine_js_int16_len"]=Module["asm"]["l"]).apply(null,arguments)};var _shine_js_ptr_len=Module["_shine_js_ptr_len"]=function(){return(_shine_js_ptr_len=Module["_shine_js_ptr_len"]=Module["asm"]["m"]).apply(null,arguments)};var _shine_js_init=Module["_shine_js_init"]=function(){return(_shine_js_init=Module["_shine_js_init"]=Module["asm"]["n"]).apply(null,arguments)};Module["setValue"]=setValue;Module["getValue"]=getValue;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();var ShineModule;var int16Len;var ptrLen;function shineInit(){int16Len=ShineModule._shine_js_int16_len();ptrLen=ShineModule._shine_js_ptr_len()}function Shine(args){if(ShineModule._shine_check_config(args.samplerate,args.bitrate)<0)throw"Invalid configuration";var stereoMode;if(!args.stereoMode){if(args.channels===1){stereoMode=Shine.MONO}else{stereoMode=Shine.JOINT_STEREO}}else{stereoMode=args.stereoMode}this._handle=ShineModule._shine_js_init(args.channels,args.samplerate,stereoMode,args.bitrate);this._channels=args.channels;this._samples_per_pass=ShineModule._shine_samples_per_pass(this._handle);this._buffer=ShineModule._malloc(this._channels*ptrLen);this._pcm=new Array(this._channels);this._rem=new Array(this._channels);this._written=ShineModule._malloc(int16Len);var _tmp,chan;for(chan=0;chan<this._channels;chan++){this._rem[chan]=new Int16Array;_tmp=ShineModule._malloc(this._samples_per_pass*int16Len);ShineModule.setValue(this._buffer+chan*ptrLen,_tmp,"*");this._pcm[chan]=ShineModule.HEAP16.subarray(_tmp/int16Len,_tmp/int16Len+this._samples_per_pass)}return this}Shine.checkConfig=function(samplerate,bitrate){return ShineModule._shine_check_config(samplerate,bitrate)>=0};Shine.prototype._encodePass=function(data){if(!this._handle)throw"Closed";var chan;for(chan=0;chan<this._channels;chan++)this._pcm[chan].set(data[chan]);var _buf=ShineModule._shine_encode_buffer(this._handle,this._buffer,this._written);var written=ShineModule.getValue(this._written,"i16");return ShineModule.HEAPU8.subarray(_buf,_buf+written)};function concat(ctr,a,b){if(typeof b==="undefined"){return a}var ret=new ctr(a.length+b.length);ret.set(a);ret.subarray(a.length).set(b);return ret}function clip(x){return x>1?1:x<-1?-1:x}function convertFloat32(buf){var ret=new Array(buf.length);var samples=buf[0].length;var chan,i;for(chan=0;chan<buf.length;chan++){ret[chan]=new Int16Array(samples);for(i=0;i<samples;i++){ret[chan][i]=parseInt(clip(buf[chan][i])*32767)}}return ret}Shine.prototype.encode=function(data){if(data.length!=this._channels)throw"Invalid data";var encoded=new Uint8Array;var tmp=new Array(this._channels);if(data[0]instanceof Float32Array){data=convertFloat32(data)}var chan;for(chan=0;chan<this._channels;chan++){tmp[chan]=new Float32Array;this._rem[chan]=concat(Int16Array,this._rem[chan],data[chan])}var i,enc;for(i=0;i<this._rem[0].length;i+=this._samples_per_pass){for(chan=0;chan<this._channels;chan++){tmp[chan]=this._rem[chan].subarray(i,i+this._samples_per_pass)}if(tmp[0].length<this._samples_per_pass){break}else{enc=this._encodePass(tmp);if(enc.length>0){encoded=concat(Uint8Array,encoded,enc)}}}if(tmp[0].length<this._samples_per_pass){this._rem=tmp}else{for(chan=0;chan<this._channels;chan++){this._rem[chan]=new Int16Array}}return encoded};Shine.prototype.close=function(){if(!this._handle){throw"Closed"}var _buf=ShineModule._shine_flush(this._handle,this._written);var written=ShineModule.getValue(this._written,"i16");var encoded=new Uint8Array(written);encoded.set(ShineModule.HEAPU8.subarray(_buf,_buf+written));ShineModule._free(this._written);ShineModule._shine_close(this._handle);this._handle=null;var chan;for(chan=0;chan<this._channels;chan++){ShineModule._free(ShineModule.getValue(this._buffer+chan*ptrLen,"*"))}ShineModule._free(this._buffer);return encoded};Shine.initialized=new Promise(function(resolve){Module["onRuntimeInitialized"]=function(){ShineModule=Module;shineInit();resolve()}});Module["Shine"]=Shine;Module["StereoMode"]={0:"STEREO",1:"JOINT_STEREO",2:"DUAL_CHANNEL",3:"MONO",STEREO:0,JOINT_STEREO:1,DUAL_CHANNEL:2,MONO:3};
+diff --git a/js/libshine.d.ts b/js/libshine.d.ts
+new file mode 100644
+index 0000000..8f00edc
+--- /dev/null
++++ b/js/libshine.d.ts
+@@ -0,0 +1,19 @@
++export type Data = Int16Array | Float32Array;
++export declare enum StereoMode {
++ STEREO = 0,
++ JOINT_STEREO = 1,
++ DUAL_CHANNEL = 2,
++ MONO = 3
++}
++export class Shine {
++ static initialized: Promise<void>;
++ static checkConfig(samplerate: number, bitrate: number): boolean;
++ constructor(args: {
++ samplerate: number;
++ bitrate: number;
++ channels: number;
++ stereoMode?: StereoMode;
++ });
++ encode(data: Data[]): Uint8Array;
++ close(): Uint8Array;
++}
+diff --git a/js/package-lock.json b/js/package-lock.json
+new file mode 100644
+index 0000000..38b374d
+--- /dev/null
++++ b/js/package-lock.json
+@@ -0,0 +1,18 @@
++{
++ "name": "@toots/shine.js",
++ "version": "1.0.1",
++ "lockfileVersion": 3,
++ "requires": true,
++ "packages": {
++ "": {
++ "name": "@toots/shine.js",
++ "version": "1.0.1",
++ "license": "LGPL-2.0-only"
++ },
++ "stubs": {
++ "version": "1.0.0",
++ "extraneous": true,
++ "license": "ISC"
++ }
++ }
++}
+diff --git a/js/package.json b/js/package.json
+new file mode 100644
+index 0000000..0c83619
+--- /dev/null
++++ b/js/package.json
+@@ -0,0 +1,24 @@
++{
++ "name": "@toots/shine.js",
++ "version": "1.0.3",
++ "description": "Shine fixed-point mp3 encoder",
++ "main": "dist/libshine_node.js",
++ "browser": "dist/libshine_browser.js",
++ "types": "libshine.d.ts",
++ "repository": {
++ "type": "git",
++ "url": "git+https://github.com/toots/shine.git"
++ },
++ "keywords": [
++ "mp3",
++ "encoder",
++ "wasm",
++ "fixed-point"
++ ],
++ "author": "Romain Beauxis <toots@rastageeks.org>",
++ "license": "LGPL-2.0-only",
++ "bugs": {
++ "url": "https://github.com/toots/shine/issues"
++ },
++ "homepage": "https://github.com/toots/shine#readme"
++}
+diff --git a/js/src/libshine_browser_wrapper.js b/js/src/libshine_browser_wrapper.js
+new file mode 100644
+index 0000000..f0ef04e
+--- /dev/null
++++ b/js/src/libshine_browser_wrapper.js
+@@ -0,0 +1,10 @@
++var createModule = require("./libshine_browser_stubs").default;
++
++Shine.initialized = (createModule()).then(function (Module) {
++ ShineModule = Module;
++ shineInit();
++});
++
++module.exports.Shine = Shine;
++
++module.exports.StereoMode = StereoMode;
+diff --git a/js/src/post.js b/js/src/libshine_class.js
+similarity index 57%
+rename from js/src/post.js
+rename to js/src/libshine_class.js
+index f6a07e6..5d88d9e 100644
+--- a/js/src/post.js
++++ b/js/src/libshine_class.js
+@@ -1,50 +1,64 @@
+ // libshine function wrappers
+
+-var isNode = typeof process === "object" && typeof require === "function";
++var StereoMode = {
++ '0': 'STEREO',
++ '1': 'JOINT_STEREO',
++ '2': 'DUAL_CHANNEL',
++ '3': 'MONO',
++ STEREO: 0,
++ JOINT_STEREO: 1,
++ DUAL_CHANNEL: 2,
++ MONO: 3
++};
++
++var ShineModule;
++var int16Len;
++var ptrLen;
+
+-var int16Len = Module.HEAP16.BYTES_PER_ELEMENT;
+-var ptrLen = Module.HEAP32.BYTES_PER_ELEMENT;
++function shineInit() {
++ int16Len = ShineModule._shine_js_int16_len();
++ ptrLen = ShineModule._shine_js_ptr_len();
++};
+
+ function Shine(args) {
+- if (_shine_check_config(args.samplerate, args.bitrate) < 0)
++ if (ShineModule._shine_check_config(args.samplerate, args.bitrate) < 0)
+ throw "Invalid configuration";
+
+- var mode;
+- if (!args.mode) {
++ var stereoMode;
++ if (!args.stereoMode) {
+ if (args.channels === 1) {
+- mode = Shine.MONO;
++ stereoMode = Shine.MONO;
+ } else {
+- mode = Shine.JOINT_STEREO;
++ stereoMode = Shine.JOINT_STEREO;
+ }
+ } else {
+- mode = args.mode;
++ stereoMode = args.stereoMode;
+ }
+
+- this._handle = _shine_js_init(args.channels, args.samplerate, mode, args.bitrate);
++ this._handle = ShineModule._shine_js_init(args.channels, args.samplerate, stereoMode, args.bitrate);
+
+ this._channels = args.channels;
+- this._samples_per_pass = _shine_samples_per_pass(this._handle);
++ this._samples_per_pass = ShineModule._shine_samples_per_pass(this._handle);
+
+- this._buffer = _malloc(this._channels * ptrLen);
++ this._buffer = ShineModule._malloc(this._channels * ptrLen);
+ this._pcm = new Array(this._channels);
+ this._rem = new Array(this._channels);
+- this._written = _malloc(int16Len);
++ this._written = ShineModule._malloc(int16Len);
+
+ var _tmp, chan;
+ for (chan=0; chan<this._channels; chan++) {
+ this._rem[chan] = new Int16Array;
+- _tmp = _malloc(this._samples_per_pass * int16Len);
+- setValue(this._buffer + chan*ptrLen, _tmp, "*")
+- this._pcm[chan] = Module.HEAP16.subarray(_tmp/int16Len, _tmp/int16Len+this._samples_per_pass)
++ _tmp = ShineModule._malloc(this._samples_per_pass * int16Len);
++ ShineModule.setValue(this._buffer + chan*ptrLen, _tmp, "*")
++ this._pcm[chan] = ShineModule.HEAP16.subarray(_tmp/int16Len, _tmp/int16Len+this._samples_per_pass)
+ }
+
+ return this;
+ };
+
+-Shine.STEREO = 0;
+-Shine.JOINT_STEREO = 1;
+-Shine.DUAL_CHANNEL = 2;
+-Shine.MONO = 3;
++Shine.checkConfig = function (samplerate, bitrate) {
++ return ShineModule._shine_check_config(samplerate, bitrate) >= 0;
++};
+
+ Shine.prototype._encodePass = function (data) {
+ if (!this._handle)
+@@ -54,11 +68,11 @@ Shine.prototype._encodePass = function (data) {
+ for (chan=0;chan<this._channels;chan++)
+ this._pcm[chan].set(data[chan]);
+
+- var _buf = _shine_encode_buffer(this._handle, this._buffer, this._written);
++ var _buf = ShineModule._shine_encode_buffer(this._handle, this._buffer, this._written);
+
+- var written = getValue(this._written, "i16");
++ var written = ShineModule.getValue(this._written, "i16");
+
+- return Module.HEAPU8.subarray(_buf, _buf+written);
++ return ShineModule.HEAPU8.subarray(_buf, _buf+written);
+ };
+
+ function concat(ctr, a, b) {
+@@ -138,30 +152,22 @@ Shine.prototype.close = function () {
+ throw "Closed";
+ }
+
+- var _buf = _shine_flush(this._handle, this._written);
++ var _buf = ShineModule._shine_flush(this._handle, this._written);
+
+- var written = getValue(this._written, "i16");
++ var written = ShineModule.getValue(this._written, "i16");
+ var encoded = new Uint8Array(written);
+
+- encoded.set(Module.HEAPU8.subarray(_buf, _buf + written));
++ encoded.set(ShineModule.HEAPU8.subarray(_buf, _buf + written));
+
+- _free(this._written);
+- _shine_close(this._handle);
++ ShineModule._free(this._written);
++ ShineModule._shine_close(this._handle);
+ this._handle = null;
+
+ var chan;
+ for (chan=0; chan<this._channels; chan++) {
+- _free(getValue(this._buffer + chan*ptrLen, "*"));
++ ShineModule._free(ShineModule.getValue(this._buffer + chan*ptrLen, "*"));
+ }
+- _free(this._buffer);
++ ShineModule._free(this._buffer);
+
+ return encoded;
+ };
+-
+-if (isNode) {
+- module.exports = Shine;
+-}
+-
+-return Shine;
+-
+-}).call(context)})();
+diff --git a/js/src/libshine_node_wrapper.js b/js/src/libshine_node_wrapper.js
+new file mode 100644
+index 0000000..aaaf28c
+--- /dev/null
++++ b/js/src/libshine_node_wrapper.js
+@@ -0,0 +1,10 @@
++Shine.initialized = new Promise(function (resolve) {
++ Module['onRuntimeInitialized'] = function () {
++ ShineModule = Module;
++ shineInit();
++ resolve();
++ }
++})
++
++Module["Shine"] = Shine;
++Module["StereoMode"] = StereoMode;
+diff --git a/js/src/pre.js b/js/src/pre.js
+deleted file mode 100644
+index 8078b87..0000000
+--- a/js/src/pre.js
++++ /dev/null
+@@ -1,9 +0,0 @@
+-// libshine.js - port of libshine to JavaScript using emscripten
+-// by Romain Beauxis <toots@rastageeks.org> from code by
+-// Andreas Krennmair <ak@synflood.at>
+-
+-
+-var Shine = (function() {
+- var Module;
+- var context = {};
+- return (function() {
+diff --git a/js/src/wrapper.c b/js/src/wrapper.c
+index 506570d..375b35c 100644
+--- a/js/src/wrapper.c
++++ b/js/src/wrapper.c
+@@ -1,7 +1,16 @@
++#include "layer3.h"
++#include "types.h"
+ #include <stdlib.h>
+ #include <string.h>
+-#include "types.h"
+-#include "layer3.h"
++#include <stdint.h>
++
++size_t shine_js_int16_len() {
++ return sizeof(int16_t);
++}
++
++size_t shine_js_ptr_len() {
++ return sizeof(void*);
++}
+
+ shine_t shine_js_init(int channels, int samplerate, int mode, int bitr) {
+ shine_config_t config;
+@@ -13,4 +22,4 @@ shine_t shine_js_init(int channels, int samplerate, int mode, int bitr) {
+ config.mpeg.bitr = bitr;
+
+ return shine_initialise(&config);
+-}
++}
+diff --git a/js/test/browser/Makefile b/js/test/browser/Makefile
+index b3eedc8..befc1ce 100644
+--- a/js/test/browser/Makefile
++++ b/js/test/browser/Makefile
+@@ -1,2 +1,2 @@
+ all:
+- python -m SimpleHTTPServer
++ python -m http.server
+diff --git a/js/test/browser/encode.js b/js/test/browser/encode.js
+index 65e009d..af17116 100644
+--- a/js/test/browser/encode.js
++++ b/js/test/browser/encode.js
+@@ -4,24 +4,22 @@ function runEncodeTest(log, callback) {
+ var samplerate = 44100;
+ var channels = 2;
+ var bitrate = 128;
+- var mode = Shine.STEREO;
+
+ var shine = new Shine({
+ samplerate: samplerate,
+ channels: channels,
+ bitrate: bitrate,
+- mode: mode
+ });
+
+- var started = new Date;
++ var started = new Date();
+ var duration = 0.0;
+ var encoded = [];
+
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", "encode.wav", true);
+ xhr.responseType = "arraybuffer";
+- xhr.onload = function() {
+- var samples = xhr.response.byteLength / (2*channels);
++ xhr.onload = function () {
++ var samples = xhr.response.byteLength / (2 * channels);
+ var data = new Int16Array(xhr.response);
+ var buf = convertInterleavedBuffer(data, channels, samples);
+ duration += parseFloat(samples) / samplerate;
+@@ -33,12 +31,12 @@ function runEncodeTest(log, callback) {
+ xhr.addEventListener("load", function () {
+ encoded.push(shine.close());
+
+- var ended = new Date
+- var encodingTime = (ended.getTime() - started.getTime())/1000
++ var ended = new Date();
++ var encodingTime = (ended.getTime() - started.getTime()) / 1000;
+ log("Done encoding.");
+ log("File duration: " + duration.toFixed(2) + " seconds");
+ log("Encoding time: " + encodingTime.toFixed(2) + " seconds");
+- log("Encoding rate: " + (duration/encodingTime).toFixed(2) + "X");
++ log("Encoding rate: " + (duration / encodingTime).toFixed(2) + "X");
+ callback(new Blob(encoded));
+ });
+
+@@ -48,10 +46,10 @@ function runEncodeTest(log, callback) {
+ function convertInterleavedBuffer(buf, channels, samples) {
+ var chan, i;
+ ret = new Array(channels);
+- for (chan=0; chan<channels; chan++) {
++ for (chan = 0; chan < channels; chan++) {
+ ret[chan] = new Int16Array(samples);
+- for (i=0; i<samples; i++) {
+- ret[chan][i] = buf[i*channels + chan];
++ for (i = 0; i < samples; i++) {
++ ret[chan][i] = buf[i * channels + chan];
+ }
+ }
+ return ret;
+diff --git a/js/test/browser/index.html b/js/test/browser/index.html
+index b3a4ee3..6496e46 100644
+--- a/js/test/browser/index.html
++++ b/js/test/browser/index.html
+@@ -1,4 +1,4 @@
+-<script src="libshine.js"></script>
++<script src="libshine_node.js"></script>
+ <script src="encode.js"></script>
+ <script src="rounds.js"></script>
+ <script>
+@@ -7,20 +7,21 @@
+ el.innerHTML = el.innerHTML + "<br>" + msg;
+ };
+
+- var load = function() {
+- runEncodeTest(log, function (blob) {
+- if (typeof window.URL !== "undefined") {
+- var link = document.getElementById("download-link");
+- link.href = URL.createObjectURL(blob);
+- link.download = "encoded.mp3";
+- }
++ function onLoad() {
++ Shine.initialized.then(function () {
++ runEncodeTest(log, function (blob) {
++ if (typeof window.URL !== "undefined") {
++ var link = document.getElementById("download-link");
++ link.href = URL.createObjectURL(blob);
++ link.download = "encoded.mp3";
++ }
+
+- log("");
+- runRoundsTest(Shine, log);
++ log("");
++ runRoundsTest(Shine, log);
++ });
+ });
+ };
+-
+- window.addEventListener("load", load, false);
++ window.addEventListener("load", onLoad, false);
+ </script>
+ <a href="#" id="download-link">Download encoded file</a>
+ <div id="output"></div>
+diff --git a/js/test/browser/libshine.js b/js/test/browser/libshine.js
+deleted file mode 120000
+index fb57470..0000000
+--- a/js/test/browser/libshine.js
++++ /dev/null
+@@ -1 +0,0 @@
+-../../dist/libshine.js
+\ No newline at end of file
+diff --git a/js/test/browser/libshine_node.js b/js/test/browser/libshine_node.js
+new file mode 120000
+index 0000000..07f07a4
+--- /dev/null
++++ b/js/test/browser/libshine_node.js
+@@ -0,0 +1 @@
++../../dist/libshine_node.js
+\ No newline at end of file
+diff --git a/js/test/lib/rounds.js b/js/test/lib/rounds.js
+index f76410a..1b388b5 100644
+--- a/js/test/lib/rounds.js
++++ b/js/test/lib/rounds.js
+@@ -1,39 +1,35 @@
+ var channels = 2; // test.wav is stereo
+ var samplerate = 44100; // ditto
+
+-var runRoundsTest = function(Shine, log) {
++var runRoundsTest = function (Shine, log) {
+ log("Executing rounds test");
+
+ var nPasses = 50;
+ var frameSize = 4096;
+ var data = new Array(channels);
+ var chan;
+- for (chan=0; chan<channels; chan++)
+- data[chan] = new Int16Array(frameSize);
++ for (chan = 0; chan < channels; chan++) data[chan] = new Int16Array(frameSize);
+
+ log("Encoding " + nPasses + " buffers of " + frameSize + " samples");
+- var started = new Date;
++ var started = new Date();
+
+ var shine = new Shine({
+ samplerate: samplerate,
+ bitrate: 128,
+ channels: channels,
+- model: Shine.STEREO
+ });
+
+ var i;
+- for (i=0; i < nPasses; i++)
+- shine.encode(data);
++ for (i = 0; i < nPasses; i++) shine.encode(data);
+ shine.close();
+
+- var ended = new Date;
+- var duration = (parseFloat(nPasses*frameSize) / parseFloat(samplerate)).toFixed(2);
+- var encodingTime = (ended.getTime() - started.getTime())/1000;
++ var ended = new Date();
++ var duration = (parseFloat(nPasses * frameSize) / parseFloat(samplerate)).toFixed(2);
++ var encodingTime = (ended.getTime() - started.getTime()) / 1000;
+ log("Done encoding");
+ log("Total duration: " + duration);
+ log("Encoding time: " + encodingTime.toFixed(2));
+- log("Encoding rate: " + (duration/encodingTime).toFixed(2) + "X");
++ log("Encoding rate: " + (duration / encodingTime).toFixed(2) + "X");
+ };
+
+-if (typeof process === "object" && typeof require === "function")
+- module.exports = runRoundsTest;
++if (typeof process === "object" && typeof require === "function") module.exports = runRoundsTest;
+diff --git a/js/test/nextjs/.eslintrc.json b/js/test/nextjs/.eslintrc.json
+new file mode 100644
+index 0000000..bffb357
+--- /dev/null
++++ b/js/test/nextjs/.eslintrc.json
+@@ -0,0 +1,3 @@
++{
++ "extends": "next/core-web-vitals"
++}
+diff --git a/js/test/nextjs/.gitignore b/js/test/nextjs/.gitignore
+new file mode 100644
+index 0000000..c87c9b3
+--- /dev/null
++++ b/js/test/nextjs/.gitignore
+@@ -0,0 +1,36 @@
++# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
++
++# dependencies
++/node_modules
++/.pnp
++.pnp.js
++
++# testing
++/coverage
++
++# next.js
++/.next/
++/out/
++
++# production
++/build
++
++# misc
++.DS_Store
++*.pem
++
++# debug
++npm-debug.log*
++yarn-debug.log*
++yarn-error.log*
++.pnpm-debug.log*
++
++# local env files
++.env*.local
++
++# vercel
++.vercel
++
++# typescript
++*.tsbuildinfo
++next-env.d.ts
+diff --git a/js/test/nextjs/.prettierignore b/js/test/nextjs/.prettierignore
+new file mode 100644
+index 0000000..799a1ca
+--- /dev/null
++++ b/js/test/nextjs/.prettierignore
+@@ -0,0 +1,4 @@
++.next/
++out/
++public/audio
++__ENV.js
+diff --git a/js/test/nextjs/.prettierrc b/js/test/nextjs/.prettierrc
+new file mode 100644
+index 0000000..a36a92f
+--- /dev/null
++++ b/js/test/nextjs/.prettierrc
+@@ -0,0 +1,12 @@
++{
++ "singleQuote": false,
++ "quoteProps": "as-needed",
++ "arrowParens": "avoid",
++ "tabWidth": 2,
++ "trailingComma": "es5",
++ "semi": false,
++ "jsxSingleQuote": true,
++ "bracketSameLine": false,
++ "printWidth": 120,
++ "parser": "typescript"
++}
+diff --git a/js/test/nextjs/README.md b/js/test/nextjs/README.md
+new file mode 100644
+index 0000000..fb9bcc9
+--- /dev/null
++++ b/js/test/nextjs/README.md
+@@ -0,0 +1,36 @@
++This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
++
++## Getting Started
++
++First, run the development server:
++
++```bash
++npm run dev
++# or
++yarn dev
++```
++
++Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
++
++You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.
++
++[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
++
++The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
++
++This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
++
++## Learn More
++
++To learn more about Next.js, take a look at the following resources:
++
++- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
++- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
++
++You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
++
++## Deploy on Vercel
++
++The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
++
++Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
+diff --git a/js/test/nextjs/lib/encode.ts b/js/test/nextjs/lib/encode.ts
+new file mode 100644
+index 0000000..6e1ef2d
+--- /dev/null
++++ b/js/test/nextjs/lib/encode.ts
+@@ -0,0 +1,59 @@
++import { Shine } from "@toots/shine.js"
++
++const convertInterleavedBuffer = (buf: Int16Array, channels: number, samples: number) => {
++ const ret = new Array(channels)
++ for (let chan = 0; chan < channels; chan++) {
++ ret[chan] = new Int16Array(samples)
++ for (let i = 0; i < samples; i++) {
++ ret[chan][i] = buf[i * channels + chan]
++ }
++ }
++ return ret
++}
++
++export const runEncodeTest = (log: (_: string) => void, callback: (_: Blob) => void) => {
++ log("Executing encoding test")
++
++ const samplerate = 44100
++ const channels = 2
++ const bitrate = 128
++ //const stereoMode = StereoMode.STEREO
++
++ const shine = new Shine({
++ samplerate: samplerate,
++ channels: channels,
++ bitrate: bitrate,
++ // stereoMode: stereoMode,
++ })
++
++ const started = new Date()
++ let duration = 0.0
++ const encoded: Uint8Array[] = []
++
++ const xhr = new XMLHttpRequest()
++ xhr.open("GET", "encode.wav", true)
++ xhr.responseType = "arraybuffer"
++ xhr.onload = () => {
++ const samples = xhr.response.byteLength / (2 * channels)
++ const data = new Int16Array(xhr.response)
++ const buf = convertInterleavedBuffer(data, channels, samples)
++ duration += samples / samplerate
++ encoded.push(shine.encode(buf))
++ }
++
++ log("Got WAV file.")
++ log("Encoding..")
++ xhr.addEventListener("load", () => {
++ encoded.push(shine.close())
++
++ const ended = new Date()
++ const encodingTime = (ended.getTime() - started.getTime()) / 1000
++ log("Done encoding.")
++ log("File duration: " + duration.toFixed(2) + " seconds")
++ log("Encoding time: " + encodingTime.toFixed(2) + " seconds")
++ log("Encoding rate: " + (duration / encodingTime).toFixed(2) + "X")
++ callback(new Blob(encoded))
++ })
++
++ xhr.send()
++}
+diff --git a/js/test/nextjs/lib/encode.wav b/js/test/nextjs/lib/encode.wav
+new file mode 100644
+index 0000000..c8cd595
+Binary files /dev/null and b/js/test/nextjs/lib/encode.wav differ
+diff --git a/js/test/nextjs/lib/rounds.ts b/js/test/nextjs/lib/rounds.ts
+new file mode 100644
+index 0000000..fab9b7c
+--- /dev/null
++++ b/js/test/nextjs/lib/rounds.ts
+@@ -0,0 +1,34 @@
++import { Shine, StereoMode } from "@toots/shine.js"
++
++const channels = 2 // test.wav is stereo
++const samplerate = 44100 // ditto
++
++export const runRoundsTest = (log: (_: string) => void) => {
++ log("Executing rounds test")
++
++ const nPasses = 50
++ const frameSize = 4096
++ const data = new Array(channels)
++ for (let chan = 0; chan < channels; chan++) data[chan] = new Int16Array(frameSize)
++
++ log("Encoding " + nPasses + " buffers of " + frameSize + " samples")
++ const started = new Date()
++
++ const shine = new Shine({
++ samplerate: samplerate,
++ bitrate: 128,
++ channels: channels,
++ stereoMode: StereoMode.STEREO,
++ })
++
++ for (let i = 0; i < nPasses; i++) shine.encode(data)
++ shine.close()
++
++ const ended = new Date()
++ const duration = (nPasses * frameSize) / samplerate
++ const encodingTime = (ended.getTime() - started.getTime()) / 1000
++ log("Done encoding")
++ log("Total duration: " + duration.toFixed(2))
++ log("Encoding time: " + encodingTime.toFixed(2))
++ log("Encoding rate: " + (duration / encodingTime).toFixed(2) + "X")
++}
+diff --git a/js/test/nextjs/next.config.js b/js/test/nextjs/next.config.js
+new file mode 100644
+index 0000000..a843cbe
+--- /dev/null
++++ b/js/test/nextjs/next.config.js
+@@ -0,0 +1,6 @@
++/** @type {import('next').NextConfig} */
++const nextConfig = {
++ reactStrictMode: true,
++}
++
++module.exports = nextConfig
+diff --git a/js/test/nextjs/package-lock.json b/js/test/nextjs/package-lock.json
+new file mode 100644
+index 0000000..02208b0
+--- /dev/null
++++ b/js/test/nextjs/package-lock.json
+@@ -0,0 +1,3084 @@
++{
++ "name": "shine-nextjs-test-app",
++ "version": "0.1.0",
++ "lockfileVersion": 3,
++ "requires": true,
++ "packages": {
++ "": {
++ "name": "shine-nextjs-test-app",
++ "version": "0.1.0",
++ "dependencies": {
++ "@next/font": "13.1.1",
++ "@toots/shine.js": "file:../..",
++ "@types/node": "18.11.18",
++ "@types/react": "18.0.26",
++ "@types/react-dom": "18.0.10",
++ "eslint": "8.31.0",
++ "eslint-config-next": "13.1.1",
++ "next": "13.1.1",
++ "react": "18.2.0",
++ "react-dom": "18.2.0",
++ "typescript": "4.9.4"
++ },
++ "devDependencies": {
++ "prettier": "^2.8.1"
++ }
++ },
++ "node_modules/@babel/runtime": {
++ "version": "7.20.7",
++ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz",
++ "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==",
++ "dependencies": {
++ "regenerator-runtime": "^0.13.11"
++ },
++ "engines": {
++ "node": ">=6.9.0"
++ }
++ },
++ "node_modules/@babel/runtime-corejs3": {
++ "version": "7.20.7",
++ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.7.tgz",
++ "integrity": "sha512-jr9lCZ4RbRQmCR28Q8U8Fu49zvFqLxTY9AMOUz+iyMohMoAgpEcVxY+wJNay99oXOpOcCTODkk70NDN2aaJEeg==",
++ "dependencies": {
++ "core-js-pure": "^3.25.1",
++ "regenerator-runtime": "^0.13.11"
++ },
++ "engines": {
++ "node": ">=6.9.0"
++ }
++ },
++ "node_modules/@eslint/eslintrc": {
++ "version": "1.4.1",
++ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
++ "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==",
++ "dependencies": {
++ "ajv": "^6.12.4",
++ "debug": "^4.3.2",
++ "espree": "^9.4.0",
++ "globals": "^13.19.0",
++ "ignore": "^5.2.0",
++ "import-fresh": "^3.2.1",
++ "js-yaml": "^4.1.0",
++ "minimatch": "^3.1.2",
++ "strip-json-comments": "^3.1.1"
++ },
++ "engines": {
++ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
++ },
++ "funding": {
++ "url": "https://opencollective.com/eslint"
++ }
++ },
++ "node_modules/@humanwhocodes/config-array": {
++ "version": "0.11.8",
++ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
++ "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
++ "dependencies": {
++ "@humanwhocodes/object-schema": "^1.2.1",
++ "debug": "^4.1.1",
++ "minimatch": "^3.0.5"
++ },
++ "engines": {
++ "node": ">=10.10.0"
++ }
++ },
++ "node_modules/@humanwhocodes/module-importer": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
++ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
++ "engines": {
++ "node": ">=12.22"
++ },
++ "funding": {
++ "type": "github",
++ "url": "https://github.com/sponsors/nzakas"
++ }
++ },
++ "node_modules/@humanwhocodes/object-schema": {
++ "version": "1.2.1",
++ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
++ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA=="
++ },
++ "node_modules/@next/env": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/env/-/env-13.1.1.tgz",
++ "integrity": "sha512-vFMyXtPjSAiOXOywMojxfKIqE3VWN5RCAx+tT3AS3pcKjMLFTCJFUWsKv8hC+87Z1F4W3r68qTwDFZIFmd5Xkw=="
++ },
++ "node_modules/@next/eslint-plugin-next": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.1.tgz",
++ "integrity": "sha512-SBrOFS8PC3nQ5aeZmawJkjKkWjwK9RoxvBSv/86nZp0ubdoVQoko8r8htALd9ufp16NhacCdqhu9bzZLDWtALQ==",
++ "dependencies": {
++ "glob": "7.1.7"
++ }
++ },
++ "node_modules/@next/font": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/font/-/font-13.1.1.tgz",
++ "integrity": "sha512-amygRorS05hYK1/XQRZo5qBl7l2fpHnezeKU/cNveWU5QJg+sg8gMGkUXHtvesNKpiKIJshBRH1TzvO+2sKpvQ=="
++ },
++ "node_modules/@next/swc-android-arm-eabi": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.1.1.tgz",
++ "integrity": "sha512-qnFCx1kT3JTWhWve4VkeWuZiyjG0b5T6J2iWuin74lORCupdrNukxkq9Pm+Z7PsatxuwVJMhjUoYz7H4cWzx2A==",
++ "cpu": [
++ "arm"
++ ],
++ "optional": true,
++ "os": [
++ "android"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-android-arm64": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.1.1.tgz",
++ "integrity": "sha512-eCiZhTzjySubNqUnNkQCjU3Fh+ep3C6b5DCM5FKzsTH/3Gr/4Y7EiaPZKILbvnXmhWtKPIdcY6Zjx51t4VeTfA==",
++ "cpu": [
++ "arm64"
++ ],
++ "optional": true,
++ "os": [
++ "android"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-darwin-arm64": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.1.1.tgz",
++ "integrity": "sha512-9zRJSSIwER5tu9ADDkPw5rIZ+Np44HTXpYMr0rkM656IvssowPxmhK0rTreC1gpUCYwFsRbxarUJnJsTWiutPg==",
++ "cpu": [
++ "arm64"
++ ],
++ "optional": true,
++ "os": [
++ "darwin"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-darwin-x64": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.1.1.tgz",
++ "integrity": "sha512-qWr9qEn5nrnlhB0rtjSdR00RRZEtxg4EGvicIipqZWEyayPxhUu6NwKiG8wZiYZCLfJ5KWr66PGSNeDMGlNaiA==",
++ "cpu": [
++ "x64"
++ ],
++ "optional": true,
++ "os": [
++ "darwin"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-freebsd-x64": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.1.1.tgz",
++ "integrity": "sha512-UwP4w/NcQ7V/VJEj3tGVszgb4pyUCt3lzJfUhjDMUmQbzG9LDvgiZgAGMYH6L21MoyAATJQPDGiAMWAPKsmumA==",
++ "cpu": [
++ "x64"
++ ],
++ "optional": true,
++ "os": [
++ "freebsd"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-linux-arm-gnueabihf": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.1.1.tgz",
++ "integrity": "sha512-CnsxmKHco9sosBs1XcvCXP845Db+Wx1G0qouV5+Gr+HT/ZlDYEWKoHVDgnJXLVEQzq4FmHddBNGbXvgqM1Gfkg==",
++ "cpu": [
++ "arm"
++ ],
++ "optional": true,
++ "os": [
++ "linux"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-linux-arm64-gnu": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.1.1.tgz",
++ "integrity": "sha512-JfDq1eri5Dif+VDpTkONRd083780nsMCOKoFG87wA0sa4xL8LGcXIBAkUGIC1uVy9SMsr2scA9CySLD/i+Oqiw==",
++ "cpu": [
++ "arm64"
++ ],
++ "optional": true,
++ "os": [
++ "linux"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-linux-arm64-musl": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.1.1.tgz",
++ "integrity": "sha512-GA67ZbDq2AW0CY07zzGt07M5b5Yaq5qUpFIoW3UFfjOPgb0Sqf3DAW7GtFMK1sF4ROHsRDMGQ9rnT0VM2dVfKA==",
++ "cpu": [
++ "arm64"
++ ],
++ "optional": true,
++ "os": [
++ "linux"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-linux-x64-gnu": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.1.1.tgz",
++ "integrity": "sha512-nnjuBrbzvqaOJaV+XgT8/+lmXrSCOt1YYZn/irbDb2fR2QprL6Q7WJNgwsZNxiLSfLdv+2RJGGegBx9sLBEzGA==",
++ "cpu": [
++ "x64"
++ ],
++ "optional": true,
++ "os": [
++ "linux"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-linux-x64-musl": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.1.1.tgz",
++ "integrity": "sha512-CM9xnAQNIZ8zf/igbIT/i3xWbQZYaF397H+JroF5VMOCUleElaMdQLL5riJml8wUfPoN3dtfn2s4peSr3azz/g==",
++ "cpu": [
++ "x64"
++ ],
++ "optional": true,
++ "os": [
++ "linux"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-win32-arm64-msvc": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.1.1.tgz",
++ "integrity": "sha512-pzUHOGrbgfGgPlOMx9xk3QdPJoRPU+om84hqVoe6u+E0RdwOG0Ho/2UxCgDqmvpUrMab1Deltlt6RqcXFpnigQ==",
++ "cpu": [
++ "arm64"
++ ],
++ "optional": true,
++ "os": [
++ "win32"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-win32-ia32-msvc": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.1.1.tgz",
++ "integrity": "sha512-WeX8kVS46aobM9a7Xr/kEPcrTyiwJqQv/tbw6nhJ4fH9xNZ+cEcyPoQkwPo570dCOLz3Zo9S2q0E6lJ/EAUOBg==",
++ "cpu": [
++ "ia32"
++ ],
++ "optional": true,
++ "os": [
++ "win32"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@next/swc-win32-x64-msvc": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.1.1.tgz",
++ "integrity": "sha512-mVF0/3/5QAc5EGVnb8ll31nNvf3BWpPY4pBb84tk+BfQglWLqc5AC9q1Ht/YMWiEgs8ALNKEQ3GQnbY0bJF2Gg==",
++ "cpu": [
++ "x64"
++ ],
++ "optional": true,
++ "os": [
++ "win32"
++ ],
++ "engines": {
++ "node": ">= 10"
++ }
++ },
++ "node_modules/@nodelib/fs.scandir": {
++ "version": "2.1.5",
++ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
++ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
++ "dependencies": {
++ "@nodelib/fs.stat": "2.0.5",
++ "run-parallel": "^1.1.9"
++ },
++ "engines": {
++ "node": ">= 8"
++ }
++ },
++ "node_modules/@nodelib/fs.stat": {
++ "version": "2.0.5",
++ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
++ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
++ "engines": {
++ "node": ">= 8"
++ }
++ },
++ "node_modules/@nodelib/fs.walk": {
++ "version": "1.2.8",
++ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
++ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
++ "dependencies": {
++ "@nodelib/fs.scandir": "2.1.5",
++ "fastq": "^1.6.0"
++ },
++ "engines": {
++ "node": ">= 8"
++ }
++ },
++ "node_modules/@pkgr/utils": {
++ "version": "2.3.1",
++ "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz",
++ "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==",
++ "dependencies": {
++ "cross-spawn": "^7.0.3",
++ "is-glob": "^4.0.3",
++ "open": "^8.4.0",
++ "picocolors": "^1.0.0",
++ "tiny-glob": "^0.2.9",
++ "tslib": "^2.4.0"
++ },
++ "engines": {
++ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
++ },
++ "funding": {
++ "url": "https://opencollective.com/unts"
++ }
++ },
++ "node_modules/@rushstack/eslint-patch": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz",
++ "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg=="
++ },
++ "node_modules/@swc/helpers": {
++ "version": "0.4.14",
++ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz",
++ "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==",
++ "dependencies": {
++ "tslib": "^2.4.0"
++ }
++ },
++ "node_modules/@toots/shine.js": {
++ "version": "1.0.1",
++ "resolved": "file:../..",
++ "license": "LGPL-2.0-only"
++ },
++ "node_modules/@types/json5": {
++ "version": "0.0.29",
++ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
++ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
++ },
++ "node_modules/@types/node": {
++ "version": "18.11.18",
++ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
++ "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
++ },
++ "node_modules/@types/prop-types": {
++ "version": "15.7.5",
++ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
++ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
++ },
++ "node_modules/@types/react": {
++ "version": "18.0.26",
++ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz",
++ "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==",
++ "dependencies": {
++ "@types/prop-types": "*",
++ "@types/scheduler": "*",
++ "csstype": "^3.0.2"
++ }
++ },
++ "node_modules/@types/react-dom": {
++ "version": "18.0.10",
++ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz",
++ "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==",
++ "dependencies": {
++ "@types/react": "*"
++ }
++ },
++ "node_modules/@types/scheduler": {
++ "version": "0.16.2",
++ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
++ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
++ },
++ "node_modules/@typescript-eslint/parser": {
++ "version": "5.47.1",
++ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.47.1.tgz",
++ "integrity": "sha512-9Vb+KIv29r6GPu4EboWOnQM7T+UjpjXvjCPhNORlgm40a9Ia9bvaPJswvtae1gip2QEeVeGh6YquqAzEgoRAlw==",
++ "dependencies": {
++ "@typescript-eslint/scope-manager": "5.47.1",
++ "@typescript-eslint/types": "5.47.1",
++ "@typescript-eslint/typescript-estree": "5.47.1",
++ "debug": "^4.3.4"
++ },
++ "engines": {
++ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
++ },
++ "funding": {
++ "type": "opencollective",
++ "url": "https://opencollective.com/typescript-eslint"
++ },
++ "peerDependencies": {
++ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
++ },
++ "peerDependenciesMeta": {
++ "typescript": {
++ "optional": true
++ }
++ }
++ },
++ "node_modules/@typescript-eslint/scope-manager": {
++ "version": "5.47.1",
++ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.47.1.tgz",
++ "integrity": "sha512-9hsFDsgUwrdOoW1D97Ewog7DYSHaq4WKuNs0LHF9RiCmqB0Z+XRR4Pf7u7u9z/8CciHuJ6yxNws1XznI3ddjEw==",
++ "dependencies": {
++ "@typescript-eslint/types": "5.47.1",
++ "@typescript-eslint/visitor-keys": "5.47.1"
++ },
++ "engines": {
++ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
++ },
++ "funding": {
++ "type": "opencollective",
++ "url": "https://opencollective.com/typescript-eslint"
++ }
++ },
++ "node_modules/@typescript-eslint/types": {
++ "version": "5.47.1",
++ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.47.1.tgz",
++ "integrity": "sha512-CmALY9YWXEpwuu6377ybJBZdtSAnzXLSQcxLSqSQSbC7VfpMu/HLVdrnVJj7ycI138EHqocW02LPJErE35cE9A==",
++ "engines": {
++ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
++ },
++ "funding": {
++ "type": "opencollective",
++ "url": "https://opencollective.com/typescript-eslint"
++ }
++ },
++ "node_modules/@typescript-eslint/typescript-estree": {
++ "version": "5.47.1",
++ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.1.tgz",
++ "integrity": "sha512-4+ZhFSuISAvRi2xUszEj0xXbNTHceV9GbH9S8oAD2a/F9SW57aJNQVOCxG8GPfSWH/X4eOPdMEU2jYVuWKEpWA==",
++ "dependencies": {
++ "@typescript-eslint/types": "5.47.1",
++ "@typescript-eslint/visitor-keys": "5.47.1",
++ "debug": "^4.3.4",
++ "globby": "^11.1.0",
++ "is-glob": "^4.0.3",
++ "semver": "^7.3.7",
++ "tsutils": "^3.21.0"
++ },
++ "engines": {
++ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
++ },
++ "funding": {
++ "type": "opencollective",
++ "url": "https://opencollective.com/typescript-eslint"
++ },
++ "peerDependenciesMeta": {
++ "typescript": {
++ "optional": true
++ }
++ }
++ },
++ "node_modules/@typescript-eslint/visitor-keys": {
++ "version": "5.47.1",
++ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.1.tgz",
++ "integrity": "sha512-rF3pmut2JCCjh6BLRhNKdYjULMb1brvoaiWDlHfLNVgmnZ0sBVJrs3SyaKE1XoDDnJuAx/hDQryHYmPUuNq0ig==",
++ "dependencies": {
++ "@typescript-eslint/types": "5.47.1",
++ "eslint-visitor-keys": "^3.3.0"
++ },
++ "engines": {
++ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
++ },
++ "funding": {
++ "type": "opencollective",
++ "url": "https://opencollective.com/typescript-eslint"
++ }
++ },
++ "node_modules/acorn": {
++ "version": "8.8.1",
++ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
++ "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
++ "bin": {
++ "acorn": "bin/acorn"
++ },
++ "engines": {
++ "node": ">=0.4.0"
++ }
++ },
++ "node_modules/acorn-jsx": {
++ "version": "5.3.2",
++ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
++ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
++ "peerDependencies": {
++ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
++ }
++ },
++ "node_modules/ajv": {
++ "version": "6.12.6",
++ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
++ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
++ "dependencies": {
++ "fast-deep-equal": "^3.1.1",
++ "fast-json-stable-stringify": "^2.0.0",
++ "json-schema-traverse": "^0.4.1",
++ "uri-js": "^4.2.2"
++ },
++ "funding": {
++ "type": "github",
++ "url": "https://github.com/sponsors/epoberezkin"
++ }
++ },
++ "node_modules/ansi-regex": {
++ "version": "5.0.1",
++ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
++ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/ansi-styles": {
++ "version": "4.3.0",
++ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
++ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
++ "dependencies": {
++ "color-convert": "^2.0.1"
++ },
++ "engines": {
++ "node": ">=8"
++ },
++ "funding": {
++ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
++ }
++ },
++ "node_modules/argparse": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
++ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
++ },
++ "node_modules/aria-query": {
++ "version": "4.2.2",
++ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
++ "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
++ "dependencies": {
++ "@babel/runtime": "^7.10.2",
++ "@babel/runtime-corejs3": "^7.10.2"
++ },
++ "engines": {
++ "node": ">=6.0"
++ }
++ },
++ "node_modules/array-includes": {
++ "version": "3.1.6",
++ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
++ "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.4",
++ "es-abstract": "^1.20.4",
++ "get-intrinsic": "^1.1.3",
++ "is-string": "^1.0.7"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/array-union": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
++ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/array.prototype.flat": {
++ "version": "1.3.1",
++ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
++ "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.4",
++ "es-abstract": "^1.20.4",
++ "es-shim-unscopables": "^1.0.0"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/array.prototype.flatmap": {
++ "version": "1.3.1",
++ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
++ "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.4",
++ "es-abstract": "^1.20.4",
++ "es-shim-unscopables": "^1.0.0"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/array.prototype.tosorted": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz",
++ "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.4",
++ "es-abstract": "^1.20.4",
++ "es-shim-unscopables": "^1.0.0",
++ "get-intrinsic": "^1.1.3"
++ }
++ },
++ "node_modules/ast-types-flow": {
++ "version": "0.0.7",
++ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
++ "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag=="
++ },
++ "node_modules/axe-core": {
++ "version": "4.6.1",
++ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.1.tgz",
++ "integrity": "sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w==",
++ "engines": {
++ "node": ">=4"
++ }
++ },
++ "node_modules/axobject-query": {
++ "version": "2.2.0",
++ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
++ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA=="
++ },
++ "node_modules/balanced-match": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
++ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
++ },
++ "node_modules/brace-expansion": {
++ "version": "1.1.11",
++ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
++ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
++ "dependencies": {
++ "balanced-match": "^1.0.0",
++ "concat-map": "0.0.1"
++ }
++ },
++ "node_modules/braces": {
++ "version": "3.0.2",
++ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
++ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
++ "dependencies": {
++ "fill-range": "^7.0.1"
++ },
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/call-bind": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
++ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
++ "dependencies": {
++ "function-bind": "^1.1.1",
++ "get-intrinsic": "^1.0.2"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/callsites": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
++ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
++ "engines": {
++ "node": ">=6"
++ }
++ },
++ "node_modules/caniuse-lite": {
++ "version": "1.0.30001441",
++ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz",
++ "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==",
++ "funding": [
++ {
++ "type": "opencollective",
++ "url": "https://opencollective.com/browserslist"
++ },
++ {
++ "type": "tidelift",
++ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
++ }
++ ]
++ },
++ "node_modules/chalk": {
++ "version": "4.1.2",
++ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
++ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
++ "dependencies": {
++ "ansi-styles": "^4.1.0",
++ "supports-color": "^7.1.0"
++ },
++ "engines": {
++ "node": ">=10"
++ },
++ "funding": {
++ "url": "https://github.com/chalk/chalk?sponsor=1"
++ }
++ },
++ "node_modules/client-only": {
++ "version": "0.0.1",
++ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
++ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
++ },
++ "node_modules/color-convert": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
++ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
++ "dependencies": {
++ "color-name": "~1.1.4"
++ },
++ "engines": {
++ "node": ">=7.0.0"
++ }
++ },
++ "node_modules/color-name": {
++ "version": "1.1.4",
++ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
++ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
++ },
++ "node_modules/concat-map": {
++ "version": "0.0.1",
++ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
++ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
++ },
++ "node_modules/core-js-pure": {
++ "version": "3.27.1",
++ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.27.1.tgz",
++ "integrity": "sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw==",
++ "hasInstallScript": true,
++ "funding": {
++ "type": "opencollective",
++ "url": "https://opencollective.com/core-js"
++ }
++ },
++ "node_modules/cross-spawn": {
++ "version": "7.0.3",
++ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
++ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
++ "dependencies": {
++ "path-key": "^3.1.0",
++ "shebang-command": "^2.0.0",
++ "which": "^2.0.1"
++ },
++ "engines": {
++ "node": ">= 8"
++ }
++ },
++ "node_modules/csstype": {
++ "version": "3.1.1",
++ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
++ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
++ },
++ "node_modules/damerau-levenshtein": {
++ "version": "1.0.8",
++ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
++ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="
++ },
++ "node_modules/debug": {
++ "version": "4.3.4",
++ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
++ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
++ "dependencies": {
++ "ms": "2.1.2"
++ },
++ "engines": {
++ "node": ">=6.0"
++ },
++ "peerDependenciesMeta": {
++ "supports-color": {
++ "optional": true
++ }
++ }
++ },
++ "node_modules/deep-is": {
++ "version": "0.1.4",
++ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
++ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
++ },
++ "node_modules/define-lazy-prop": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
++ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/define-properties": {
++ "version": "1.1.4",
++ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
++ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
++ "dependencies": {
++ "has-property-descriptors": "^1.0.0",
++ "object-keys": "^1.1.1"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/dir-glob": {
++ "version": "3.0.1",
++ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
++ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
++ "dependencies": {
++ "path-type": "^4.0.0"
++ },
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/doctrine": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
++ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
++ "dependencies": {
++ "esutils": "^2.0.2"
++ },
++ "engines": {
++ "node": ">=6.0.0"
++ }
++ },
++ "node_modules/emoji-regex": {
++ "version": "9.2.2",
++ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
++ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
++ },
++ "node_modules/enhanced-resolve": {
++ "version": "5.12.0",
++ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
++ "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
++ "dependencies": {
++ "graceful-fs": "^4.2.4",
++ "tapable": "^2.2.0"
++ },
++ "engines": {
++ "node": ">=10.13.0"
++ }
++ },
++ "node_modules/es-abstract": {
++ "version": "1.20.5",
++ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz",
++ "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "es-to-primitive": "^1.2.1",
++ "function-bind": "^1.1.1",
++ "function.prototype.name": "^1.1.5",
++ "get-intrinsic": "^1.1.3",
++ "get-symbol-description": "^1.0.0",
++ "gopd": "^1.0.1",
++ "has": "^1.0.3",
++ "has-property-descriptors": "^1.0.0",
++ "has-symbols": "^1.0.3",
++ "internal-slot": "^1.0.3",
++ "is-callable": "^1.2.7",
++ "is-negative-zero": "^2.0.2",
++ "is-regex": "^1.1.4",
++ "is-shared-array-buffer": "^1.0.2",
++ "is-string": "^1.0.7",
++ "is-weakref": "^1.0.2",
++ "object-inspect": "^1.12.2",
++ "object-keys": "^1.1.1",
++ "object.assign": "^4.1.4",
++ "regexp.prototype.flags": "^1.4.3",
++ "safe-regex-test": "^1.0.0",
++ "string.prototype.trimend": "^1.0.6",
++ "string.prototype.trimstart": "^1.0.6",
++ "unbox-primitive": "^1.0.2"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/es-shim-unscopables": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
++ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
++ "dependencies": {
++ "has": "^1.0.3"
++ }
++ },
++ "node_modules/es-to-primitive": {
++ "version": "1.2.1",
++ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
++ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
++ "dependencies": {
++ "is-callable": "^1.1.4",
++ "is-date-object": "^1.0.1",
++ "is-symbol": "^1.0.2"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/escape-string-regexp": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
++ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
++ "engines": {
++ "node": ">=10"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/eslint": {
++ "version": "8.31.0",
++ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz",
++ "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==",
++ "dependencies": {
++ "@eslint/eslintrc": "^1.4.1",
++ "@humanwhocodes/config-array": "^0.11.8",
++ "@humanwhocodes/module-importer": "^1.0.1",
++ "@nodelib/fs.walk": "^1.2.8",
++ "ajv": "^6.10.0",
++ "chalk": "^4.0.0",
++ "cross-spawn": "^7.0.2",
++ "debug": "^4.3.2",
++ "doctrine": "^3.0.0",
++ "escape-string-regexp": "^4.0.0",
++ "eslint-scope": "^7.1.1",
++ "eslint-utils": "^3.0.0",
++ "eslint-visitor-keys": "^3.3.0",
++ "espree": "^9.4.0",
++ "esquery": "^1.4.0",
++ "esutils": "^2.0.2",
++ "fast-deep-equal": "^3.1.3",
++ "file-entry-cache": "^6.0.1",
++ "find-up": "^5.0.0",
++ "glob-parent": "^6.0.2",
++ "globals": "^13.19.0",
++ "grapheme-splitter": "^1.0.4",
++ "ignore": "^5.2.0",
++ "import-fresh": "^3.0.0",
++ "imurmurhash": "^0.1.4",
++ "is-glob": "^4.0.0",
++ "is-path-inside": "^3.0.3",
++ "js-sdsl": "^4.1.4",
++ "js-yaml": "^4.1.0",
++ "json-stable-stringify-without-jsonify": "^1.0.1",
++ "levn": "^0.4.1",
++ "lodash.merge": "^4.6.2",
++ "minimatch": "^3.1.2",
++ "natural-compare": "^1.4.0",
++ "optionator": "^0.9.1",
++ "regexpp": "^3.2.0",
++ "strip-ansi": "^6.0.1",
++ "strip-json-comments": "^3.1.0",
++ "text-table": "^0.2.0"
++ },
++ "bin": {
++ "eslint": "bin/eslint.js"
++ },
++ "engines": {
++ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
++ },
++ "funding": {
++ "url": "https://opencollective.com/eslint"
++ }
++ },
++ "node_modules/eslint-config-next": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.1.1.tgz",
++ "integrity": "sha512-/5S2XGWlGaiqrRhzpn51ux5JUSLwx8PVK2keLi5xk7QmhfYB8PqE6R6SlVw6hgnf/VexvUXSrlNJ/su00NhtHQ==",
++ "dependencies": {
++ "@next/eslint-plugin-next": "13.1.1",
++ "@rushstack/eslint-patch": "^1.1.3",
++ "@typescript-eslint/parser": "^5.42.0",
++ "eslint-import-resolver-node": "^0.3.6",
++ "eslint-import-resolver-typescript": "^3.5.2",
++ "eslint-plugin-import": "^2.26.0",
++ "eslint-plugin-jsx-a11y": "^6.5.1",
++ "eslint-plugin-react": "^7.31.7",
++ "eslint-plugin-react-hooks": "^4.5.0"
++ },
++ "peerDependencies": {
++ "eslint": "^7.23.0 || ^8.0.0",
++ "typescript": ">=3.3.1"
++ },
++ "peerDependenciesMeta": {
++ "typescript": {
++ "optional": true
++ }
++ }
++ },
++ "node_modules/eslint-import-resolver-node": {
++ "version": "0.3.6",
++ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
++ "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
++ "dependencies": {
++ "debug": "^3.2.7",
++ "resolve": "^1.20.0"
++ }
++ },
++ "node_modules/eslint-import-resolver-node/node_modules/debug": {
++ "version": "3.2.7",
++ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
++ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
++ "dependencies": {
++ "ms": "^2.1.1"
++ }
++ },
++ "node_modules/eslint-import-resolver-typescript": {
++ "version": "3.5.2",
++ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz",
++ "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==",
++ "dependencies": {
++ "debug": "^4.3.4",
++ "enhanced-resolve": "^5.10.0",
++ "get-tsconfig": "^4.2.0",
++ "globby": "^13.1.2",
++ "is-core-module": "^2.10.0",
++ "is-glob": "^4.0.3",
++ "synckit": "^0.8.4"
++ },
++ "engines": {
++ "node": "^14.18.0 || >=16.0.0"
++ },
++ "funding": {
++ "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
++ },
++ "peerDependencies": {
++ "eslint": "*",
++ "eslint-plugin-import": "*"
++ }
++ },
++ "node_modules/eslint-import-resolver-typescript/node_modules/globby": {
++ "version": "13.1.3",
++ "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz",
++ "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==",
++ "dependencies": {
++ "dir-glob": "^3.0.1",
++ "fast-glob": "^3.2.11",
++ "ignore": "^5.2.0",
++ "merge2": "^1.4.1",
++ "slash": "^4.0.0"
++ },
++ "engines": {
++ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/eslint-import-resolver-typescript/node_modules/slash": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
++ "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
++ "engines": {
++ "node": ">=12"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/eslint-module-utils": {
++ "version": "2.7.4",
++ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz",
++ "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==",
++ "dependencies": {
++ "debug": "^3.2.7"
++ },
++ "engines": {
++ "node": ">=4"
++ },
++ "peerDependenciesMeta": {
++ "eslint": {
++ "optional": true
++ }
++ }
++ },
++ "node_modules/eslint-module-utils/node_modules/debug": {
++ "version": "3.2.7",
++ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
++ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
++ "dependencies": {
++ "ms": "^2.1.1"
++ }
++ },
++ "node_modules/eslint-plugin-import": {
++ "version": "2.26.0",
++ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
++ "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
++ "dependencies": {
++ "array-includes": "^3.1.4",
++ "array.prototype.flat": "^1.2.5",
++ "debug": "^2.6.9",
++ "doctrine": "^2.1.0",
++ "eslint-import-resolver-node": "^0.3.6",
++ "eslint-module-utils": "^2.7.3",
++ "has": "^1.0.3",
++ "is-core-module": "^2.8.1",
++ "is-glob": "^4.0.3",
++ "minimatch": "^3.1.2",
++ "object.values": "^1.1.5",
++ "resolve": "^1.22.0",
++ "tsconfig-paths": "^3.14.1"
++ },
++ "engines": {
++ "node": ">=4"
++ },
++ "peerDependencies": {
++ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
++ }
++ },
++ "node_modules/eslint-plugin-import/node_modules/debug": {
++ "version": "2.6.9",
++ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
++ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
++ "dependencies": {
++ "ms": "2.0.0"
++ }
++ },
++ "node_modules/eslint-plugin-import/node_modules/doctrine": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
++ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
++ "dependencies": {
++ "esutils": "^2.0.2"
++ },
++ "engines": {
++ "node": ">=0.10.0"
++ }
++ },
++ "node_modules/eslint-plugin-import/node_modules/ms": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
++ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
++ },
++ "node_modules/eslint-plugin-jsx-a11y": {
++ "version": "6.6.1",
++ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz",
++ "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==",
++ "dependencies": {
++ "@babel/runtime": "^7.18.9",
++ "aria-query": "^4.2.2",
++ "array-includes": "^3.1.5",
++ "ast-types-flow": "^0.0.7",
++ "axe-core": "^4.4.3",
++ "axobject-query": "^2.2.0",
++ "damerau-levenshtein": "^1.0.8",
++ "emoji-regex": "^9.2.2",
++ "has": "^1.0.3",
++ "jsx-ast-utils": "^3.3.2",
++ "language-tags": "^1.0.5",
++ "minimatch": "^3.1.2",
++ "semver": "^6.3.0"
++ },
++ "engines": {
++ "node": ">=4.0"
++ },
++ "peerDependencies": {
++ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
++ }
++ },
++ "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": {
++ "version": "6.3.0",
++ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
++ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
++ "bin": {
++ "semver": "bin/semver.js"
++ }
++ },
++ "node_modules/eslint-plugin-react": {
++ "version": "7.31.11",
++ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz",
++ "integrity": "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==",
++ "dependencies": {
++ "array-includes": "^3.1.6",
++ "array.prototype.flatmap": "^1.3.1",
++ "array.prototype.tosorted": "^1.1.1",
++ "doctrine": "^2.1.0",
++ "estraverse": "^5.3.0",
++ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
++ "minimatch": "^3.1.2",
++ "object.entries": "^1.1.6",
++ "object.fromentries": "^2.0.6",
++ "object.hasown": "^1.1.2",
++ "object.values": "^1.1.6",
++ "prop-types": "^15.8.1",
++ "resolve": "^2.0.0-next.3",
++ "semver": "^6.3.0",
++ "string.prototype.matchall": "^4.0.8"
++ },
++ "engines": {
++ "node": ">=4"
++ },
++ "peerDependencies": {
++ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
++ }
++ },
++ "node_modules/eslint-plugin-react-hooks": {
++ "version": "4.6.0",
++ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
++ "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
++ "engines": {
++ "node": ">=10"
++ },
++ "peerDependencies": {
++ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
++ }
++ },
++ "node_modules/eslint-plugin-react/node_modules/doctrine": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
++ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
++ "dependencies": {
++ "esutils": "^2.0.2"
++ },
++ "engines": {
++ "node": ">=0.10.0"
++ }
++ },
++ "node_modules/eslint-plugin-react/node_modules/resolve": {
++ "version": "2.0.0-next.4",
++ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
++ "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
++ "dependencies": {
++ "is-core-module": "^2.9.0",
++ "path-parse": "^1.0.7",
++ "supports-preserve-symlinks-flag": "^1.0.0"
++ },
++ "bin": {
++ "resolve": "bin/resolve"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/eslint-plugin-react/node_modules/semver": {
++ "version": "6.3.0",
++ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
++ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
++ "bin": {
++ "semver": "bin/semver.js"
++ }
++ },
++ "node_modules/eslint-scope": {
++ "version": "7.1.1",
++ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
++ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
++ "dependencies": {
++ "esrecurse": "^4.3.0",
++ "estraverse": "^5.2.0"
++ },
++ "engines": {
++ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
++ }
++ },
++ "node_modules/eslint-utils": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
++ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
++ "dependencies": {
++ "eslint-visitor-keys": "^2.0.0"
++ },
++ "engines": {
++ "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/mysticatea"
++ },
++ "peerDependencies": {
++ "eslint": ">=5"
++ }
++ },
++ "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
++ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
++ "engines": {
++ "node": ">=10"
++ }
++ },
++ "node_modules/eslint-visitor-keys": {
++ "version": "3.3.0",
++ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
++ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
++ "engines": {
++ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
++ }
++ },
++ "node_modules/espree": {
++ "version": "9.4.1",
++ "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
++ "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
++ "dependencies": {
++ "acorn": "^8.8.0",
++ "acorn-jsx": "^5.3.2",
++ "eslint-visitor-keys": "^3.3.0"
++ },
++ "engines": {
++ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
++ },
++ "funding": {
++ "url": "https://opencollective.com/eslint"
++ }
++ },
++ "node_modules/esquery": {
++ "version": "1.4.0",
++ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
++ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
++ "dependencies": {
++ "estraverse": "^5.1.0"
++ },
++ "engines": {
++ "node": ">=0.10"
++ }
++ },
++ "node_modules/esrecurse": {
++ "version": "4.3.0",
++ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
++ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
++ "dependencies": {
++ "estraverse": "^5.2.0"
++ },
++ "engines": {
++ "node": ">=4.0"
++ }
++ },
++ "node_modules/estraverse": {
++ "version": "5.3.0",
++ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
++ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
++ "engines": {
++ "node": ">=4.0"
++ }
++ },
++ "node_modules/esutils": {
++ "version": "2.0.3",
++ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
++ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
++ "engines": {
++ "node": ">=0.10.0"
++ }
++ },
++ "node_modules/fast-deep-equal": {
++ "version": "3.1.3",
++ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
++ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
++ },
++ "node_modules/fast-glob": {
++ "version": "3.2.12",
++ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
++ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
++ "dependencies": {
++ "@nodelib/fs.stat": "^2.0.2",
++ "@nodelib/fs.walk": "^1.2.3",
++ "glob-parent": "^5.1.2",
++ "merge2": "^1.3.0",
++ "micromatch": "^4.0.4"
++ },
++ "engines": {
++ "node": ">=8.6.0"
++ }
++ },
++ "node_modules/fast-glob/node_modules/glob-parent": {
++ "version": "5.1.2",
++ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
++ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
++ "dependencies": {
++ "is-glob": "^4.0.1"
++ },
++ "engines": {
++ "node": ">= 6"
++ }
++ },
++ "node_modules/fast-json-stable-stringify": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
++ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
++ },
++ "node_modules/fast-levenshtein": {
++ "version": "2.0.6",
++ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
++ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
++ },
++ "node_modules/fastq": {
++ "version": "1.14.0",
++ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz",
++ "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==",
++ "dependencies": {
++ "reusify": "^1.0.4"
++ }
++ },
++ "node_modules/file-entry-cache": {
++ "version": "6.0.1",
++ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
++ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
++ "dependencies": {
++ "flat-cache": "^3.0.4"
++ },
++ "engines": {
++ "node": "^10.12.0 || >=12.0.0"
++ }
++ },
++ "node_modules/fill-range": {
++ "version": "7.0.1",
++ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
++ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
++ "dependencies": {
++ "to-regex-range": "^5.0.1"
++ },
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/find-up": {
++ "version": "5.0.0",
++ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
++ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
++ "dependencies": {
++ "locate-path": "^6.0.0",
++ "path-exists": "^4.0.0"
++ },
++ "engines": {
++ "node": ">=10"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/flat-cache": {
++ "version": "3.0.4",
++ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
++ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
++ "dependencies": {
++ "flatted": "^3.1.0",
++ "rimraf": "^3.0.2"
++ },
++ "engines": {
++ "node": "^10.12.0 || >=12.0.0"
++ }
++ },
++ "node_modules/flatted": {
++ "version": "3.2.7",
++ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
++ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
++ },
++ "node_modules/fs.realpath": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
++ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
++ },
++ "node_modules/function-bind": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
++ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
++ },
++ "node_modules/function.prototype.name": {
++ "version": "1.1.5",
++ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
++ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.3",
++ "es-abstract": "^1.19.0",
++ "functions-have-names": "^1.2.2"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/functions-have-names": {
++ "version": "1.2.3",
++ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
++ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/get-intrinsic": {
++ "version": "1.1.3",
++ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
++ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
++ "dependencies": {
++ "function-bind": "^1.1.1",
++ "has": "^1.0.3",
++ "has-symbols": "^1.0.3"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/get-symbol-description": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
++ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "get-intrinsic": "^1.1.1"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/get-tsconfig": {
++ "version": "4.2.0",
++ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz",
++ "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==",
++ "funding": {
++ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
++ }
++ },
++ "node_modules/glob": {
++ "version": "7.1.7",
++ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
++ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
++ "dependencies": {
++ "fs.realpath": "^1.0.0",
++ "inflight": "^1.0.4",
++ "inherits": "2",
++ "minimatch": "^3.0.4",
++ "once": "^1.3.0",
++ "path-is-absolute": "^1.0.0"
++ },
++ "engines": {
++ "node": "*"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/isaacs"
++ }
++ },
++ "node_modules/glob-parent": {
++ "version": "6.0.2",
++ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
++ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
++ "dependencies": {
++ "is-glob": "^4.0.3"
++ },
++ "engines": {
++ "node": ">=10.13.0"
++ }
++ },
++ "node_modules/globals": {
++ "version": "13.19.0",
++ "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
++ "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
++ "dependencies": {
++ "type-fest": "^0.20.2"
++ },
++ "engines": {
++ "node": ">=8"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/globalyzer": {
++ "version": "0.1.0",
++ "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
++ "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q=="
++ },
++ "node_modules/globby": {
++ "version": "11.1.0",
++ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
++ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
++ "dependencies": {
++ "array-union": "^2.1.0",
++ "dir-glob": "^3.0.1",
++ "fast-glob": "^3.2.9",
++ "ignore": "^5.2.0",
++ "merge2": "^1.4.1",
++ "slash": "^3.0.0"
++ },
++ "engines": {
++ "node": ">=10"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/globrex": {
++ "version": "0.1.2",
++ "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
++ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="
++ },
++ "node_modules/gopd": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
++ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
++ "dependencies": {
++ "get-intrinsic": "^1.1.3"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/graceful-fs": {
++ "version": "4.2.10",
++ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
++ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
++ },
++ "node_modules/grapheme-splitter": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
++ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="
++ },
++ "node_modules/has": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
++ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
++ "dependencies": {
++ "function-bind": "^1.1.1"
++ },
++ "engines": {
++ "node": ">= 0.4.0"
++ }
++ },
++ "node_modules/has-bigints": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
++ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/has-flag": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
++ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/has-property-descriptors": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
++ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
++ "dependencies": {
++ "get-intrinsic": "^1.1.1"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/has-symbols": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
++ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/has-tostringtag": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
++ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
++ "dependencies": {
++ "has-symbols": "^1.0.2"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/ignore": {
++ "version": "5.2.4",
++ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
++ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
++ "engines": {
++ "node": ">= 4"
++ }
++ },
++ "node_modules/import-fresh": {
++ "version": "3.3.0",
++ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
++ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
++ "dependencies": {
++ "parent-module": "^1.0.0",
++ "resolve-from": "^4.0.0"
++ },
++ "engines": {
++ "node": ">=6"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/imurmurhash": {
++ "version": "0.1.4",
++ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
++ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
++ "engines": {
++ "node": ">=0.8.19"
++ }
++ },
++ "node_modules/inflight": {
++ "version": "1.0.6",
++ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
++ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
++ "dependencies": {
++ "once": "^1.3.0",
++ "wrappy": "1"
++ }
++ },
++ "node_modules/inherits": {
++ "version": "2.0.4",
++ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
++ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
++ },
++ "node_modules/internal-slot": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz",
++ "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==",
++ "dependencies": {
++ "get-intrinsic": "^1.1.3",
++ "has": "^1.0.3",
++ "side-channel": "^1.0.4"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ }
++ },
++ "node_modules/is-bigint": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
++ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
++ "dependencies": {
++ "has-bigints": "^1.0.1"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-boolean-object": {
++ "version": "1.1.2",
++ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
++ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "has-tostringtag": "^1.0.0"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-callable": {
++ "version": "1.2.7",
++ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
++ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-core-module": {
++ "version": "2.11.0",
++ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
++ "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
++ "dependencies": {
++ "has": "^1.0.3"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-date-object": {
++ "version": "1.0.5",
++ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
++ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
++ "dependencies": {
++ "has-tostringtag": "^1.0.0"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-docker": {
++ "version": "2.2.1",
++ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
++ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
++ "bin": {
++ "is-docker": "cli.js"
++ },
++ "engines": {
++ "node": ">=8"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/is-extglob": {
++ "version": "2.1.1",
++ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
++ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
++ "engines": {
++ "node": ">=0.10.0"
++ }
++ },
++ "node_modules/is-glob": {
++ "version": "4.0.3",
++ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
++ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
++ "dependencies": {
++ "is-extglob": "^2.1.1"
++ },
++ "engines": {
++ "node": ">=0.10.0"
++ }
++ },
++ "node_modules/is-negative-zero": {
++ "version": "2.0.2",
++ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
++ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-number": {
++ "version": "7.0.0",
++ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
++ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
++ "engines": {
++ "node": ">=0.12.0"
++ }
++ },
++ "node_modules/is-number-object": {
++ "version": "1.0.7",
++ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
++ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
++ "dependencies": {
++ "has-tostringtag": "^1.0.0"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-path-inside": {
++ "version": "3.0.3",
++ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
++ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/is-regex": {
++ "version": "1.1.4",
++ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
++ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "has-tostringtag": "^1.0.0"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-shared-array-buffer": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
++ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
++ "dependencies": {
++ "call-bind": "^1.0.2"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-string": {
++ "version": "1.0.7",
++ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
++ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
++ "dependencies": {
++ "has-tostringtag": "^1.0.0"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-symbol": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
++ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
++ "dependencies": {
++ "has-symbols": "^1.0.2"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-weakref": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
++ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
++ "dependencies": {
++ "call-bind": "^1.0.2"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/is-wsl": {
++ "version": "2.2.0",
++ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
++ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
++ "dependencies": {
++ "is-docker": "^2.0.0"
++ },
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/isexe": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
++ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
++ },
++ "node_modules/js-sdsl": {
++ "version": "4.2.0",
++ "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz",
++ "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==",
++ "funding": {
++ "type": "opencollective",
++ "url": "https://opencollective.com/js-sdsl"
++ }
++ },
++ "node_modules/js-tokens": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
++ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
++ },
++ "node_modules/js-yaml": {
++ "version": "4.1.0",
++ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
++ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
++ "dependencies": {
++ "argparse": "^2.0.1"
++ },
++ "bin": {
++ "js-yaml": "bin/js-yaml.js"
++ }
++ },
++ "node_modules/json-schema-traverse": {
++ "version": "0.4.1",
++ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
++ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
++ },
++ "node_modules/json-stable-stringify-without-jsonify": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
++ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
++ },
++ "node_modules/json5": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
++ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
++ "dependencies": {
++ "minimist": "^1.2.0"
++ },
++ "bin": {
++ "json5": "lib/cli.js"
++ }
++ },
++ "node_modules/jsx-ast-utils": {
++ "version": "3.3.3",
++ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz",
++ "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
++ "dependencies": {
++ "array-includes": "^3.1.5",
++ "object.assign": "^4.1.3"
++ },
++ "engines": {
++ "node": ">=4.0"
++ }
++ },
++ "node_modules/language-subtag-registry": {
++ "version": "0.3.22",
++ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz",
++ "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w=="
++ },
++ "node_modules/language-tags": {
++ "version": "1.0.7",
++ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.7.tgz",
++ "integrity": "sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw==",
++ "dependencies": {
++ "language-subtag-registry": "^0.3.20"
++ }
++ },
++ "node_modules/levn": {
++ "version": "0.4.1",
++ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
++ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
++ "dependencies": {
++ "prelude-ls": "^1.2.1",
++ "type-check": "~0.4.0"
++ },
++ "engines": {
++ "node": ">= 0.8.0"
++ }
++ },
++ "node_modules/locate-path": {
++ "version": "6.0.0",
++ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
++ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
++ "dependencies": {
++ "p-locate": "^5.0.0"
++ },
++ "engines": {
++ "node": ">=10"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/lodash.merge": {
++ "version": "4.6.2",
++ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
++ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
++ },
++ "node_modules/loose-envify": {
++ "version": "1.4.0",
++ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
++ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
++ "dependencies": {
++ "js-tokens": "^3.0.0 || ^4.0.0"
++ },
++ "bin": {
++ "loose-envify": "cli.js"
++ }
++ },
++ "node_modules/lru-cache": {
++ "version": "6.0.0",
++ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
++ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
++ "dependencies": {
++ "yallist": "^4.0.0"
++ },
++ "engines": {
++ "node": ">=10"
++ }
++ },
++ "node_modules/merge2": {
++ "version": "1.4.1",
++ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
++ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
++ "engines": {
++ "node": ">= 8"
++ }
++ },
++ "node_modules/micromatch": {
++ "version": "4.0.5",
++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
++ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
++ "dependencies": {
++ "braces": "^3.0.2",
++ "picomatch": "^2.3.1"
++ },
++ "engines": {
++ "node": ">=8.6"
++ }
++ },
++ "node_modules/minimatch": {
++ "version": "3.1.2",
++ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
++ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
++ "dependencies": {
++ "brace-expansion": "^1.1.7"
++ },
++ "engines": {
++ "node": "*"
++ }
++ },
++ "node_modules/minimist": {
++ "version": "1.2.7",
++ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
++ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/ms": {
++ "version": "2.1.2",
++ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
++ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
++ },
++ "node_modules/nanoid": {
++ "version": "3.3.4",
++ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
++ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
++ "bin": {
++ "nanoid": "bin/nanoid.cjs"
++ },
++ "engines": {
++ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
++ }
++ },
++ "node_modules/natural-compare": {
++ "version": "1.4.0",
++ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
++ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
++ },
++ "node_modules/next": {
++ "version": "13.1.1",
++ "resolved": "https://registry.npmjs.org/next/-/next-13.1.1.tgz",
++ "integrity": "sha512-R5eBAaIa3X7LJeYvv1bMdGnAVF4fVToEjim7MkflceFPuANY3YyvFxXee/A+acrSYwYPvOvf7f6v/BM/48ea5w==",
++ "dependencies": {
++ "@next/env": "13.1.1",
++ "@swc/helpers": "0.4.14",
++ "caniuse-lite": "^1.0.30001406",
++ "postcss": "8.4.14",
++ "styled-jsx": "5.1.1"
++ },
++ "bin": {
++ "next": "dist/bin/next"
++ },
++ "engines": {
++ "node": ">=14.6.0"
++ },
++ "optionalDependencies": {
++ "@next/swc-android-arm-eabi": "13.1.1",
++ "@next/swc-android-arm64": "13.1.1",
++ "@next/swc-darwin-arm64": "13.1.1",
++ "@next/swc-darwin-x64": "13.1.1",
++ "@next/swc-freebsd-x64": "13.1.1",
++ "@next/swc-linux-arm-gnueabihf": "13.1.1",
++ "@next/swc-linux-arm64-gnu": "13.1.1",
++ "@next/swc-linux-arm64-musl": "13.1.1",
++ "@next/swc-linux-x64-gnu": "13.1.1",
++ "@next/swc-linux-x64-musl": "13.1.1",
++ "@next/swc-win32-arm64-msvc": "13.1.1",
++ "@next/swc-win32-ia32-msvc": "13.1.1",
++ "@next/swc-win32-x64-msvc": "13.1.1"
++ },
++ "peerDependencies": {
++ "fibers": ">= 3.1.0",
++ "node-sass": "^6.0.0 || ^7.0.0",
++ "react": "^18.2.0",
++ "react-dom": "^18.2.0",
++ "sass": "^1.3.0"
++ },
++ "peerDependenciesMeta": {
++ "fibers": {
++ "optional": true
++ },
++ "node-sass": {
++ "optional": true
++ },
++ "sass": {
++ "optional": true
++ }
++ }
++ },
++ "node_modules/object-assign": {
++ "version": "4.1.1",
++ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
++ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
++ "engines": {
++ "node": ">=0.10.0"
++ }
++ },
++ "node_modules/object-inspect": {
++ "version": "1.12.2",
++ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
++ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/object-keys": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
++ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
++ "engines": {
++ "node": ">= 0.4"
++ }
++ },
++ "node_modules/object.assign": {
++ "version": "4.1.4",
++ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
++ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.4",
++ "has-symbols": "^1.0.3",
++ "object-keys": "^1.1.1"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/object.entries": {
++ "version": "1.1.6",
++ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
++ "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.4",
++ "es-abstract": "^1.20.4"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ }
++ },
++ "node_modules/object.fromentries": {
++ "version": "2.0.6",
++ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz",
++ "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.4",
++ "es-abstract": "^1.20.4"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/object.hasown": {
++ "version": "1.1.2",
++ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz",
++ "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==",
++ "dependencies": {
++ "define-properties": "^1.1.4",
++ "es-abstract": "^1.20.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/object.values": {
++ "version": "1.1.6",
++ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
++ "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.4",
++ "es-abstract": "^1.20.4"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/once": {
++ "version": "1.4.0",
++ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
++ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
++ "dependencies": {
++ "wrappy": "1"
++ }
++ },
++ "node_modules/open": {
++ "version": "8.4.0",
++ "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
++ "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
++ "dependencies": {
++ "define-lazy-prop": "^2.0.0",
++ "is-docker": "^2.1.1",
++ "is-wsl": "^2.2.0"
++ },
++ "engines": {
++ "node": ">=12"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/optionator": {
++ "version": "0.9.1",
++ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
++ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
++ "dependencies": {
++ "deep-is": "^0.1.3",
++ "fast-levenshtein": "^2.0.6",
++ "levn": "^0.4.1",
++ "prelude-ls": "^1.2.1",
++ "type-check": "^0.4.0",
++ "word-wrap": "^1.2.3"
++ },
++ "engines": {
++ "node": ">= 0.8.0"
++ }
++ },
++ "node_modules/p-limit": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
++ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
++ "dependencies": {
++ "yocto-queue": "^0.1.0"
++ },
++ "engines": {
++ "node": ">=10"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/p-locate": {
++ "version": "5.0.0",
++ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
++ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
++ "dependencies": {
++ "p-limit": "^3.0.2"
++ },
++ "engines": {
++ "node": ">=10"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/parent-module": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
++ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
++ "dependencies": {
++ "callsites": "^3.0.0"
++ },
++ "engines": {
++ "node": ">=6"
++ }
++ },
++ "node_modules/path-exists": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
++ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/path-is-absolute": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
++ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
++ "engines": {
++ "node": ">=0.10.0"
++ }
++ },
++ "node_modules/path-key": {
++ "version": "3.1.1",
++ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
++ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/path-parse": {
++ "version": "1.0.7",
++ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
++ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
++ },
++ "node_modules/path-type": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
++ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/picocolors": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
++ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
++ },
++ "node_modules/picomatch": {
++ "version": "2.3.1",
++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
++ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
++ "engines": {
++ "node": ">=8.6"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/jonschlinkert"
++ }
++ },
++ "node_modules/postcss": {
++ "version": "8.4.14",
++ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
++ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
++ "funding": [
++ {
++ "type": "opencollective",
++ "url": "https://opencollective.com/postcss/"
++ },
++ {
++ "type": "tidelift",
++ "url": "https://tidelift.com/funding/github/npm/postcss"
++ }
++ ],
++ "dependencies": {
++ "nanoid": "^3.3.4",
++ "picocolors": "^1.0.0",
++ "source-map-js": "^1.0.2"
++ },
++ "engines": {
++ "node": "^10 || ^12 || >=14"
++ }
++ },
++ "node_modules/prelude-ls": {
++ "version": "1.2.1",
++ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
++ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
++ "engines": {
++ "node": ">= 0.8.0"
++ }
++ },
++ "node_modules/prettier": {
++ "version": "2.8.1",
++ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz",
++ "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==",
++ "dev": true,
++ "bin": {
++ "prettier": "bin-prettier.js"
++ },
++ "engines": {
++ "node": ">=10.13.0"
++ },
++ "funding": {
++ "url": "https://github.com/prettier/prettier?sponsor=1"
++ }
++ },
++ "node_modules/prop-types": {
++ "version": "15.8.1",
++ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
++ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
++ "dependencies": {
++ "loose-envify": "^1.4.0",
++ "object-assign": "^4.1.1",
++ "react-is": "^16.13.1"
++ }
++ },
++ "node_modules/punycode": {
++ "version": "2.1.1",
++ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
++ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
++ "engines": {
++ "node": ">=6"
++ }
++ },
++ "node_modules/queue-microtask": {
++ "version": "1.2.3",
++ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
++ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
++ "funding": [
++ {
++ "type": "github",
++ "url": "https://github.com/sponsors/feross"
++ },
++ {
++ "type": "patreon",
++ "url": "https://www.patreon.com/feross"
++ },
++ {
++ "type": "consulting",
++ "url": "https://feross.org/support"
++ }
++ ]
++ },
++ "node_modules/react": {
++ "version": "18.2.0",
++ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
++ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
++ "dependencies": {
++ "loose-envify": "^1.1.0"
++ },
++ "engines": {
++ "node": ">=0.10.0"
++ }
++ },
++ "node_modules/react-dom": {
++ "version": "18.2.0",
++ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
++ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
++ "dependencies": {
++ "loose-envify": "^1.1.0",
++ "scheduler": "^0.23.0"
++ },
++ "peerDependencies": {
++ "react": "^18.2.0"
++ }
++ },
++ "node_modules/react-is": {
++ "version": "16.13.1",
++ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
++ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
++ },
++ "node_modules/regenerator-runtime": {
++ "version": "0.13.11",
++ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
++ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
++ },
++ "node_modules/regexp.prototype.flags": {
++ "version": "1.4.3",
++ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
++ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.3",
++ "functions-have-names": "^1.2.2"
++ },
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/regexpp": {
++ "version": "3.2.0",
++ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
++ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
++ "engines": {
++ "node": ">=8"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/mysticatea"
++ }
++ },
++ "node_modules/resolve": {
++ "version": "1.22.1",
++ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
++ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
++ "dependencies": {
++ "is-core-module": "^2.9.0",
++ "path-parse": "^1.0.7",
++ "supports-preserve-symlinks-flag": "^1.0.0"
++ },
++ "bin": {
++ "resolve": "bin/resolve"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/resolve-from": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
++ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
++ "engines": {
++ "node": ">=4"
++ }
++ },
++ "node_modules/reusify": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
++ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
++ "engines": {
++ "iojs": ">=1.0.0",
++ "node": ">=0.10.0"
++ }
++ },
++ "node_modules/rimraf": {
++ "version": "3.0.2",
++ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
++ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
++ "dependencies": {
++ "glob": "^7.1.3"
++ },
++ "bin": {
++ "rimraf": "bin.js"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/isaacs"
++ }
++ },
++ "node_modules/run-parallel": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
++ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
++ "funding": [
++ {
++ "type": "github",
++ "url": "https://github.com/sponsors/feross"
++ },
++ {
++ "type": "patreon",
++ "url": "https://www.patreon.com/feross"
++ },
++ {
++ "type": "consulting",
++ "url": "https://feross.org/support"
++ }
++ ],
++ "dependencies": {
++ "queue-microtask": "^1.2.2"
++ }
++ },
++ "node_modules/safe-regex-test": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
++ "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "get-intrinsic": "^1.1.3",
++ "is-regex": "^1.1.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/scheduler": {
++ "version": "0.23.0",
++ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
++ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
++ "dependencies": {
++ "loose-envify": "^1.1.0"
++ }
++ },
++ "node_modules/semver": {
++ "version": "7.3.8",
++ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
++ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
++ "dependencies": {
++ "lru-cache": "^6.0.0"
++ },
++ "bin": {
++ "semver": "bin/semver.js"
++ },
++ "engines": {
++ "node": ">=10"
++ }
++ },
++ "node_modules/shebang-command": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
++ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
++ "dependencies": {
++ "shebang-regex": "^3.0.0"
++ },
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/shebang-regex": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
++ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/side-channel": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
++ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
++ "dependencies": {
++ "call-bind": "^1.0.0",
++ "get-intrinsic": "^1.0.2",
++ "object-inspect": "^1.9.0"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/slash": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
++ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/source-map-js": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
++ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
++ "engines": {
++ "node": ">=0.10.0"
++ }
++ },
++ "node_modules/string.prototype.matchall": {
++ "version": "4.0.8",
++ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
++ "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.4",
++ "es-abstract": "^1.20.4",
++ "get-intrinsic": "^1.1.3",
++ "has-symbols": "^1.0.3",
++ "internal-slot": "^1.0.3",
++ "regexp.prototype.flags": "^1.4.3",
++ "side-channel": "^1.0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/string.prototype.trimend": {
++ "version": "1.0.6",
++ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
++ "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.4",
++ "es-abstract": "^1.20.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/string.prototype.trimstart": {
++ "version": "1.0.6",
++ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
++ "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "define-properties": "^1.1.4",
++ "es-abstract": "^1.20.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/strip-ansi": {
++ "version": "6.0.1",
++ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
++ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
++ "dependencies": {
++ "ansi-regex": "^5.0.1"
++ },
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/strip-bom": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
++ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
++ "engines": {
++ "node": ">=4"
++ }
++ },
++ "node_modules/strip-json-comments": {
++ "version": "3.1.1",
++ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
++ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
++ "engines": {
++ "node": ">=8"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/styled-jsx": {
++ "version": "5.1.1",
++ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
++ "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
++ "dependencies": {
++ "client-only": "0.0.1"
++ },
++ "engines": {
++ "node": ">= 12.0.0"
++ },
++ "peerDependencies": {
++ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
++ },
++ "peerDependenciesMeta": {
++ "@babel/core": {
++ "optional": true
++ },
++ "babel-plugin-macros": {
++ "optional": true
++ }
++ }
++ },
++ "node_modules/supports-color": {
++ "version": "7.2.0",
++ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
++ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
++ "dependencies": {
++ "has-flag": "^4.0.0"
++ },
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/supports-preserve-symlinks-flag": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
++ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
++ "engines": {
++ "node": ">= 0.4"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/synckit": {
++ "version": "0.8.4",
++ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz",
++ "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==",
++ "dependencies": {
++ "@pkgr/utils": "^2.3.1",
++ "tslib": "^2.4.0"
++ },
++ "engines": {
++ "node": "^14.18.0 || >=16.0.0"
++ },
++ "funding": {
++ "url": "https://opencollective.com/unts"
++ }
++ },
++ "node_modules/tapable": {
++ "version": "2.2.1",
++ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
++ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
++ "engines": {
++ "node": ">=6"
++ }
++ },
++ "node_modules/text-table": {
++ "version": "0.2.0",
++ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
++ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
++ },
++ "node_modules/tiny-glob": {
++ "version": "0.2.9",
++ "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
++ "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
++ "dependencies": {
++ "globalyzer": "0.1.0",
++ "globrex": "^0.1.2"
++ }
++ },
++ "node_modules/to-regex-range": {
++ "version": "5.0.1",
++ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
++ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
++ "dependencies": {
++ "is-number": "^7.0.0"
++ },
++ "engines": {
++ "node": ">=8.0"
++ }
++ },
++ "node_modules/tsconfig-paths": {
++ "version": "3.14.1",
++ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
++ "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
++ "dependencies": {
++ "@types/json5": "^0.0.29",
++ "json5": "^1.0.1",
++ "minimist": "^1.2.6",
++ "strip-bom": "^3.0.0"
++ }
++ },
++ "node_modules/tslib": {
++ "version": "2.4.1",
++ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
++ "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
++ },
++ "node_modules/tsutils": {
++ "version": "3.21.0",
++ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
++ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
++ "dependencies": {
++ "tslib": "^1.8.1"
++ },
++ "engines": {
++ "node": ">= 6"
++ },
++ "peerDependencies": {
++ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
++ }
++ },
++ "node_modules/tsutils/node_modules/tslib": {
++ "version": "1.14.1",
++ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
++ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
++ },
++ "node_modules/type-check": {
++ "version": "0.4.0",
++ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
++ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
++ "dependencies": {
++ "prelude-ls": "^1.2.1"
++ },
++ "engines": {
++ "node": ">= 0.8.0"
++ }
++ },
++ "node_modules/type-fest": {
++ "version": "0.20.2",
++ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
++ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
++ "engines": {
++ "node": ">=10"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ },
++ "node_modules/typescript": {
++ "version": "4.9.4",
++ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
++ "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
++ "bin": {
++ "tsc": "bin/tsc",
++ "tsserver": "bin/tsserver"
++ },
++ "engines": {
++ "node": ">=4.2.0"
++ }
++ },
++ "node_modules/unbox-primitive": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
++ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
++ "dependencies": {
++ "call-bind": "^1.0.2",
++ "has-bigints": "^1.0.2",
++ "has-symbols": "^1.0.3",
++ "which-boxed-primitive": "^1.0.2"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/uri-js": {
++ "version": "4.4.1",
++ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
++ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
++ "dependencies": {
++ "punycode": "^2.1.0"
++ }
++ },
++ "node_modules/which": {
++ "version": "2.0.2",
++ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
++ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
++ "dependencies": {
++ "isexe": "^2.0.0"
++ },
++ "bin": {
++ "node-which": "bin/node-which"
++ },
++ "engines": {
++ "node": ">= 8"
++ }
++ },
++ "node_modules/which-boxed-primitive": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
++ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
++ "dependencies": {
++ "is-bigint": "^1.0.1",
++ "is-boolean-object": "^1.1.0",
++ "is-number-object": "^1.0.4",
++ "is-string": "^1.0.5",
++ "is-symbol": "^1.0.3"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/ljharb"
++ }
++ },
++ "node_modules/word-wrap": {
++ "version": "1.2.3",
++ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
++ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
++ "engines": {
++ "node": ">=0.10.0"
++ }
++ },
++ "node_modules/wrappy": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
++ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
++ },
++ "node_modules/yallist": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
++ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
++ },
++ "node_modules/yocto-queue": {
++ "version": "0.1.0",
++ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
++ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
++ "engines": {
++ "node": ">=10"
++ },
++ "funding": {
++ "url": "https://github.com/sponsors/sindresorhus"
++ }
++ }
++ }
++}
+diff --git a/js/test/nextjs/package.json b/js/test/nextjs/package.json
+new file mode 100644
+index 0000000..f57e111
+--- /dev/null
++++ b/js/test/nextjs/package.json
+@@ -0,0 +1,28 @@
++{
++ "name": "shine-nextjs-test-app",
++ "version": "0.1.0",
++ "private": true,
++ "scripts": {
++ "dev": "next dev",
++ "lint": "next lint --fix",
++ "build": "next build && next export && touch out/.nojekyll",
++ "format": "prettier '**/*.{ts,tsx,js,jsx}' --write",
++ "typecheck": "tsc --noEmit"
++ },
++ "dependencies": {
++ "@next/font": "13.1.1",
++ "@toots/shine.js": "file:../..",
++ "@types/node": "18.11.18",
++ "@types/react": "18.0.26",
++ "@types/react-dom": "18.0.10",
++ "eslint": "8.31.0",
++ "eslint-config-next": "13.1.1",
++ "next": "13.1.1",
++ "react": "18.2.0",
++ "react-dom": "18.2.0",
++ "typescript": "4.9.4"
++ },
++ "devDependencies": {
++ "prettier": "^2.8.1"
++ }
++}
+diff --git a/js/test/nextjs/pages/index.tsx b/js/test/nextjs/pages/index.tsx
+new file mode 100644
+index 0000000..4bf771a
+--- /dev/null
++++ b/js/test/nextjs/pages/index.tsx
+@@ -0,0 +1,50 @@
++import { Fragment, useEffect, useState, useCallback } from "react"
++import { runEncodeTest } from "@shine/lib/encode"
++import { runRoundsTest } from "@shine/lib/rounds"
++
++const logEntries: string[] = []
++let encoderStarted = false
++
++export default function Home() {
++ const [logs, setLogs] = useState(logEntries)
++ const [encodedBlobUrl, setEncodedBlobUrl] = useState<string | undefined>()
++
++ const log = useCallback(
++ (entry: string) => {
++ logEntries.push(entry)
++ setLogs(logEntries)
++ },
++ [setLogs]
++ )
++
++ useEffect(() => {
++ if (encoderStarted) return
++
++ runEncodeTest(log, blob => {
++ if (!encodedBlobUrl) setEncodedBlobUrl(URL.createObjectURL(blob))
++
++ log("")
++ runRoundsTest(log)
++ })
++
++ encoderStarted = true
++ }, [log, encodedBlobUrl, setEncodedBlobUrl])
++
++ return (
++ <>
++ {encodedBlobUrl && (
++ <a href={encodedBlobUrl} download='encoded.mp3'>
++ Download encoded file
++ </a>
++ )}
++ <div>
++ {logs.map(entry => (
++ <Fragment key={entry}>
++ {entry}
++ <br />
++ </Fragment>
++ ))}
++ </div>
++ </>
++ )
++}
+diff --git a/js/test/nextjs/pnpm-lock.yaml b/js/test/nextjs/pnpm-lock.yaml
+new file mode 100644
+index 0000000..562cc68
+--- /dev/null
++++ b/js/test/nextjs/pnpm-lock.yaml
+@@ -0,0 +1,2032 @@
++lockfileVersion: 5.4
++
++specifiers:
++ '@next/font': 13.1.1
++ '@toots/shine.js': file:../..
++ '@types/node': 18.11.18
++ '@types/react': 18.0.26
++ '@types/react-dom': 18.0.10
++ eslint: 8.31.0
++ eslint-config-next: 13.1.1
++ next: 13.1.1
++ prettier: ^2.8.1
++ react: 18.2.0
++ react-dom: 18.2.0
++ typescript: 4.9.4
++
++dependencies:
++ '@next/font': 13.1.1
++ '@toots/shine.js': file:../..
++ '@types/node': 18.11.18
++ '@types/react': 18.0.26
++ '@types/react-dom': 18.0.10
++ eslint: 8.31.0
++ eslint-config-next: 13.1.1_iukboom6ndih5an6iafl45j2fe
++ next: 13.1.1_biqbaboplfbrettd7655fr4n2y
++ react: 18.2.0
++ react-dom: 18.2.0_react@18.2.0
++ typescript: 4.9.4
++
++devDependencies:
++ prettier: 2.8.1
++
++packages:
++
++ /@babel/runtime-corejs3/7.20.7:
++ resolution: {integrity: sha512-jr9lCZ4RbRQmCR28Q8U8Fu49zvFqLxTY9AMOUz+iyMohMoAgpEcVxY+wJNay99oXOpOcCTODkk70NDN2aaJEeg==}
++ engines: {node: '>=6.9.0'}
++ dependencies:
++ core-js-pure: 3.27.1
++ regenerator-runtime: 0.13.11
++ dev: false
++
++ /@babel/runtime/7.20.7:
++ resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==}
++ engines: {node: '>=6.9.0'}
++ dependencies:
++ regenerator-runtime: 0.13.11
++ dev: false
++
++ /@eslint/eslintrc/1.4.1:
++ resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==}
++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
++ dependencies:
++ ajv: 6.12.6
++ debug: 4.3.4
++ espree: 9.4.1
++ globals: 13.19.0
++ ignore: 5.2.4
++ import-fresh: 3.3.0
++ js-yaml: 4.1.0
++ minimatch: 3.1.2
++ strip-json-comments: 3.1.1
++ transitivePeerDependencies:
++ - supports-color
++ dev: false
++
++ /@humanwhocodes/config-array/0.11.8:
++ resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
++ engines: {node: '>=10.10.0'}
++ dependencies:
++ '@humanwhocodes/object-schema': 1.2.1
++ debug: 4.3.4
++ minimatch: 3.1.2
++ transitivePeerDependencies:
++ - supports-color
++ dev: false
++
++ /@humanwhocodes/module-importer/1.0.1:
++ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
++ engines: {node: '>=12.22'}
++ dev: false
++
++ /@humanwhocodes/object-schema/1.2.1:
++ resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
++ dev: false
++
++ /@next/env/13.1.1:
++ resolution: {integrity: sha512-vFMyXtPjSAiOXOywMojxfKIqE3VWN5RCAx+tT3AS3pcKjMLFTCJFUWsKv8hC+87Z1F4W3r68qTwDFZIFmd5Xkw==}
++ dev: false
++
++ /@next/eslint-plugin-next/13.1.1:
++ resolution: {integrity: sha512-SBrOFS8PC3nQ5aeZmawJkjKkWjwK9RoxvBSv/86nZp0ubdoVQoko8r8htALd9ufp16NhacCdqhu9bzZLDWtALQ==}
++ dependencies:
++ glob: 7.1.7
++ dev: false
++
++ /@next/font/13.1.1:
++ resolution: {integrity: sha512-amygRorS05hYK1/XQRZo5qBl7l2fpHnezeKU/cNveWU5QJg+sg8gMGkUXHtvesNKpiKIJshBRH1TzvO+2sKpvQ==}
++ dev: false
++
++ /@next/swc-android-arm-eabi/13.1.1:
++ resolution: {integrity: sha512-qnFCx1kT3JTWhWve4VkeWuZiyjG0b5T6J2iWuin74lORCupdrNukxkq9Pm+Z7PsatxuwVJMhjUoYz7H4cWzx2A==}
++ engines: {node: '>= 10'}
++ cpu: [arm]
++ os: [android]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-android-arm64/13.1.1:
++ resolution: {integrity: sha512-eCiZhTzjySubNqUnNkQCjU3Fh+ep3C6b5DCM5FKzsTH/3Gr/4Y7EiaPZKILbvnXmhWtKPIdcY6Zjx51t4VeTfA==}
++ engines: {node: '>= 10'}
++ cpu: [arm64]
++ os: [android]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-darwin-arm64/13.1.1:
++ resolution: {integrity: sha512-9zRJSSIwER5tu9ADDkPw5rIZ+Np44HTXpYMr0rkM656IvssowPxmhK0rTreC1gpUCYwFsRbxarUJnJsTWiutPg==}
++ engines: {node: '>= 10'}
++ cpu: [arm64]
++ os: [darwin]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-darwin-x64/13.1.1:
++ resolution: {integrity: sha512-qWr9qEn5nrnlhB0rtjSdR00RRZEtxg4EGvicIipqZWEyayPxhUu6NwKiG8wZiYZCLfJ5KWr66PGSNeDMGlNaiA==}
++ engines: {node: '>= 10'}
++ cpu: [x64]
++ os: [darwin]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-freebsd-x64/13.1.1:
++ resolution: {integrity: sha512-UwP4w/NcQ7V/VJEj3tGVszgb4pyUCt3lzJfUhjDMUmQbzG9LDvgiZgAGMYH6L21MoyAATJQPDGiAMWAPKsmumA==}
++ engines: {node: '>= 10'}
++ cpu: [x64]
++ os: [freebsd]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-linux-arm-gnueabihf/13.1.1:
++ resolution: {integrity: sha512-CnsxmKHco9sosBs1XcvCXP845Db+Wx1G0qouV5+Gr+HT/ZlDYEWKoHVDgnJXLVEQzq4FmHddBNGbXvgqM1Gfkg==}
++ engines: {node: '>= 10'}
++ cpu: [arm]
++ os: [linux]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-linux-arm64-gnu/13.1.1:
++ resolution: {integrity: sha512-JfDq1eri5Dif+VDpTkONRd083780nsMCOKoFG87wA0sa4xL8LGcXIBAkUGIC1uVy9SMsr2scA9CySLD/i+Oqiw==}
++ engines: {node: '>= 10'}
++ cpu: [arm64]
++ os: [linux]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-linux-arm64-musl/13.1.1:
++ resolution: {integrity: sha512-GA67ZbDq2AW0CY07zzGt07M5b5Yaq5qUpFIoW3UFfjOPgb0Sqf3DAW7GtFMK1sF4ROHsRDMGQ9rnT0VM2dVfKA==}
++ engines: {node: '>= 10'}
++ cpu: [arm64]
++ os: [linux]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-linux-x64-gnu/13.1.1:
++ resolution: {integrity: sha512-nnjuBrbzvqaOJaV+XgT8/+lmXrSCOt1YYZn/irbDb2fR2QprL6Q7WJNgwsZNxiLSfLdv+2RJGGegBx9sLBEzGA==}
++ engines: {node: '>= 10'}
++ cpu: [x64]
++ os: [linux]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-linux-x64-musl/13.1.1:
++ resolution: {integrity: sha512-CM9xnAQNIZ8zf/igbIT/i3xWbQZYaF397H+JroF5VMOCUleElaMdQLL5riJml8wUfPoN3dtfn2s4peSr3azz/g==}
++ engines: {node: '>= 10'}
++ cpu: [x64]
++ os: [linux]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-win32-arm64-msvc/13.1.1:
++ resolution: {integrity: sha512-pzUHOGrbgfGgPlOMx9xk3QdPJoRPU+om84hqVoe6u+E0RdwOG0Ho/2UxCgDqmvpUrMab1Deltlt6RqcXFpnigQ==}
++ engines: {node: '>= 10'}
++ cpu: [arm64]
++ os: [win32]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-win32-ia32-msvc/13.1.1:
++ resolution: {integrity: sha512-WeX8kVS46aobM9a7Xr/kEPcrTyiwJqQv/tbw6nhJ4fH9xNZ+cEcyPoQkwPo570dCOLz3Zo9S2q0E6lJ/EAUOBg==}
++ engines: {node: '>= 10'}
++ cpu: [ia32]
++ os: [win32]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@next/swc-win32-x64-msvc/13.1.1:
++ resolution: {integrity: sha512-mVF0/3/5QAc5EGVnb8ll31nNvf3BWpPY4pBb84tk+BfQglWLqc5AC9q1Ht/YMWiEgs8ALNKEQ3GQnbY0bJF2Gg==}
++ engines: {node: '>= 10'}
++ cpu: [x64]
++ os: [win32]
++ requiresBuild: true
++ dev: false
++ optional: true
++
++ /@nodelib/fs.scandir/2.1.5:
++ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
++ engines: {node: '>= 8'}
++ dependencies:
++ '@nodelib/fs.stat': 2.0.5
++ run-parallel: 1.2.0
++ dev: false
++
++ /@nodelib/fs.stat/2.0.5:
++ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
++ engines: {node: '>= 8'}
++ dev: false
++
++ /@nodelib/fs.walk/1.2.8:
++ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
++ engines: {node: '>= 8'}
++ dependencies:
++ '@nodelib/fs.scandir': 2.1.5
++ fastq: 1.14.0
++ dev: false
++
++ /@pkgr/utils/2.3.1:
++ resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==}
++ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
++ dependencies:
++ cross-spawn: 7.0.3
++ is-glob: 4.0.3
++ open: 8.4.0
++ picocolors: 1.0.0
++ tiny-glob: 0.2.9
++ tslib: 2.4.1
++ dev: false
++
++ /@rushstack/eslint-patch/1.2.0:
++ resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==}
++ dev: false
++
++ /@swc/helpers/0.4.14:
++ resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
++ dependencies:
++ tslib: 2.4.1
++ dev: false
++
++ /@types/json5/0.0.29:
++ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
++ dev: false
++
++ /@types/node/18.11.18:
++ resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==}
++ dev: false
++
++ /@types/prop-types/15.7.5:
++ resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
++ dev: false
++
++ /@types/react-dom/18.0.10:
++ resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==}
++ dependencies:
++ '@types/react': 18.0.26
++ dev: false
++
++ /@types/react/18.0.26:
++ resolution: {integrity: sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==}
++ dependencies:
++ '@types/prop-types': 15.7.5
++ '@types/scheduler': 0.16.2
++ csstype: 3.1.1
++ dev: false
++
++ /@types/scheduler/0.16.2:
++ resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
++ dev: false
++
++ /@typescript-eslint/parser/5.47.1_iukboom6ndih5an6iafl45j2fe:
++ resolution: {integrity: sha512-9Vb+KIv29r6GPu4EboWOnQM7T+UjpjXvjCPhNORlgm40a9Ia9bvaPJswvtae1gip2QEeVeGh6YquqAzEgoRAlw==}
++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
++ peerDependencies:
++ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
++ typescript: '*'
++ peerDependenciesMeta:
++ typescript:
++ optional: true
++ dependencies:
++ '@typescript-eslint/scope-manager': 5.47.1
++ '@typescript-eslint/types': 5.47.1
++ '@typescript-eslint/typescript-estree': 5.47.1_typescript@4.9.4
++ debug: 4.3.4
++ eslint: 8.31.0
++ typescript: 4.9.4
++ transitivePeerDependencies:
++ - supports-color
++ dev: false
++
++ /@typescript-eslint/scope-manager/5.47.1:
++ resolution: {integrity: sha512-9hsFDsgUwrdOoW1D97Ewog7DYSHaq4WKuNs0LHF9RiCmqB0Z+XRR4Pf7u7u9z/8CciHuJ6yxNws1XznI3ddjEw==}
++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
++ dependencies:
++ '@typescript-eslint/types': 5.47.1
++ '@typescript-eslint/visitor-keys': 5.47.1
++ dev: false
++
++ /@typescript-eslint/types/5.47.1:
++ resolution: {integrity: sha512-CmALY9YWXEpwuu6377ybJBZdtSAnzXLSQcxLSqSQSbC7VfpMu/HLVdrnVJj7ycI138EHqocW02LPJErE35cE9A==}
++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
++ dev: false
++
++ /@typescript-eslint/typescript-estree/5.47.1_typescript@4.9.4:
++ resolution: {integrity: sha512-4+ZhFSuISAvRi2xUszEj0xXbNTHceV9GbH9S8oAD2a/F9SW57aJNQVOCxG8GPfSWH/X4eOPdMEU2jYVuWKEpWA==}
++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
++ peerDependencies:
++ typescript: '*'
++ peerDependenciesMeta:
++ typescript:
++ optional: true
++ dependencies:
++ '@typescript-eslint/types': 5.47.1
++ '@typescript-eslint/visitor-keys': 5.47.1
++ debug: 4.3.4
++ globby: 11.1.0
++ is-glob: 4.0.3
++ semver: 7.3.8
++ tsutils: 3.21.0_typescript@4.9.4
++ typescript: 4.9.4
++ transitivePeerDependencies:
++ - supports-color
++ dev: false
++
++ /@typescript-eslint/visitor-keys/5.47.1:
++ resolution: {integrity: sha512-rF3pmut2JCCjh6BLRhNKdYjULMb1brvoaiWDlHfLNVgmnZ0sBVJrs3SyaKE1XoDDnJuAx/hDQryHYmPUuNq0ig==}
++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
++ dependencies:
++ '@typescript-eslint/types': 5.47.1
++ eslint-visitor-keys: 3.3.0
++ dev: false
++
++ /acorn-jsx/5.3.2_acorn@8.8.1:
++ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
++ peerDependencies:
++ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
++ dependencies:
++ acorn: 8.8.1
++ dev: false
++
++ /acorn/8.8.1:
++ resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==}
++ engines: {node: '>=0.4.0'}
++ hasBin: true
++ dev: false
++
++ /ajv/6.12.6:
++ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
++ dependencies:
++ fast-deep-equal: 3.1.3
++ fast-json-stable-stringify: 2.1.0
++ json-schema-traverse: 0.4.1
++ uri-js: 4.4.1
++ dev: false
++
++ /ansi-regex/5.0.1:
++ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /ansi-styles/4.3.0:
++ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
++ engines: {node: '>=8'}
++ dependencies:
++ color-convert: 2.0.1
++ dev: false
++
++ /argparse/2.0.1:
++ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
++ dev: false
++
++ /aria-query/4.2.2:
++ resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==}
++ engines: {node: '>=6.0'}
++ dependencies:
++ '@babel/runtime': 7.20.7
++ '@babel/runtime-corejs3': 7.20.7
++ dev: false
++
++ /array-includes/3.1.6:
++ resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ get-intrinsic: 1.1.3
++ is-string: 1.0.7
++ dev: false
++
++ /array-union/2.1.0:
++ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /array.prototype.flat/1.3.1:
++ resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ es-shim-unscopables: 1.0.0
++ dev: false
++
++ /array.prototype.flatmap/1.3.1:
++ resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ es-shim-unscopables: 1.0.0
++ dev: false
++
++ /array.prototype.tosorted/1.1.1:
++ resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ es-shim-unscopables: 1.0.0
++ get-intrinsic: 1.1.3
++ dev: false
++
++ /ast-types-flow/0.0.7:
++ resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==}
++ dev: false
++
++ /axe-core/4.6.1:
++ resolution: {integrity: sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w==}
++ engines: {node: '>=4'}
++ dev: false
++
++ /axobject-query/2.2.0:
++ resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==}
++ dev: false
++
++ /balanced-match/1.0.2:
++ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
++ dev: false
++
++ /brace-expansion/1.1.11:
++ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
++ dependencies:
++ balanced-match: 1.0.2
++ concat-map: 0.0.1
++ dev: false
++
++ /braces/3.0.2:
++ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
++ engines: {node: '>=8'}
++ dependencies:
++ fill-range: 7.0.1
++ dev: false
++
++ /call-bind/1.0.2:
++ resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
++ dependencies:
++ function-bind: 1.1.1
++ get-intrinsic: 1.1.3
++ dev: false
++
++ /callsites/3.1.0:
++ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
++ engines: {node: '>=6'}
++ dev: false
++
++ /caniuse-lite/1.0.30001441:
++ resolution: {integrity: sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==}
++ dev: false
++
++ /chalk/4.1.2:
++ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
++ engines: {node: '>=10'}
++ dependencies:
++ ansi-styles: 4.3.0
++ supports-color: 7.2.0
++ dev: false
++
++ /client-only/0.0.1:
++ resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
++ dev: false
++
++ /color-convert/2.0.1:
++ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
++ engines: {node: '>=7.0.0'}
++ dependencies:
++ color-name: 1.1.4
++ dev: false
++
++ /color-name/1.1.4:
++ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
++ dev: false
++
++ /concat-map/0.0.1:
++ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
++ dev: false
++
++ /core-js-pure/3.27.1:
++ resolution: {integrity: sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw==}
++ requiresBuild: true
++ dev: false
++
++ /cross-spawn/7.0.3:
++ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
++ engines: {node: '>= 8'}
++ dependencies:
++ path-key: 3.1.1
++ shebang-command: 2.0.0
++ which: 2.0.2
++ dev: false
++
++ /csstype/3.1.1:
++ resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==}
++ dev: false
++
++ /damerau-levenshtein/1.0.8:
++ resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
++ dev: false
++
++ /debug/2.6.9:
++ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
++ peerDependencies:
++ supports-color: '*'
++ peerDependenciesMeta:
++ supports-color:
++ optional: true
++ dependencies:
++ ms: 2.0.0
++ dev: false
++
++ /debug/3.2.7:
++ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
++ peerDependencies:
++ supports-color: '*'
++ peerDependenciesMeta:
++ supports-color:
++ optional: true
++ dependencies:
++ ms: 2.1.3
++ dev: false
++
++ /debug/4.3.4:
++ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
++ engines: {node: '>=6.0'}
++ peerDependencies:
++ supports-color: '*'
++ peerDependenciesMeta:
++ supports-color:
++ optional: true
++ dependencies:
++ ms: 2.1.2
++ dev: false
++
++ /deep-is/0.1.4:
++ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
++ dev: false
++
++ /define-lazy-prop/2.0.0:
++ resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /define-properties/1.1.4:
++ resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ has-property-descriptors: 1.0.0
++ object-keys: 1.1.1
++ dev: false
++
++ /dir-glob/3.0.1:
++ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
++ engines: {node: '>=8'}
++ dependencies:
++ path-type: 4.0.0
++ dev: false
++
++ /doctrine/2.1.0:
++ resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
++ engines: {node: '>=0.10.0'}
++ dependencies:
++ esutils: 2.0.3
++ dev: false
++
++ /doctrine/3.0.0:
++ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
++ engines: {node: '>=6.0.0'}
++ dependencies:
++ esutils: 2.0.3
++ dev: false
++
++ /emoji-regex/9.2.2:
++ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
++ dev: false
++
++ /enhanced-resolve/5.12.0:
++ resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==}
++ engines: {node: '>=10.13.0'}
++ dependencies:
++ graceful-fs: 4.2.10
++ tapable: 2.2.1
++ dev: false
++
++ /es-abstract/1.20.5:
++ resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ es-to-primitive: 1.2.1
++ function-bind: 1.1.1
++ function.prototype.name: 1.1.5
++ get-intrinsic: 1.1.3
++ get-symbol-description: 1.0.0
++ gopd: 1.0.1
++ has: 1.0.3
++ has-property-descriptors: 1.0.0
++ has-symbols: 1.0.3
++ internal-slot: 1.0.4
++ is-callable: 1.2.7
++ is-negative-zero: 2.0.2
++ is-regex: 1.1.4
++ is-shared-array-buffer: 1.0.2
++ is-string: 1.0.7
++ is-weakref: 1.0.2
++ object-inspect: 1.12.2
++ object-keys: 1.1.1
++ object.assign: 4.1.4
++ regexp.prototype.flags: 1.4.3
++ safe-regex-test: 1.0.0
++ string.prototype.trimend: 1.0.6
++ string.prototype.trimstart: 1.0.6
++ unbox-primitive: 1.0.2
++ dev: false
++
++ /es-shim-unscopables/1.0.0:
++ resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
++ dependencies:
++ has: 1.0.3
++ dev: false
++
++ /es-to-primitive/1.2.1:
++ resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ is-callable: 1.2.7
++ is-date-object: 1.0.5
++ is-symbol: 1.0.4
++ dev: false
++
++ /escape-string-regexp/4.0.0:
++ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
++ engines: {node: '>=10'}
++ dev: false
++
++ /eslint-config-next/13.1.1_iukboom6ndih5an6iafl45j2fe:
++ resolution: {integrity: sha512-/5S2XGWlGaiqrRhzpn51ux5JUSLwx8PVK2keLi5xk7QmhfYB8PqE6R6SlVw6hgnf/VexvUXSrlNJ/su00NhtHQ==}
++ peerDependencies:
++ eslint: ^7.23.0 || ^8.0.0
++ typescript: '>=3.3.1'
++ peerDependenciesMeta:
++ typescript:
++ optional: true
++ dependencies:
++ '@next/eslint-plugin-next': 13.1.1
++ '@rushstack/eslint-patch': 1.2.0
++ '@typescript-eslint/parser': 5.47.1_iukboom6ndih5an6iafl45j2fe
++ eslint: 8.31.0
++ eslint-import-resolver-node: 0.3.6
++ eslint-import-resolver-typescript: 3.5.2_ol7jqilc3wemtdbq3nzhywgxq4
++ eslint-plugin-import: 2.26.0_bpx4furzt4ibermwbsj75osuwi
++ eslint-plugin-jsx-a11y: 6.6.1_eslint@8.31.0
++ eslint-plugin-react: 7.31.11_eslint@8.31.0
++ eslint-plugin-react-hooks: 4.6.0_eslint@8.31.0
++ typescript: 4.9.4
++ transitivePeerDependencies:
++ - eslint-import-resolver-webpack
++ - supports-color
++ dev: false
++
++ /eslint-import-resolver-node/0.3.6:
++ resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==}
++ dependencies:
++ debug: 3.2.7
++ resolve: 1.22.1
++ transitivePeerDependencies:
++ - supports-color
++ dev: false
++
++ /eslint-import-resolver-typescript/3.5.2_ol7jqilc3wemtdbq3nzhywgxq4:
++ resolution: {integrity: sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==}
++ engines: {node: ^14.18.0 || >=16.0.0}
++ peerDependencies:
++ eslint: '*'
++ eslint-plugin-import: '*'
++ dependencies:
++ debug: 4.3.4
++ enhanced-resolve: 5.12.0
++ eslint: 8.31.0
++ eslint-plugin-import: 2.26.0_bpx4furzt4ibermwbsj75osuwi
++ get-tsconfig: 4.2.0
++ globby: 13.1.3
++ is-core-module: 2.11.0
++ is-glob: 4.0.3
++ synckit: 0.8.4
++ transitivePeerDependencies:
++ - supports-color
++ dev: false
++
++ /eslint-module-utils/2.7.4_of6uaipqaoaobv57tu2gvxhnhu:
++ resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
++ engines: {node: '>=4'}
++ peerDependencies:
++ '@typescript-eslint/parser': '*'
++ eslint: '*'
++ eslint-import-resolver-node: '*'
++ eslint-import-resolver-typescript: '*'
++ eslint-import-resolver-webpack: '*'
++ peerDependenciesMeta:
++ '@typescript-eslint/parser':
++ optional: true
++ eslint:
++ optional: true
++ eslint-import-resolver-node:
++ optional: true
++ eslint-import-resolver-typescript:
++ optional: true
++ eslint-import-resolver-webpack:
++ optional: true
++ dependencies:
++ '@typescript-eslint/parser': 5.47.1_iukboom6ndih5an6iafl45j2fe
++ debug: 3.2.7
++ eslint: 8.31.0
++ eslint-import-resolver-node: 0.3.6
++ eslint-import-resolver-typescript: 3.5.2_ol7jqilc3wemtdbq3nzhywgxq4
++ transitivePeerDependencies:
++ - supports-color
++ dev: false
++
++ /eslint-plugin-import/2.26.0_bpx4furzt4ibermwbsj75osuwi:
++ resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==}
++ engines: {node: '>=4'}
++ peerDependencies:
++ '@typescript-eslint/parser': '*'
++ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
++ peerDependenciesMeta:
++ '@typescript-eslint/parser':
++ optional: true
++ dependencies:
++ '@typescript-eslint/parser': 5.47.1_iukboom6ndih5an6iafl45j2fe
++ array-includes: 3.1.6
++ array.prototype.flat: 1.3.1
++ debug: 2.6.9
++ doctrine: 2.1.0
++ eslint: 8.31.0
++ eslint-import-resolver-node: 0.3.6
++ eslint-module-utils: 2.7.4_of6uaipqaoaobv57tu2gvxhnhu
++ has: 1.0.3
++ is-core-module: 2.11.0
++ is-glob: 4.0.3
++ minimatch: 3.1.2
++ object.values: 1.1.6
++ resolve: 1.22.1
++ tsconfig-paths: 3.14.1
++ transitivePeerDependencies:
++ - eslint-import-resolver-typescript
++ - eslint-import-resolver-webpack
++ - supports-color
++ dev: false
++
++ /eslint-plugin-jsx-a11y/6.6.1_eslint@8.31.0:
++ resolution: {integrity: sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==}
++ engines: {node: '>=4.0'}
++ peerDependencies:
++ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
++ dependencies:
++ '@babel/runtime': 7.20.7
++ aria-query: 4.2.2
++ array-includes: 3.1.6
++ ast-types-flow: 0.0.7
++ axe-core: 4.6.1
++ axobject-query: 2.2.0
++ damerau-levenshtein: 1.0.8
++ emoji-regex: 9.2.2
++ eslint: 8.31.0
++ has: 1.0.3
++ jsx-ast-utils: 3.3.3
++ language-tags: 1.0.7
++ minimatch: 3.1.2
++ semver: 6.3.0
++ dev: false
++
++ /eslint-plugin-react-hooks/4.6.0_eslint@8.31.0:
++ resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
++ engines: {node: '>=10'}
++ peerDependencies:
++ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
++ dependencies:
++ eslint: 8.31.0
++ dev: false
++
++ /eslint-plugin-react/7.31.11_eslint@8.31.0:
++ resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==}
++ engines: {node: '>=4'}
++ peerDependencies:
++ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
++ dependencies:
++ array-includes: 3.1.6
++ array.prototype.flatmap: 1.3.1
++ array.prototype.tosorted: 1.1.1
++ doctrine: 2.1.0
++ eslint: 8.31.0
++ estraverse: 5.3.0
++ jsx-ast-utils: 3.3.3
++ minimatch: 3.1.2
++ object.entries: 1.1.6
++ object.fromentries: 2.0.6
++ object.hasown: 1.1.2
++ object.values: 1.1.6
++ prop-types: 15.8.1
++ resolve: 2.0.0-next.4
++ semver: 6.3.0
++ string.prototype.matchall: 4.0.8
++ dev: false
++
++ /eslint-scope/7.1.1:
++ resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==}
++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
++ dependencies:
++ esrecurse: 4.3.0
++ estraverse: 5.3.0
++ dev: false
++
++ /eslint-utils/3.0.0_eslint@8.31.0:
++ resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
++ engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
++ peerDependencies:
++ eslint: '>=5'
++ dependencies:
++ eslint: 8.31.0
++ eslint-visitor-keys: 2.1.0
++ dev: false
++
++ /eslint-visitor-keys/2.1.0:
++ resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
++ engines: {node: '>=10'}
++ dev: false
++
++ /eslint-visitor-keys/3.3.0:
++ resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==}
++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
++ dev: false
++
++ /eslint/8.31.0:
++ resolution: {integrity: sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==}
++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
++ hasBin: true
++ dependencies:
++ '@eslint/eslintrc': 1.4.1
++ '@humanwhocodes/config-array': 0.11.8
++ '@humanwhocodes/module-importer': 1.0.1
++ '@nodelib/fs.walk': 1.2.8
++ ajv: 6.12.6
++ chalk: 4.1.2
++ cross-spawn: 7.0.3
++ debug: 4.3.4
++ doctrine: 3.0.0
++ escape-string-regexp: 4.0.0
++ eslint-scope: 7.1.1
++ eslint-utils: 3.0.0_eslint@8.31.0
++ eslint-visitor-keys: 3.3.0
++ espree: 9.4.1
++ esquery: 1.4.0
++ esutils: 2.0.3
++ fast-deep-equal: 3.1.3
++ file-entry-cache: 6.0.1
++ find-up: 5.0.0
++ glob-parent: 6.0.2
++ globals: 13.19.0
++ grapheme-splitter: 1.0.4
++ ignore: 5.2.4
++ import-fresh: 3.3.0
++ imurmurhash: 0.1.4
++ is-glob: 4.0.3
++ is-path-inside: 3.0.3
++ js-sdsl: 4.2.0
++ js-yaml: 4.1.0
++ json-stable-stringify-without-jsonify: 1.0.1
++ levn: 0.4.1
++ lodash.merge: 4.6.2
++ minimatch: 3.1.2
++ natural-compare: 1.4.0
++ optionator: 0.9.1
++ regexpp: 3.2.0
++ strip-ansi: 6.0.1
++ strip-json-comments: 3.1.1
++ text-table: 0.2.0
++ transitivePeerDependencies:
++ - supports-color
++ dev: false
++
++ /espree/9.4.1:
++ resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==}
++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
++ dependencies:
++ acorn: 8.8.1
++ acorn-jsx: 5.3.2_acorn@8.8.1
++ eslint-visitor-keys: 3.3.0
++ dev: false
++
++ /esquery/1.4.0:
++ resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
++ engines: {node: '>=0.10'}
++ dependencies:
++ estraverse: 5.3.0
++ dev: false
++
++ /esrecurse/4.3.0:
++ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
++ engines: {node: '>=4.0'}
++ dependencies:
++ estraverse: 5.3.0
++ dev: false
++
++ /estraverse/5.3.0:
++ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
++ engines: {node: '>=4.0'}
++ dev: false
++
++ /esutils/2.0.3:
++ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
++ engines: {node: '>=0.10.0'}
++ dev: false
++
++ /fast-deep-equal/3.1.3:
++ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
++ dev: false
++
++ /fast-glob/3.2.12:
++ resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
++ engines: {node: '>=8.6.0'}
++ dependencies:
++ '@nodelib/fs.stat': 2.0.5
++ '@nodelib/fs.walk': 1.2.8
++ glob-parent: 5.1.2
++ merge2: 1.4.1
++ micromatch: 4.0.5
++ dev: false
++
++ /fast-json-stable-stringify/2.1.0:
++ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
++ dev: false
++
++ /fast-levenshtein/2.0.6:
++ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
++ dev: false
++
++ /fastq/1.14.0:
++ resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==}
++ dependencies:
++ reusify: 1.0.4
++ dev: false
++
++ /file-entry-cache/6.0.1:
++ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
++ engines: {node: ^10.12.0 || >=12.0.0}
++ dependencies:
++ flat-cache: 3.0.4
++ dev: false
++
++ /fill-range/7.0.1:
++ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
++ engines: {node: '>=8'}
++ dependencies:
++ to-regex-range: 5.0.1
++ dev: false
++
++ /find-up/5.0.0:
++ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
++ engines: {node: '>=10'}
++ dependencies:
++ locate-path: 6.0.0
++ path-exists: 4.0.0
++ dev: false
++
++ /flat-cache/3.0.4:
++ resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
++ engines: {node: ^10.12.0 || >=12.0.0}
++ dependencies:
++ flatted: 3.2.7
++ rimraf: 3.0.2
++ dev: false
++
++ /flatted/3.2.7:
++ resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
++ dev: false
++
++ /fs.realpath/1.0.0:
++ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
++ dev: false
++
++ /function-bind/1.1.1:
++ resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
++ dev: false
++
++ /function.prototype.name/1.1.5:
++ resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ functions-have-names: 1.2.3
++ dev: false
++
++ /functions-have-names/1.2.3:
++ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
++ dev: false
++
++ /get-intrinsic/1.1.3:
++ resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==}
++ dependencies:
++ function-bind: 1.1.1
++ has: 1.0.3
++ has-symbols: 1.0.3
++ dev: false
++
++ /get-symbol-description/1.0.0:
++ resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ get-intrinsic: 1.1.3
++ dev: false
++
++ /get-tsconfig/4.2.0:
++ resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==}
++ dev: false
++
++ /glob-parent/5.1.2:
++ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
++ engines: {node: '>= 6'}
++ dependencies:
++ is-glob: 4.0.3
++ dev: false
++
++ /glob-parent/6.0.2:
++ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
++ engines: {node: '>=10.13.0'}
++ dependencies:
++ is-glob: 4.0.3
++ dev: false
++
++ /glob/7.1.7:
++ resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
++ dependencies:
++ fs.realpath: 1.0.0
++ inflight: 1.0.6
++ inherits: 2.0.4
++ minimatch: 3.1.2
++ once: 1.4.0
++ path-is-absolute: 1.0.1
++ dev: false
++
++ /glob/7.2.3:
++ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
++ dependencies:
++ fs.realpath: 1.0.0
++ inflight: 1.0.6
++ inherits: 2.0.4
++ minimatch: 3.1.2
++ once: 1.4.0
++ path-is-absolute: 1.0.1
++ dev: false
++
++ /globals/13.19.0:
++ resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==}
++ engines: {node: '>=8'}
++ dependencies:
++ type-fest: 0.20.2
++ dev: false
++
++ /globalyzer/0.1.0:
++ resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
++ dev: false
++
++ /globby/11.1.0:
++ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
++ engines: {node: '>=10'}
++ dependencies:
++ array-union: 2.1.0
++ dir-glob: 3.0.1
++ fast-glob: 3.2.12
++ ignore: 5.2.4
++ merge2: 1.4.1
++ slash: 3.0.0
++ dev: false
++
++ /globby/13.1.3:
++ resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==}
++ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
++ dependencies:
++ dir-glob: 3.0.1
++ fast-glob: 3.2.12
++ ignore: 5.2.4
++ merge2: 1.4.1
++ slash: 4.0.0
++ dev: false
++
++ /globrex/0.1.2:
++ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
++ dev: false
++
++ /gopd/1.0.1:
++ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
++ dependencies:
++ get-intrinsic: 1.1.3
++ dev: false
++
++ /graceful-fs/4.2.10:
++ resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
++ dev: false
++
++ /grapheme-splitter/1.0.4:
++ resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
++ dev: false
++
++ /has-bigints/1.0.2:
++ resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
++ dev: false
++
++ /has-flag/4.0.0:
++ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /has-property-descriptors/1.0.0:
++ resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
++ dependencies:
++ get-intrinsic: 1.1.3
++ dev: false
++
++ /has-symbols/1.0.3:
++ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
++ engines: {node: '>= 0.4'}
++ dev: false
++
++ /has-tostringtag/1.0.0:
++ resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ has-symbols: 1.0.3
++ dev: false
++
++ /has/1.0.3:
++ resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
++ engines: {node: '>= 0.4.0'}
++ dependencies:
++ function-bind: 1.1.1
++ dev: false
++
++ /ignore/5.2.4:
++ resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
++ engines: {node: '>= 4'}
++ dev: false
++
++ /import-fresh/3.3.0:
++ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
++ engines: {node: '>=6'}
++ dependencies:
++ parent-module: 1.0.1
++ resolve-from: 4.0.0
++ dev: false
++
++ /imurmurhash/0.1.4:
++ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
++ engines: {node: '>=0.8.19'}
++ dev: false
++
++ /inflight/1.0.6:
++ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
++ dependencies:
++ once: 1.4.0
++ wrappy: 1.0.2
++ dev: false
++
++ /inherits/2.0.4:
++ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
++ dev: false
++
++ /internal-slot/1.0.4:
++ resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ get-intrinsic: 1.1.3
++ has: 1.0.3
++ side-channel: 1.0.4
++ dev: false
++
++ /is-bigint/1.0.4:
++ resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
++ dependencies:
++ has-bigints: 1.0.2
++ dev: false
++
++ /is-boolean-object/1.1.2:
++ resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ has-tostringtag: 1.0.0
++ dev: false
++
++ /is-callable/1.2.7:
++ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
++ engines: {node: '>= 0.4'}
++ dev: false
++
++ /is-core-module/2.11.0:
++ resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
++ dependencies:
++ has: 1.0.3
++ dev: false
++
++ /is-date-object/1.0.5:
++ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ has-tostringtag: 1.0.0
++ dev: false
++
++ /is-docker/2.2.1:
++ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
++ engines: {node: '>=8'}
++ hasBin: true
++ dev: false
++
++ /is-extglob/2.1.1:
++ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
++ engines: {node: '>=0.10.0'}
++ dev: false
++
++ /is-glob/4.0.3:
++ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
++ engines: {node: '>=0.10.0'}
++ dependencies:
++ is-extglob: 2.1.1
++ dev: false
++
++ /is-negative-zero/2.0.2:
++ resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
++ engines: {node: '>= 0.4'}
++ dev: false
++
++ /is-number-object/1.0.7:
++ resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ has-tostringtag: 1.0.0
++ dev: false
++
++ /is-number/7.0.0:
++ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
++ engines: {node: '>=0.12.0'}
++ dev: false
++
++ /is-path-inside/3.0.3:
++ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /is-regex/1.1.4:
++ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ has-tostringtag: 1.0.0
++ dev: false
++
++ /is-shared-array-buffer/1.0.2:
++ resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
++ dependencies:
++ call-bind: 1.0.2
++ dev: false
++
++ /is-string/1.0.7:
++ resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ has-tostringtag: 1.0.0
++ dev: false
++
++ /is-symbol/1.0.4:
++ resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ has-symbols: 1.0.3
++ dev: false
++
++ /is-weakref/1.0.2:
++ resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
++ dependencies:
++ call-bind: 1.0.2
++ dev: false
++
++ /is-wsl/2.2.0:
++ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
++ engines: {node: '>=8'}
++ dependencies:
++ is-docker: 2.2.1
++ dev: false
++
++ /isexe/2.0.0:
++ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
++ dev: false
++
++ /js-sdsl/4.2.0:
++ resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==}
++ dev: false
++
++ /js-tokens/4.0.0:
++ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
++ dev: false
++
++ /js-yaml/4.1.0:
++ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
++ hasBin: true
++ dependencies:
++ argparse: 2.0.1
++ dev: false
++
++ /json-schema-traverse/0.4.1:
++ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
++ dev: false
++
++ /json-stable-stringify-without-jsonify/1.0.1:
++ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
++ dev: false
++
++ /json5/1.0.2:
++ resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
++ hasBin: true
++ dependencies:
++ minimist: 1.2.7
++ dev: false
++
++ /jsx-ast-utils/3.3.3:
++ resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==}
++ engines: {node: '>=4.0'}
++ dependencies:
++ array-includes: 3.1.6
++ object.assign: 4.1.4
++ dev: false
++
++ /language-subtag-registry/0.3.22:
++ resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
++ dev: false
++
++ /language-tags/1.0.7:
++ resolution: {integrity: sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw==}
++ dependencies:
++ language-subtag-registry: 0.3.22
++ dev: false
++
++ /levn/0.4.1:
++ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
++ engines: {node: '>= 0.8.0'}
++ dependencies:
++ prelude-ls: 1.2.1
++ type-check: 0.4.0
++ dev: false
++
++ /locate-path/6.0.0:
++ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
++ engines: {node: '>=10'}
++ dependencies:
++ p-locate: 5.0.0
++ dev: false
++
++ /lodash.merge/4.6.2:
++ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
++ dev: false
++
++ /loose-envify/1.4.0:
++ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
++ hasBin: true
++ dependencies:
++ js-tokens: 4.0.0
++ dev: false
++
++ /lru-cache/6.0.0:
++ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
++ engines: {node: '>=10'}
++ dependencies:
++ yallist: 4.0.0
++ dev: false
++
++ /merge2/1.4.1:
++ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
++ engines: {node: '>= 8'}
++ dev: false
++
++ /micromatch/4.0.5:
++ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
++ engines: {node: '>=8.6'}
++ dependencies:
++ braces: 3.0.2
++ picomatch: 2.3.1
++ dev: false
++
++ /minimatch/3.1.2:
++ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
++ dependencies:
++ brace-expansion: 1.1.11
++ dev: false
++
++ /minimist/1.2.7:
++ resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==}
++ dev: false
++
++ /ms/2.0.0:
++ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
++ dev: false
++
++ /ms/2.1.2:
++ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
++ dev: false
++
++ /ms/2.1.3:
++ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
++ dev: false
++
++ /nanoid/3.3.4:
++ resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
++ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
++ hasBin: true
++ dev: false
++
++ /natural-compare/1.4.0:
++ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
++ dev: false
++
++ /next/13.1.1_biqbaboplfbrettd7655fr4n2y:
++ resolution: {integrity: sha512-R5eBAaIa3X7LJeYvv1bMdGnAVF4fVToEjim7MkflceFPuANY3YyvFxXee/A+acrSYwYPvOvf7f6v/BM/48ea5w==}
++ engines: {node: '>=14.6.0'}
++ hasBin: true
++ peerDependencies:
++ fibers: '>= 3.1.0'
++ node-sass: ^6.0.0 || ^7.0.0
++ react: ^18.2.0
++ react-dom: ^18.2.0
++ sass: ^1.3.0
++ peerDependenciesMeta:
++ fibers:
++ optional: true
++ node-sass:
++ optional: true
++ sass:
++ optional: true
++ dependencies:
++ '@next/env': 13.1.1
++ '@swc/helpers': 0.4.14
++ caniuse-lite: 1.0.30001441
++ postcss: 8.4.14
++ react: 18.2.0
++ react-dom: 18.2.0_react@18.2.0
++ styled-jsx: 5.1.1_react@18.2.0
++ optionalDependencies:
++ '@next/swc-android-arm-eabi': 13.1.1
++ '@next/swc-android-arm64': 13.1.1
++ '@next/swc-darwin-arm64': 13.1.1
++ '@next/swc-darwin-x64': 13.1.1
++ '@next/swc-freebsd-x64': 13.1.1
++ '@next/swc-linux-arm-gnueabihf': 13.1.1
++ '@next/swc-linux-arm64-gnu': 13.1.1
++ '@next/swc-linux-arm64-musl': 13.1.1
++ '@next/swc-linux-x64-gnu': 13.1.1
++ '@next/swc-linux-x64-musl': 13.1.1
++ '@next/swc-win32-arm64-msvc': 13.1.1
++ '@next/swc-win32-ia32-msvc': 13.1.1
++ '@next/swc-win32-x64-msvc': 13.1.1
++ transitivePeerDependencies:
++ - '@babel/core'
++ - babel-plugin-macros
++ dev: false
++
++ /object-assign/4.1.1:
++ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
++ engines: {node: '>=0.10.0'}
++ dev: false
++
++ /object-inspect/1.12.2:
++ resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==}
++ dev: false
++
++ /object-keys/1.1.1:
++ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
++ engines: {node: '>= 0.4'}
++ dev: false
++
++ /object.assign/4.1.4:
++ resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ has-symbols: 1.0.3
++ object-keys: 1.1.1
++ dev: false
++
++ /object.entries/1.1.6:
++ resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ dev: false
++
++ /object.fromentries/2.0.6:
++ resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ dev: false
++
++ /object.hasown/1.1.2:
++ resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==}
++ dependencies:
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ dev: false
++
++ /object.values/1.1.6:
++ resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ dev: false
++
++ /once/1.4.0:
++ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
++ dependencies:
++ wrappy: 1.0.2
++ dev: false
++
++ /open/8.4.0:
++ resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==}
++ engines: {node: '>=12'}
++ dependencies:
++ define-lazy-prop: 2.0.0
++ is-docker: 2.2.1
++ is-wsl: 2.2.0
++ dev: false
++
++ /optionator/0.9.1:
++ resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
++ engines: {node: '>= 0.8.0'}
++ dependencies:
++ deep-is: 0.1.4
++ fast-levenshtein: 2.0.6
++ levn: 0.4.1
++ prelude-ls: 1.2.1
++ type-check: 0.4.0
++ word-wrap: 1.2.3
++ dev: false
++
++ /p-limit/3.1.0:
++ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
++ engines: {node: '>=10'}
++ dependencies:
++ yocto-queue: 0.1.0
++ dev: false
++
++ /p-locate/5.0.0:
++ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
++ engines: {node: '>=10'}
++ dependencies:
++ p-limit: 3.1.0
++ dev: false
++
++ /parent-module/1.0.1:
++ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
++ engines: {node: '>=6'}
++ dependencies:
++ callsites: 3.1.0
++ dev: false
++
++ /path-exists/4.0.0:
++ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /path-is-absolute/1.0.1:
++ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
++ engines: {node: '>=0.10.0'}
++ dev: false
++
++ /path-key/3.1.1:
++ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /path-parse/1.0.7:
++ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
++ dev: false
++
++ /path-type/4.0.0:
++ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /picocolors/1.0.0:
++ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
++ dev: false
++
++ /picomatch/2.3.1:
++ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
++ engines: {node: '>=8.6'}
++ dev: false
++
++ /postcss/8.4.14:
++ resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==}
++ engines: {node: ^10 || ^12 || >=14}
++ dependencies:
++ nanoid: 3.3.4
++ picocolors: 1.0.0
++ source-map-js: 1.0.2
++ dev: false
++
++ /prelude-ls/1.2.1:
++ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
++ engines: {node: '>= 0.8.0'}
++ dev: false
++
++ /prettier/2.8.1:
++ resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==}
++ engines: {node: '>=10.13.0'}
++ hasBin: true
++ dev: true
++
++ /prop-types/15.8.1:
++ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
++ dependencies:
++ loose-envify: 1.4.0
++ object-assign: 4.1.1
++ react-is: 16.13.1
++ dev: false
++
++ /punycode/2.1.1:
++ resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
++ engines: {node: '>=6'}
++ dev: false
++
++ /queue-microtask/1.2.3:
++ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
++ dev: false
++
++ /react-dom/18.2.0_react@18.2.0:
++ resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
++ peerDependencies:
++ react: ^18.2.0
++ dependencies:
++ loose-envify: 1.4.0
++ react: 18.2.0
++ scheduler: 0.23.0
++ dev: false
++
++ /react-is/16.13.1:
++ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
++ dev: false
++
++ /react/18.2.0:
++ resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
++ engines: {node: '>=0.10.0'}
++ dependencies:
++ loose-envify: 1.4.0
++ dev: false
++
++ /regenerator-runtime/0.13.11:
++ resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
++ dev: false
++
++ /regexp.prototype.flags/1.4.3:
++ resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==}
++ engines: {node: '>= 0.4'}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ functions-have-names: 1.2.3
++ dev: false
++
++ /regexpp/3.2.0:
++ resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /resolve-from/4.0.0:
++ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
++ engines: {node: '>=4'}
++ dev: false
++
++ /resolve/1.22.1:
++ resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
++ hasBin: true
++ dependencies:
++ is-core-module: 2.11.0
++ path-parse: 1.0.7
++ supports-preserve-symlinks-flag: 1.0.0
++ dev: false
++
++ /resolve/2.0.0-next.4:
++ resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
++ hasBin: true
++ dependencies:
++ is-core-module: 2.11.0
++ path-parse: 1.0.7
++ supports-preserve-symlinks-flag: 1.0.0
++ dev: false
++
++ /reusify/1.0.4:
++ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
++ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
++ dev: false
++
++ /rimraf/3.0.2:
++ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
++ hasBin: true
++ dependencies:
++ glob: 7.2.3
++ dev: false
++
++ /run-parallel/1.2.0:
++ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
++ dependencies:
++ queue-microtask: 1.2.3
++ dev: false
++
++ /safe-regex-test/1.0.0:
++ resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
++ dependencies:
++ call-bind: 1.0.2
++ get-intrinsic: 1.1.3
++ is-regex: 1.1.4
++ dev: false
++
++ /scheduler/0.23.0:
++ resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
++ dependencies:
++ loose-envify: 1.4.0
++ dev: false
++
++ /semver/6.3.0:
++ resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
++ hasBin: true
++ dev: false
++
++ /semver/7.3.8:
++ resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
++ engines: {node: '>=10'}
++ hasBin: true
++ dependencies:
++ lru-cache: 6.0.0
++ dev: false
++
++ /shebang-command/2.0.0:
++ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
++ engines: {node: '>=8'}
++ dependencies:
++ shebang-regex: 3.0.0
++ dev: false
++
++ /shebang-regex/3.0.0:
++ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /side-channel/1.0.4:
++ resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
++ dependencies:
++ call-bind: 1.0.2
++ get-intrinsic: 1.1.3
++ object-inspect: 1.12.2
++ dev: false
++
++ /slash/3.0.0:
++ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /slash/4.0.0:
++ resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
++ engines: {node: '>=12'}
++ dev: false
++
++ /source-map-js/1.0.2:
++ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
++ engines: {node: '>=0.10.0'}
++ dev: false
++
++ /string.prototype.matchall/4.0.8:
++ resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ get-intrinsic: 1.1.3
++ has-symbols: 1.0.3
++ internal-slot: 1.0.4
++ regexp.prototype.flags: 1.4.3
++ side-channel: 1.0.4
++ dev: false
++
++ /string.prototype.trimend/1.0.6:
++ resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ dev: false
++
++ /string.prototype.trimstart/1.0.6:
++ resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
++ dependencies:
++ call-bind: 1.0.2
++ define-properties: 1.1.4
++ es-abstract: 1.20.5
++ dev: false
++
++ /strip-ansi/6.0.1:
++ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
++ engines: {node: '>=8'}
++ dependencies:
++ ansi-regex: 5.0.1
++ dev: false
++
++ /strip-bom/3.0.0:
++ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
++ engines: {node: '>=4'}
++ dev: false
++
++ /strip-json-comments/3.1.1:
++ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
++ engines: {node: '>=8'}
++ dev: false
++
++ /styled-jsx/5.1.1_react@18.2.0:
++ resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
++ engines: {node: '>= 12.0.0'}
++ peerDependencies:
++ '@babel/core': '*'
++ babel-plugin-macros: '*'
++ react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
++ peerDependenciesMeta:
++ '@babel/core':
++ optional: true
++ babel-plugin-macros:
++ optional: true
++ dependencies:
++ client-only: 0.0.1
++ react: 18.2.0
++ dev: false
++
++ /supports-color/7.2.0:
++ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
++ engines: {node: '>=8'}
++ dependencies:
++ has-flag: 4.0.0
++ dev: false
++
++ /supports-preserve-symlinks-flag/1.0.0:
++ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
++ engines: {node: '>= 0.4'}
++ dev: false
++
++ /synckit/0.8.4:
++ resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==}
++ engines: {node: ^14.18.0 || >=16.0.0}
++ dependencies:
++ '@pkgr/utils': 2.3.1
++ tslib: 2.4.1
++ dev: false
++
++ /tapable/2.2.1:
++ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
++ engines: {node: '>=6'}
++ dev: false
++
++ /text-table/0.2.0:
++ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
++ dev: false
++
++ /tiny-glob/0.2.9:
++ resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
++ dependencies:
++ globalyzer: 0.1.0
++ globrex: 0.1.2
++ dev: false
++
++ /to-regex-range/5.0.1:
++ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
++ engines: {node: '>=8.0'}
++ dependencies:
++ is-number: 7.0.0
++ dev: false
++
++ /tsconfig-paths/3.14.1:
++ resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==}
++ dependencies:
++ '@types/json5': 0.0.29
++ json5: 1.0.2
++ minimist: 1.2.7
++ strip-bom: 3.0.0
++ dev: false
++
++ /tslib/1.14.1:
++ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
++ dev: false
++
++ /tslib/2.4.1:
++ resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
++ dev: false
++
++ /tsutils/3.21.0_typescript@4.9.4:
++ resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
++ engines: {node: '>= 6'}
++ peerDependencies:
++ typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
++ dependencies:
++ tslib: 1.14.1
++ typescript: 4.9.4
++ dev: false
++
++ /type-check/0.4.0:
++ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
++ engines: {node: '>= 0.8.0'}
++ dependencies:
++ prelude-ls: 1.2.1
++ dev: false
++
++ /type-fest/0.20.2:
++ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
++ engines: {node: '>=10'}
++ dev: false
++
++ /typescript/4.9.4:
++ resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==}
++ engines: {node: '>=4.2.0'}
++ hasBin: true
++ dev: false
++
++ /unbox-primitive/1.0.2:
++ resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
++ dependencies:
++ call-bind: 1.0.2
++ has-bigints: 1.0.2
++ has-symbols: 1.0.3
++ which-boxed-primitive: 1.0.2
++ dev: false
++
++ /uri-js/4.4.1:
++ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
++ dependencies:
++ punycode: 2.1.1
++ dev: false
++
++ /which-boxed-primitive/1.0.2:
++ resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
++ dependencies:
++ is-bigint: 1.0.4
++ is-boolean-object: 1.1.2
++ is-number-object: 1.0.7
++ is-string: 1.0.7
++ is-symbol: 1.0.4
++ dev: false
++
++ /which/2.0.2:
++ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
++ engines: {node: '>= 8'}
++ hasBin: true
++ dependencies:
++ isexe: 2.0.0
++ dev: false
++
++ /word-wrap/1.2.3:
++ resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
++ engines: {node: '>=0.10.0'}
++ dev: false
++
++ /wrappy/1.0.2:
++ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
++ dev: false
++
++ /yallist/4.0.0:
++ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
++ dev: false
++
++ /yocto-queue/0.1.0:
++ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
++ engines: {node: '>=10'}
++ dev: false
++
++ file:../..:
++ resolution: {directory: ../.., type: directory}
++ name: '@toots/shine.js'
++ version: 1.0.1
++ dev: false
+diff --git a/js/test/nextjs/public/encode.wav b/js/test/nextjs/public/encode.wav
+new file mode 120000
+index 0000000..0f5f127
+--- /dev/null
++++ b/js/test/nextjs/public/encode.wav
+@@ -0,0 +1 @@
++../lib/encode.wav
+\ No newline at end of file
+diff --git a/js/test/nextjs/tsconfig.json b/js/test/nextjs/tsconfig.json
+new file mode 100644
+index 0000000..66151f2
+--- /dev/null
++++ b/js/test/nextjs/tsconfig.json
+@@ -0,0 +1,23 @@
++{
++ "compilerOptions": {
++ "target": "es5",
++ "lib": ["dom", "dom.iterable", "esnext"],
++ "allowJs": true,
++ "skipLibCheck": true,
++ "strict": true,
++ "forceConsistentCasingInFileNames": true,
++ "noEmit": true,
++ "esModuleInterop": true,
++ "module": "esnext",
++ "moduleResolution": "node",
++ "resolveJsonModule": true,
++ "isolatedModules": true,
++ "jsx": "preserve",
++ "incremental": true,
++ "paths": {
++ "@shine/*": ["./*"]
++ }
++ },
++ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
++ "exclude": ["node_modules"]
++}
+diff --git a/js/test/node/encode.coffee b/js/test/node/encode.coffee
+deleted file mode 100644
+index 3e1ba72..0000000
+--- a/js/test/node/encode.coffee
++++ /dev/null
+@@ -1,58 +0,0 @@
+-Shine = require "../../dist/libshine.js"
+-{Reader} = require "wav"
+-fs = require "fs"
+-
+-console.log ""
+-console.log "Executing encoding test"
+-
+-bitrate = 128
+-str = fs.createReadStream "../lib/encode.wav"
+-fd = fs.openSync "./encode.mp3", "w"
+-reader = new Reader
+-
+-str.pipe reader
+-
+-write = (encoded) ->
+- return unless encoded.length > 0
+- buf = new Buffer encoded
+- fs.writeSync fd, buf, 0, buf.length
+-
+-reader.on "format", (format) ->
+- console.log "Got WAV file."
+-
+- shine = new Shine
+- bitrate: bitrate
+- samplerate: format.sampleRate
+- channels: format.channels
+-
+- console.log "Encoding.."
+- started = new Date
+- duration = 0.0
+- samplerate = parseFloat format.sampleRate
+-
+- reader.on "data", (buf) ->
+- samples = buf.length/(2*format.channels)
+-
+- duration += parseFloat(samples) / samplerate
+-
+- write shine.encode(convertInterleavedBuffer(buf, format.channels, samples))
+-
+- reader.on "end", ->
+- write shine.close()
+-
+- ended = new Date
+- encodingTime = (ended.getTime() - started.getTime())/1000
+- console.log "Done encoding."
+- console.log "File duration: #{duration.toFixed(2)} seconds"
+- console.log "Encoding time: #{encodingTime.toFixed(2)} seconds"
+- console.log "Encoding rate: #{(duration/encodingTime).toFixed(2)}X"
+- process.exit 0
+-
+-convertInterleavedBuffer = (buf, channels, samples) ->
+- ret = new Array channels
+- for chan in [0..channels-1]
+- ret[chan] = new Int16Array samples
+- for i in [0..samples-1]
+- ret[chan][i] = buf.readInt16LE 2*(i*channels + chan)
+-
+- ret
+diff --git a/js/test/node/encode.ts b/js/test/node/encode.ts
+new file mode 100644
+index 0000000..cc971e1
+--- /dev/null
++++ b/js/test/node/encode.ts
+@@ -0,0 +1,73 @@
++import { Shine } from "@toots/shine.js";
++import { Reader } from "wav";
++import fs from "fs";
++
++const convertInterleavedBuffer = (buf, channels, samples) => {
++ const ret = new Array(channels);
++ for (let chan = 0; chan < channels; chan++) {
++ ret[chan] = new Int16Array(samples);
++ for (let i = 0; i < samples; i++) {
++ ret[chan][i] = buf.readInt16LE(2 * (i * channels + chan));
++ }
++ }
++
++ return ret;
++};
++
++const exec = async () => {
++ await Shine.initialized;
++
++ console.log("");
++ console.log("Executing encoding test");
++
++ const bitrate = 128;
++ const str = fs.createReadStream("../lib/encode.wav");
++ const fd = fs.openSync("./encode.mp3", "w");
++ const reader = new Reader();
++
++ str.pipe(reader);
++
++ const write = encoded => {
++ if (encoded.length <= 0) return;
++
++ const buf = Buffer.from(encoded);
++ fs.writeSync(fd, buf, 0, buf.length);
++ };
++
++ reader.on("format", format => {
++ console.log("Got WAV file.");
++
++ const shine = new Shine({
++ bitrate: bitrate,
++ samplerate: format.sampleRate,
++ channels: format.channels,
++ });
++
++ console.log("Encoding..");
++ const started = new Date();
++ let duration = 0.0;
++ const samplerate = format.sampleRate;
++
++ reader.on("data", buf => {
++ const samples = buf.length / (2 * format.channels);
++
++ duration += samples / samplerate;
++
++ write(shine.encode(convertInterleavedBuffer(buf, format.channels, samples)));
++ });
++
++ reader.on("end", () => {
++ write(shine.close());
++
++ const ended = new Date();
++ const encodingTime = (ended.getTime() - started.getTime()) / 1000;
++ console.log("Done encoding.");
++ console.log(`File duration: ${duration.toFixed(2)} seconds`);
++ console.log(`Encoding time: ${encodingTime.toFixed(2)} seconds`);
++ console.log(`Encoding rate: ${(duration / encodingTime).toFixed(2)}X`);
++ process.exit(0);
++ });
++ });
++};
++
++exec();
+diff --git a/js/test/node/package-lock.json b/js/test/node/package-lock.json
+index 0096742..752a7c7 100644
+--- a/js/test/node/package-lock.json
++++ b/js/test/node/package-lock.json
+@@ -1,49 +1,493 @@
+ {
+ "name": "shine-js-test",
+ "version": "0.0.1",
+- "lockfileVersion": 1,
++ "lockfileVersion": 2,
+ "requires": true,
++ "packages": {
++ "": {
++ "name": "shine-js-test",
++ "version": "0.0.1",
++ "dependencies": {
++ "@toots/shine.js": "file:../..",
++ "@types/node": "^18.11.18",
++ "ts-node": "^10.9.1",
++ "typescript": "^4.9.4",
++ "wav": "^1.0.2"
++ }
++ },
++ "../..": {
++ "name": "@toots/shine.js",
++ "version": "1.0.1",
++ "license": "LGPL-2.0-only"
++ },
++ "node_modules/@cspotcode/source-map-support": {
++ "version": "0.8.1",
++ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
++ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
++ "dependencies": {
++ "@jridgewell/trace-mapping": "0.3.9"
++ },
++ "engines": {
++ "node": ">=12"
++ }
++ },
++ "node_modules/@jridgewell/resolve-uri": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
++ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
++ "engines": {
++ "node": ">=6.0.0"
++ }
++ },
++ "node_modules/@jridgewell/sourcemap-codec": {
++ "version": "1.4.14",
++ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
++ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
++ },
++ "node_modules/@jridgewell/trace-mapping": {
++ "version": "0.3.9",
++ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
++ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
++ "dependencies": {
++ "@jridgewell/resolve-uri": "^3.0.3",
++ "@jridgewell/sourcemap-codec": "^1.4.10"
++ }
++ },
++ "node_modules/@toots/shine.js": {
++ "resolved": "../..",
++ "link": true
++ },
++ "node_modules/@tsconfig/node10": {
++ "version": "1.0.9",
++ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
++ "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA=="
++ },
++ "node_modules/@tsconfig/node12": {
++ "version": "1.0.11",
++ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
++ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="
++ },
++ "node_modules/@tsconfig/node14": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
++ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="
++ },
++ "node_modules/@tsconfig/node16": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
++ "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ=="
++ },
++ "node_modules/@types/node": {
++ "version": "18.11.18",
++ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
++ "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
++ },
++ "node_modules/acorn": {
++ "version": "8.8.1",
++ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
++ "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
++ "bin": {
++ "acorn": "bin/acorn"
++ },
++ "engines": {
++ "node": ">=0.4.0"
++ }
++ },
++ "node_modules/acorn-walk": {
++ "version": "8.2.0",
++ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
++ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
++ "engines": {
++ "node": ">=0.4.0"
++ }
++ },
++ "node_modules/arg": {
++ "version": "4.1.3",
++ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
++ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="
++ },
++ "node_modules/buffer-alloc": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
++ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
++ "dependencies": {
++ "buffer-alloc-unsafe": "^1.1.0",
++ "buffer-fill": "^1.0.0"
++ }
++ },
++ "node_modules/buffer-alloc-unsafe": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
++ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
++ },
++ "node_modules/buffer-fill": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
++ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
++ },
++ "node_modules/buffer-from": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
++ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
++ },
++ "node_modules/core-util-is": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
++ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
++ },
++ "node_modules/create-require": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
++ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="
++ },
++ "node_modules/debug": {
++ "version": "2.6.9",
++ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
++ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
++ "dependencies": {
++ "ms": "2.0.0"
++ }
++ },
++ "node_modules/diff": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
++ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
++ "engines": {
++ "node": ">=0.3.1"
++ }
++ },
++ "node_modules/inherits": {
++ "version": "2.0.3",
++ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
++ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
++ },
++ "node_modules/isarray": {
++ "version": "0.0.1",
++ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
++ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
++ },
++ "node_modules/make-error": {
++ "version": "1.3.6",
++ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
++ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
++ },
++ "node_modules/ms": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
++ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
++ },
++ "node_modules/readable-stream": {
++ "version": "1.1.14",
++ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
++ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
++ "dependencies": {
++ "core-util-is": "~1.0.0",
++ "inherits": "~2.0.1",
++ "isarray": "0.0.1",
++ "string_decoder": "~0.10.x"
++ }
++ },
++ "node_modules/stream-parser": {
++ "version": "0.3.1",
++ "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz",
++ "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=",
++ "dependencies": {
++ "debug": "2"
++ }
++ },
++ "node_modules/string_decoder": {
++ "version": "0.10.31",
++ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
++ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
++ },
++ "node_modules/ts-node": {
++ "version": "10.9.1",
++ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
++ "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
++ "dependencies": {
++ "@cspotcode/source-map-support": "^0.8.0",
++ "@tsconfig/node10": "^1.0.7",
++ "@tsconfig/node12": "^1.0.7",
++ "@tsconfig/node14": "^1.0.0",
++ "@tsconfig/node16": "^1.0.2",
++ "acorn": "^8.4.1",
++ "acorn-walk": "^8.1.1",
++ "arg": "^4.1.0",
++ "create-require": "^1.1.0",
++ "diff": "^4.0.1",
++ "make-error": "^1.1.1",
++ "v8-compile-cache-lib": "^3.0.1",
++ "yn": "3.1.1"
++ },
++ "bin": {
++ "ts-node": "dist/bin.js",
++ "ts-node-cwd": "dist/bin-cwd.js",
++ "ts-node-esm": "dist/bin-esm.js",
++ "ts-node-script": "dist/bin-script.js",
++ "ts-node-transpile-only": "dist/bin-transpile.js",
++ "ts-script": "dist/bin-script-deprecated.js"
++ },
++ "peerDependencies": {
++ "@swc/core": ">=1.2.50",
++ "@swc/wasm": ">=1.2.50",
++ "@types/node": "*",
++ "typescript": ">=2.7"
++ },
++ "peerDependenciesMeta": {
++ "@swc/core": {
++ "optional": true
++ },
++ "@swc/wasm": {
++ "optional": true
++ }
++ }
++ },
++ "node_modules/typescript": {
++ "version": "4.9.4",
++ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
++ "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
++ "bin": {
++ "tsc": "bin/tsc",
++ "tsserver": "bin/tsserver"
++ },
++ "engines": {
++ "node": ">=4.2.0"
++ }
++ },
++ "node_modules/v8-compile-cache-lib": {
++ "version": "3.0.1",
++ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
++ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
++ },
++ "node_modules/wav": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/wav/-/wav-1.0.2.tgz",
++ "integrity": "sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==",
++ "dependencies": {
++ "buffer-alloc": "^1.1.0",
++ "buffer-from": "^1.0.0",
++ "debug": "^2.2.0",
++ "readable-stream": "^1.1.14",
++ "stream-parser": "^0.3.1"
++ }
++ },
++ "node_modules/yn": {
++ "version": "3.1.1",
++ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
++ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
++ "engines": {
++ "node": ">=6"
++ }
++ }
++ },
+ "dependencies": {
+- "coffee-script": {
+- "version": "1.6.3",
+- "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.3.tgz",
+- "integrity": "sha1-Y1XTLPGwTN/2tITl5xF4Ky8MOb4="
++ "@cspotcode/source-map-support": {
++ "version": "0.8.1",
++ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
++ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
++ "requires": {
++ "@jridgewell/trace-mapping": "0.3.9"
++ }
++ },
++ "@jridgewell/resolve-uri": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
++ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
++ },
++ "@jridgewell/sourcemap-codec": {
++ "version": "1.4.14",
++ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
++ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
++ },
++ "@jridgewell/trace-mapping": {
++ "version": "0.3.9",
++ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
++ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
++ "requires": {
++ "@jridgewell/resolve-uri": "^3.0.3",
++ "@jridgewell/sourcemap-codec": "^1.4.10"
++ }
++ },
++ "@toots/shine.js": {
++ "version": "file:../.."
++ },
++ "@tsconfig/node10": {
++ "version": "1.0.9",
++ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
++ "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA=="
++ },
++ "@tsconfig/node12": {
++ "version": "1.0.11",
++ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
++ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="
++ },
++ "@tsconfig/node14": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
++ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="
++ },
++ "@tsconfig/node16": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
++ "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ=="
++ },
++ "@types/node": {
++ "version": "18.11.18",
++ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
++ "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
++ },
++ "acorn": {
++ "version": "8.8.1",
++ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
++ "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA=="
++ },
++ "acorn-walk": {
++ "version": "8.2.0",
++ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
++ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA=="
++ },
++ "arg": {
++ "version": "4.1.3",
++ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
++ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="
++ },
++ "buffer-alloc": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
++ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
++ "requires": {
++ "buffer-alloc-unsafe": "^1.1.0",
++ "buffer-fill": "^1.0.0"
++ }
++ },
++ "buffer-alloc-unsafe": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
++ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
++ },
++ "buffer-fill": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
++ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
++ },
++ "buffer-from": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
++ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
++ },
++ "core-util-is": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
++ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
++ },
++ "create-require": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
++ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="
+ },
+ "debug": {
+- "version": "2.6.8",
+- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+- "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
++ "version": "2.6.9",
++ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
++ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
++ "diff": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
++ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
++ },
++ "inherits": {
++ "version": "2.0.3",
++ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
++ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
++ },
++ "isarray": {
++ "version": "0.0.1",
++ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
++ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
++ },
++ "make-error": {
++ "version": "1.3.6",
++ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
++ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
++ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "readable-stream": {
+- "version": "0.0.4",
+- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-0.0.4.tgz",
+- "integrity": "sha1-8y124/uGM0SlSNeZIwBxc2ZbO40="
++ "version": "1.1.14",
++ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
++ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
++ "requires": {
++ "core-util-is": "~1.0.0",
++ "inherits": "~2.0.1",
++ "isarray": "0.0.1",
++ "string_decoder": "~0.10.x"
++ }
+ },
+ "stream-parser": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz",
+ "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=",
+ "requires": {
+- "debug": "2.6.8"
++ "debug": "2"
+ }
+ },
++ "string_decoder": {
++ "version": "0.10.31",
++ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
++ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
++ },
++ "ts-node": {
++ "version": "10.9.1",
++ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
++ "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
++ "requires": {
++ "@cspotcode/source-map-support": "^0.8.0",
++ "@tsconfig/node10": "^1.0.7",
++ "@tsconfig/node12": "^1.0.7",
++ "@tsconfig/node14": "^1.0.0",
++ "@tsconfig/node16": "^1.0.2",
++ "acorn": "^8.4.1",
++ "acorn-walk": "^8.1.1",
++ "arg": "^4.1.0",
++ "create-require": "^1.1.0",
++ "diff": "^4.0.1",
++ "make-error": "^1.1.1",
++ "v8-compile-cache-lib": "^3.0.1",
++ "yn": "3.1.1"
++ }
++ },
++ "typescript": {
++ "version": "4.9.4",
++ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
++ "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg=="
++ },
++ "v8-compile-cache-lib": {
++ "version": "3.0.1",
++ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
++ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
++ },
+ "wav": {
+- "version": "0.1.0",
+- "resolved": "https://registry.npmjs.org/wav/-/wav-0.1.0.tgz",
+- "integrity": "sha1-5wTSp2nqIz858tZ5Xout1l9YsAk=",
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/wav/-/wav-1.0.2.tgz",
++ "integrity": "sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==",
+ "requires": {
+- "debug": "2.6.8",
+- "readable-stream": "0.0.4",
+- "stream-parser": "0.3.1"
++ "buffer-alloc": "^1.1.0",
++ "buffer-from": "^1.0.0",
++ "debug": "^2.2.0",
++ "readable-stream": "^1.1.14",
++ "stream-parser": "^0.3.1"
+ }
++ },
++ "yn": {
++ "version": "3.1.1",
++ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
++ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="
+ }
+ }
+ }
+diff --git a/js/test/node/package.json b/js/test/node/package.json
+index 5160dab..650299c 100644
+--- a/js/test/node/package.json
++++ b/js/test/node/package.json
+@@ -2,26 +2,16 @@
+ "name": "shine-js-test",
+ "description": "Test encoder for libshine.js",
+ "version": "0.0.1",
+- "homepage": "https://github.com/savonet/shine",
+ "author": "Romain Beauxis <toots@rastageeks.org",
+- "repository": {
+- "type": "git",
+- "url": "git://github.com/savonet/shine"
+- },
+- "bugs": {
+- "mail": "toots@rastageeks.org",
+- "url": "http://github.com/savonet/shine/issues"
+- },
+- "main": "test.coffee",
+ "scripts": {
+- "test": "coffee ./encode.coffee && coffee ./rounds.coffee"
+- },
+- "engine": {
+- "node": ">= 0.10.7",
+- "npm": "1"
++ "test": "ts-node ./encode.ts && ts-node ./rounds.ts"
+ },
+ "dependencies": {
+- "coffee-script": "1.6.3",
+- "wav": "0.1.0"
++ "@toots/shine.js": "file:../..",
++ "@types/node": "^18.11.18",
++ "@types/wav": "^1.0.1",
++ "ts-node": "^10.9.1",
++ "typescript": "^4.9.4",
++ "wav": "^1.0.2"
+ }
+ }
+diff --git a/js/test/node/pnpm-lock.yaml b/js/test/node/pnpm-lock.yaml
+new file mode 100644
+index 0000000..58a8b69
+--- /dev/null
++++ b/js/test/node/pnpm-lock.yaml
+@@ -0,0 +1,227 @@
++lockfileVersion: 5.4
++
++specifiers:
++ '@toots/shine.js': file:../..
++ '@types/node': ^18.11.18
++ '@types/wav': ^1.0.1
++ ts-node: ^10.9.1
++ typescript: ^4.9.4
++ wav: ^1.0.2
++
++dependencies:
++ '@toots/shine.js': file:../..
++ '@types/node': 18.11.18
++ '@types/wav': 1.0.1
++ ts-node: 10.9.1_awa2wsr5thmg3i7jqycphctjfq
++ typescript: 4.9.4
++ wav: 1.0.2
++
++packages:
++
++ /@cspotcode/source-map-support/0.8.1:
++ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
++ engines: {node: '>=12'}
++ dependencies:
++ '@jridgewell/trace-mapping': 0.3.9
++ dev: false
++
++ /@jridgewell/resolve-uri/3.1.0:
++ resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
++ engines: {node: '>=6.0.0'}
++ dev: false
++
++ /@jridgewell/sourcemap-codec/1.4.14:
++ resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
++ dev: false
++
++ /@jridgewell/trace-mapping/0.3.9:
++ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
++ dependencies:
++ '@jridgewell/resolve-uri': 3.1.0
++ '@jridgewell/sourcemap-codec': 1.4.14
++ dev: false
++
++ /@tsconfig/node10/1.0.9:
++ resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
++ dev: false
++
++ /@tsconfig/node12/1.0.11:
++ resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
++ dev: false
++
++ /@tsconfig/node14/1.0.3:
++ resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
++ dev: false
++
++ /@tsconfig/node16/1.0.3:
++ resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==}
++ dev: false
++
++ /@types/node/18.11.18:
++ resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==}
++ dev: false
++
++ /@types/wav/1.0.1:
++ resolution: {integrity: sha512-AKJeM5mqO1pdR2/HaTUQzSCm12No36KUM1larivXUmsLx+4JmMuC2Tv0kCdZzTx66h7IH2Xr92DGc9NQsXxa9Q==}
++ dependencies:
++ '@types/node': 18.11.18
++ dev: false
++
++ /acorn-walk/8.2.0:
++ resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
++ engines: {node: '>=0.4.0'}
++ dev: false
++
++ /acorn/8.8.1:
++ resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==}
++ engines: {node: '>=0.4.0'}
++ hasBin: true
++ dev: false
++
++ /arg/4.1.3:
++ resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
++ dev: false
++
++ /buffer-alloc-unsafe/1.1.0:
++ resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==}
++ dev: false
++
++ /buffer-alloc/1.2.0:
++ resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==}
++ dependencies:
++ buffer-alloc-unsafe: 1.1.0
++ buffer-fill: 1.0.0
++ dev: false
++
++ /buffer-fill/1.0.0:
++ resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==}
++ dev: false
++
++ /buffer-from/1.1.2:
++ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
++ dev: false
++
++ /core-util-is/1.0.3:
++ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
++ dev: false
++
++ /create-require/1.1.1:
++ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
++ dev: false
++
++ /debug/2.6.9:
++ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
++ peerDependencies:
++ supports-color: '*'
++ peerDependenciesMeta:
++ supports-color:
++ optional: true
++ dependencies:
++ ms: 2.0.0
++ dev: false
++
++ /diff/4.0.2:
++ resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
++ engines: {node: '>=0.3.1'}
++ dev: false
++
++ /inherits/2.0.4:
++ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
++ dev: false
++
++ /isarray/0.0.1:
++ resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
++ dev: false
++
++ /make-error/1.3.6:
++ resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
++ dev: false
++
++ /ms/2.0.0:
++ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
++ dev: false
++
++ /readable-stream/1.1.14:
++ resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==}
++ dependencies:
++ core-util-is: 1.0.3
++ inherits: 2.0.4
++ isarray: 0.0.1
++ string_decoder: 0.10.31
++ dev: false
++
++ /stream-parser/0.3.1:
++ resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==}
++ dependencies:
++ debug: 2.6.9
++ transitivePeerDependencies:
++ - supports-color
++ dev: false
++
++ /string_decoder/0.10.31:
++ resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
++ dev: false
++
++ /ts-node/10.9.1_awa2wsr5thmg3i7jqycphctjfq:
++ resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
++ hasBin: true
++ peerDependencies:
++ '@swc/core': '>=1.2.50'
++ '@swc/wasm': '>=1.2.50'
++ '@types/node': '*'
++ typescript: '>=2.7'
++ peerDependenciesMeta:
++ '@swc/core':
++ optional: true
++ '@swc/wasm':
++ optional: true
++ dependencies:
++ '@cspotcode/source-map-support': 0.8.1
++ '@tsconfig/node10': 1.0.9
++ '@tsconfig/node12': 1.0.11
++ '@tsconfig/node14': 1.0.3
++ '@tsconfig/node16': 1.0.3
++ '@types/node': 18.11.18
++ acorn: 8.8.1
++ acorn-walk: 8.2.0
++ arg: 4.1.3
++ create-require: 1.1.1
++ diff: 4.0.2
++ make-error: 1.3.6
++ typescript: 4.9.4
++ v8-compile-cache-lib: 3.0.1
++ yn: 3.1.1
++ dev: false
++
++ /typescript/4.9.4:
++ resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==}
++ engines: {node: '>=4.2.0'}
++ hasBin: true
++ dev: false
++
++ /v8-compile-cache-lib/3.0.1:
++ resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
++ dev: false
++
++ /wav/1.0.2:
++ resolution: {integrity: sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==}
++ dependencies:
++ buffer-alloc: 1.2.0
++ buffer-from: 1.1.2
++ debug: 2.6.9
++ readable-stream: 1.1.14
++ stream-parser: 0.3.1
++ transitivePeerDependencies:
++ - supports-color
++ dev: false
++
++ /yn/3.1.1:
++ resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
++ engines: {node: '>=6'}
++ dev: false
++
++ file:../..:
++ resolution: {directory: ../.., type: directory}
++ name: '@toots/shine.js'
++ version: 1.0.3
++ dev: false
+diff --git a/js/test/node/rounds.coffee b/js/test/node/rounds.coffee
+deleted file mode 100644
+index 7be6690..0000000
+--- a/js/test/node/rounds.coffee
++++ /dev/null
+@@ -1,6 +0,0 @@
+-Shine = require "../../dist/libshine.js"
+-runRoundsTest = require "../lib/rounds.js"
+-
+-console.log ""
+-runRoundsTest Shine, (s) ->
+- console.log s
+diff --git a/js/test/node/rounds.ts b/js/test/node/rounds.ts
+new file mode 100644
+index 0000000..6f3e664
+--- /dev/null
++++ b/js/test/node/rounds.ts
+@@ -0,0 +1,11 @@
++import { Shine } from "@toots/shine.js";
++import runRoundsTest from "../lib/rounds";
++
++const exec = async () => {
++ await Shine.initialized;
++
++ console.log("");
++ runRoundsTest(Shine, s => console.log(s));
++};
++
++exec();
+diff --git a/js/test/node/tsconfig.json b/js/test/node/tsconfig.json
+new file mode 100644
+index 0000000..d1045e4
+--- /dev/null
++++ b/js/test/node/tsconfig.json
+@@ -0,0 +1,8 @@
++{
++ "include": ["**/*.ts"],
++ "compilerOptions": {
++ "allowJs": true,
++ "skipLibCheck": true,
++ "esModuleInterop": true
++ }
++}
+diff --git a/src/bin/main.c b/src/bin/main.c
+index ab16fea..b7b70a4 100644
+--- a/src/bin/main.c
++++ b/src/bin/main.c
+@@ -35,32 +35,25 @@ int _verbose = 0;
+ int stereo = STEREO;
+ int force_mono = 0;
+
+-int verbose()
+-{
+- return _verbose;
+-}
++int verbose() { return _verbose; }
+
+ /* Write out the MP3 file */
+-int write_mp3(long bytes, void *buffer, void *config)
+-{
+- return fwrite(buffer, sizeof(unsigned char), bytes, outfile) / sizeof(unsigned char);
++int write_mp3(long bytes, void *buffer, void *config) {
++ return fwrite(buffer, sizeof(unsigned char), bytes, outfile) /
++ sizeof(unsigned char);
+ }
+
+ /* Output error message and exit */
+-void error(char *s)
+-{
++void error(char *s) {
+ fprintf(stderr, "Error: %s\n", s);
+ exit(1);
+ }
+
+-static void print_name()
+-{
+- printf("shineenc (Liquidsoap version)\n");
+-}
++static void print_name() { printf("shineenc (Liquidsoap version)\n"); }
+
+-static void print_usage()
+-{
++static void print_usage() {
+ printf("Usage: shineenc [options] <infile> <outfile>\n\n");
++ printf("Use \"-\" for standard input or output.\n\n");
+ printf("Options:\n");
+ printf(" -h this help message\n");
+ printf(" -b <bitrate> set the bitrate [8-320], default 128kbit\n");
+@@ -73,88 +66,88 @@ static void print_usage()
+ }
+
+ /* Use these default settings, can be overridden */
+-static void set_defaults(shine_config_t *config)
+-{
++static void set_defaults(shine_config_t *config) {
+ shine_set_config_mpeg_defaults(&config->mpeg);
+ }
+
+ /* Parse command line arguments */
+-static int parse_command(int argc, char** argv, shine_config_t *config)
+-{
++static int parse_command(int argc, char **argv, shine_config_t *config) {
+ int i = 0;
+
+- if(argc < 3) return 0;
++ if (argc < 3)
++ return 0;
+
+ while (argv[++i][0] == '-' && argv[i][1] != '\000' && argv[i][1] != ' ')
+ switch (argv[i][1]) {
+- case 'b':
+- config->mpeg.bitr = atoi(argv[++i]);
+- break;
+-
+- case 'm':
+- force_mono = 1;
+- break;
+-
+- case 'j':
+- stereo = JOINT_STEREO;
+- break;
+-
+- case 'd':
+- stereo = DUAL_CHANNEL;
+- break;
+-
+- case 'c':
+- config->mpeg.copyright = 1;
+- break;
+-
+- case 'q':
+- quiet = 1;
+- _verbose = 0;
+- break;
+-
+- case 'v':
+- _verbose = 1;
+- quiet = 0;
+- break;
+-
+- case 'h':
+- default :
+- return 0;
++ case 'b':
++ config->mpeg.bitr = atoi(argv[++i]);
++ break;
++
++ case 'm':
++ force_mono = 1;
++ break;
++
++ case 'j':
++ stereo = JOINT_STEREO;
++ break;
++
++ case 'd':
++ stereo = DUAL_CHANNEL;
++ break;
++
++ case 'c':
++ config->mpeg.copyright = 1;
++ break;
++
++ case 'q':
++ quiet = 1;
++ _verbose = 0;
++ break;
++
++ case 'v':
++ _verbose = 1;
++ quiet = 0;
++ break;
++
++ case 'h':
++ default:
++ return 0;
+ }
+
+- if (argc - i != 2) return 0;
++ if (argc - i != 2)
++ return 0;
+ infname = argv[i++];
+ outfname = argv[i];
+ return 1;
+ }
+
+ /* Print some info about what we're going to encode */
+-static void check_config(shine_config_t *config)
+-{
+- static char *version_names[4] = { "2.5", "reserved", "II", "I" };
+- static char *mode_names[4] = { "stereo", "joint-stereo", "dual-channel", "mono" };
+- static char *demp_names[4] = { "none", "50/15us", "", "CITT" };
++static void check_config(shine_config_t *config) {
++ static char *version_names[4] = {"2.5", "reserved", "II", "I"};
++ static char *mode_names[4] = {"stereo", "joint-stereo", "dual-channel",
++ "mono"};
++ static char *demp_names[4] = {"none", "50/15us", "", "CITT"};
+
+ printf("MPEG-%s layer III, %s Psychoacoustic Model: Shine\n",
+- version_names[shine_check_config(config->wave.samplerate, config->mpeg.bitr)],
+- mode_names[config->mpeg.mode]);
++ version_names[shine_check_config(config->wave.samplerate,
++ config->mpeg.bitr)],
++ mode_names[config->mpeg.mode]);
+ printf("Bitrate: %d kbps ", config->mpeg.bitr);
+- printf("De-emphasis: %s %s %s\n",
+- demp_names[config->mpeg.emph],
+- ((config->mpeg.original) ? "Original" : ""),
+- ((config->mpeg.copyright) ? "(C)" : ""));
++ printf("De-emphasis: %s %s %s\n", demp_names[config->mpeg.emph],
++ ((config->mpeg.original) ? "Original" : ""),
++ ((config->mpeg.copyright) ? "(C)" : ""));
+ printf("Encoding \"%s\" to \"%s\"\n", infname, outfname);
+ }
+
+-int main(int argc, char **argv)
+-{
+- wave_t wave;
+- time_t start_time, end_time;
+- int16_t buffer[2*SHINE_MAX_SAMPLES];
++int main(int argc, char **argv) {
++ wave_t wave;
++ time_t start_time, end_time;
++ int16_t buffer[2 * SHINE_MAX_SAMPLES];
+ shine_config_t config;
+- shine_t s;
+- int written;
+- unsigned char *data;
++ shine_t s;
++ int written;
++ unsigned char *data;
++ int samples_per_pass;
+
+ time(&start_time);
+
+@@ -168,7 +161,8 @@ int main(int argc, char **argv)
+
+ quiet = quiet || !strcmp(outfname, "-");
+
+- if (!quiet) print_name();
++ if (!quiet)
++ print_name();
+
+ /* Open the input file and fill the config shine_wave_t header */
+ if (!wave_open(infname, &wave, &config, quiet))
+@@ -205,17 +199,17 @@ int main(int argc, char **argv)
+ // assert(s != NULL);
+
+ /* Print some info about the file about to be created (optional) */
+- if (!quiet) check_config(&config);
++ if (!quiet)
++ check_config(&config);
+
+- int samples_per_pass = shine_samples_per_pass(s);
++ samples_per_pass = shine_samples_per_pass(s);
+
+ /* All the magic happens here */
+ while (wave_get(buffer, &wave, samples_per_pass)) {
+ data = shine_encode_buffer_interleaved(s, buffer, &written);
+- if ( write_mp3(written, data, &config) != written )
+- {
+- fprintf(stderr, "shineenc: write error\n");
+- return 1;
++ if (write_mp3(written, data, &config) != written) {
++ fprintf(stderr, "shineenc: write error\n");
++ return 1;
+ }
+ }
+
+@@ -235,7 +229,9 @@ int main(int argc, char **argv)
+ time(&end_time);
+ end_time -= start_time;
+ if (!quiet)
+- printf("Finished in %02ld:%02ld:%02ld (%01.1fx realtime)\n", end_time / 3600, (end_time / 60) % 60, end_time % 60, (float)wave.duration / (float)end_time);
++ printf("Finished in %02ld:%02ld:%02ld (%01.1fx realtime)\n",
++ end_time / 3600, (end_time / 60) % 60, end_time % 60,
++ (float)wave.duration / (float)end_time);
+
+ return 0;
+ }
+diff --git a/src/bin/main.h b/src/bin/main.h
+index 52fbbb2..7ab9691 100644
+--- a/src/bin/main.h
++++ b/src/bin/main.h
+@@ -2,6 +2,6 @@
+ #define MAIN_H
+
+ void error(char *s);
+-int verbose();
++int verbose();
+
+ #endif
+diff --git a/src/bin/wave.c b/src/bin/wave.c
+index 5d19004..3c7ab81 100644
+--- a/src/bin/wave.c
++++ b/src/bin/wave.c
+@@ -9,17 +9,32 @@
+ #include "layer3.h"
+
+ /* Local header */
+-#include <stdint.h>
+-#include <string.h>
+ #include "main.h"
+ #include "wave.h"
++#include <stdint.h>
++#include <string.h>
+
+ /* RISC OS specifics */
+-#define WAVE 0xfb1 /* Wave filetype */
+-#define DATA 0xffd /* Data filetype */
++#define WAVE 0xfb1 /* Wave filetype */
++#define DATA 0xffd /* Data filetype */
+
+ #define MODE_MONO 3
+
++#ifdef SHINE_BIG_ENDIAN
++#if defined(SHINE_HAVE_BSWAP_H)
++#include <byteswap.h>
++#elif defined(__GNUC__) && \
++ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
++#define bswap_16(x) __builtin_bswap16(x)
++#define bswap_32(x) __builtin_bswap32(x)
++#else
++#define bswap_16(x) ((((x) >> 8) & 0xff) | (((x)&0xff) << 8))
++#define bswap_32(x) \
++ ((((x)&0xFF) << 24) | (((x) >> 24) & 0xFF) | (((x)&0x0000FF00) << 8) | \
++ (((x)&0x00FF0000) >> 8))
++#endif
++#endif
++
+ typedef struct {
+ char id[4];
+ uint32_t length;
+@@ -32,14 +47,28 @@ typedef struct {
+
+ typedef struct {
+ riff_chunk_header_t header;
+- uint16_t format; /* MS PCM = 1 */
+- uint16_t channels; /* channels, mono = 1, stereo = 2 */
+- uint32_t sample_rate; /* samples per second = 44100 */
+- uint32_t byte_rate; /* bytes per second = samp_rate * byte_samp = 176400 */
+- uint16_t frame_size; /* block align (bytes per sample) = channels * bits_per_sample / 8 = 4 */
+- uint16_t depth; /* bits per sample = 16 for MS PCM (format specific) */
++ uint16_t format; /* MS PCM = 1 */
++ uint16_t channels; /* channels, mono = 1, stereo = 2 */
++ uint32_t sample_rate; /* samples per second = 44100 */
++ uint32_t byte_rate; /* bytes per second = samp_rate * byte_samp = 176400 */
++ uint16_t frame_size; /* block align (bytes per sample) = channels *
++ bits_per_sample / 8 = 4 */
++ uint16_t depth; /* bits per sample = 16 for MS PCM (format specific) */
+ } fmt_chunk_t;
+
++#ifdef SHINE_BIG_ENDIAN
++#define native_fmt_chunk(fmt) \
++ { \
++ fmt.header.length = bswap_32(fmt.header.length); \
++ fmt.format = bswap_16(fmt.format); \
++ fmt.channels = bswap_16(fmt.channels); \
++ fmt.sample_rate = bswap_32(fmt.sample_rate); \
++ fmt.byte_rate = bswap_32(fmt.byte_rate); \
++ fmt.frame_size = bswap_16(fmt.frame_size); \
++ fmt.depth = bswap_16(fmt.depth); \
++ }
++#endif
++
+ void wave_seek(FILE *file, int has_seek, uint32_t bytes) {
+ uint32_t i;
+ if (has_seek == 1)
+@@ -50,15 +79,15 @@ void wave_seek(FILE *file, int has_seek, uint32_t bytes) {
+ }
+ }
+
+-unsigned char wave_get_chunk_header(FILE *file, int has_seek, const char id[4], riff_chunk_header_t *header)
+-{
++unsigned char wave_get_chunk_header(FILE *file, int has_seek, const char id[4],
++ riff_chunk_header_t *header) {
+ unsigned char found = 0;
+ uint32_t chunk_length;
+
+ if (verbose())
+ fprintf(stderr, "Looking for chunk '%s'\n", id);
+
+- while(!found) {
++ while (!found) {
+ if (fread(header, sizeof(riff_chunk_header_t), 1, file) != 1) {
+ if (feof(file))
+ return 0;
+@@ -69,24 +98,20 @@ unsigned char wave_get_chunk_header(FILE *file, int has_seek, const char id[4],
+ /* chunks must be word-aligned, chunk data doesn't need to */
+ chunk_length = header->length + header->length % 2;
+ if (verbose()) {
+- fprintf(stderr, "Found chunk '%.4s', length: %u\n", header->id, header->length);
++ fprintf(stderr, "Found chunk '%.4s', length: %u\n", header->id,
++ header->length);
+ }
+
+ if (strncmp(header->id, id, 4) == 0)
+ return 1;
+-
++
+ wave_seek(file, has_seek, chunk_length);
+ }
+
+ return 1;
+ }
+
+-
+-void wave_close(wave_t *wave)
+-{
+- fclose(wave->file);
+-}
+-
++void wave_close(wave_t *wave) { fclose(wave->file); }
+
+ /*
+ * wave_open:
+@@ -94,16 +119,17 @@ void wave_close(wave_t *wave)
+ * Opens and verifies the header of the Input Wave file. The file pointer is
+ * left pointing to the start of the samples.
+ */
+-unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config, int quiet)
+-{
+- static char *channel_mappings[] = { NULL, "mono", "stereo" };
++unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config,
++ int quiet) {
++ static char *channel_mappings[] = {NULL, "mono", "stereo"};
+ wave_chunk_t wave_chunk;
+ fmt_chunk_t fmt_chunk;
+ riff_chunk_header_t data_chunk;
+ uint32_t fmt_data, fmt_length;
+
+ if (!strcmp(fname, "-")) {
+- /* TODO: support raw PCM stream with commandline parameters specifying format */
++ /* TODO: support raw PCM stream with commandline parameters specifying
++ * format */
+ wave->file = stdin;
+ wave->has_seek = 0;
+ } else {
+@@ -124,14 +150,19 @@ unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config,
+ error("Not a WAVE audio file");
+
+ /* Check the fmt chunk */
+- if (!wave_get_chunk_header(wave->file, wave->has_seek, "fmt ", (riff_chunk_header_t *)&fmt_chunk))
++ if (!wave_get_chunk_header(wave->file, wave->has_seek, "fmt ",
++ (riff_chunk_header_t *)&fmt_chunk))
+ error("WAVE fmt chunk not found");
+
+ fmt_data = sizeof(fmt_chunk_t) - sizeof(riff_chunk_header_t);
+
+- if(fread(&fmt_chunk.format, fmt_data, 1, wave->file) != 1)
++ if (fread(&fmt_chunk.format, fmt_data, 1, wave->file) != 1)
+ error("Read error");
+
++#ifdef SHINE_BIG_ENDIAN
++ native_fmt_chunk(fmt_chunk);
++#endif
++
+ if (verbose())
+ fprintf(stderr, "WAVE format: %u\n", fmt_chunk.format);
+
+@@ -153,34 +184,31 @@ unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config,
+ if (!wave_get_chunk_header(wave->file, wave->has_seek, "data", &data_chunk))
+ error("WAVE data chunk not found");
+
+- config->wave.channels = fmt_chunk.channels;
++ config->wave.channels = fmt_chunk.channels;
+ config->wave.samplerate = fmt_chunk.sample_rate;
+
+ wave->channels = fmt_chunk.channels;
+- wave->length = data_chunk.length;
++ wave->length = data_chunk.length;
+ wave->duration = data_chunk.length / fmt_chunk.byte_rate;
+
+ if (!quiet)
+ printf("%s, %s %ldHz %ldbit, duration: %02ld:%02ld:%02ld\n",
+- "WAVE PCM Data", channel_mappings[fmt_chunk.channels], (long)fmt_chunk.sample_rate, (long)fmt_chunk.depth,
+- (long)wave->duration / 3600, (long)(wave->duration / 60) % 60, (long)wave->duration % 60);
++ "WAVE PCM Data", channel_mappings[fmt_chunk.channels],
++ (long)fmt_chunk.sample_rate, (long)fmt_chunk.depth,
++ (long)wave->duration / 3600, (long)(wave->duration / 60) % 60,
++ (long)wave->duration % 60);
+ return 1;
+ }
+
+ #ifdef SHINE_BIG_ENDIAN
+-#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
+-#define bswap_16(x) __builtin_bswap16(x)
+-#else
+-#define bswap_16(x) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
+-#endif
+-
+-void swap_buffer(int16_t *sample_buffer, int length)
+-{
++void swap_buffer(int16_t *sample_buffer, int length) {
+ int16_t *end = sample_buffer + length;
+
+ if (length >= 2 * sizeof(long) / sizeof(int16_t)) {
+- const unsigned long mask = (~0UL / 0xffff) * 0xff; /* 0x00ff00ff or 0x00ff00ff00ff00ff */
+- unsigned long *long_ptr = (unsigned long *)((unsigned long)sample_buffer & -sizeof(long));
++ const unsigned long mask =
++ (~0UL / 0xffff) * 0xff; /* 0x00ff00ff or 0x00ff00ff00ff00ff */
++ unsigned long *long_ptr =
++ (unsigned long *)((unsigned long)sample_buffer & -sizeof(long));
+
+ /* make sample_buffer aligned on word boundary */
+ if ((int16_t *)long_ptr != sample_buffer) {
+@@ -212,18 +240,19 @@ void swap_buffer(int16_t *sample_buffer, int length)
+ */
+
+ /* TODO: respect data chunk length */
+-int read_samples(int16_t *sample_buffer, int frame_size, FILE *file)
+-{
+- int samples_read=0;
++int read_samples(int16_t *sample_buffer, int frame_size, FILE *file) {
++ int samples_read = 0;
+
+- samples_read = fread(sample_buffer,sizeof(int16_t),frame_size, file);
++ samples_read = fread(sample_buffer, sizeof(int16_t), frame_size, file);
+
+ #ifdef SHINE_BIG_ENDIAN
+ swap_buffer(sample_buffer, samples_read);
+ #endif
+
+- if(samples_read<frame_size && samples_read>0) { /* Pad sample with zero's */
+- memset(sample_buffer + samples_read, 0, (frame_size - samples_read) * sizeof(int16_t));
++ if (samples_read < frame_size &&
++ samples_read > 0) { /* Pad sample with zero's */
++ memset(sample_buffer + samples_read, 0,
++ (frame_size - samples_read) * sizeof(int16_t));
+ samples_read = frame_size;
+ }
+
+@@ -236,8 +265,6 @@ int read_samples(int16_t *sample_buffer, int frame_size, FILE *file)
+ * Expects an interleaved 16bit pcm stream from read_samples, which it
+ * reads into the given buffer.
+ */
+-int wave_get(int16_t *buffer, wave_t *wave, int samp_per_pass)
+-{
+- return read_samples(buffer,samp_per_pass*wave->channels, wave->file);
++int wave_get(int16_t *buffer, wave_t *wave, int samp_per_pass) {
++ return read_samples(buffer, samp_per_pass * wave->channels, wave->file);
+ }
+-
+diff --git a/src/bin/wave.h b/src/bin/wave.h
+index 5a290a0..b77f0b5 100644
+--- a/src/bin/wave.h
++++ b/src/bin/wave.h
+@@ -4,15 +4,16 @@
+ #include <stdio.h>
+
+ typedef struct {
+- FILE *file;
+- int has_seek;
+- int channels;
+- long length;
+- long duration;
++ FILE *file;
++ int has_seek;
++ int channels;
++ long length;
++ long duration;
+ } wave_t;
+
+-unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config, int quiet);
+-int wave_get(int16_t *buffer, wave_t *wave, int samp_per_frame);
++unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config,
++ int quiet);
++int wave_get(int16_t *buffer, wave_t *wave, int samp_per_frame);
+ void wave_close(wave_t *wave);
+
+ #endif
+diff --git a/src/lib/bitstream.c b/src/lib/bitstream.c
+index 29afcb1..9408f2c 100644
+--- a/src/lib/bitstream.c
++++ b/src/lib/bitstream.c
+@@ -7,17 +7,16 @@
+ * Removed unused functions. Feb 2001 P.Everett
+ */
+
+-#include "types.h"
+ #include "bitstream.h"
++#include "types.h"
+
+-#if !defined(__APPLE__)
++#if !defined(__APPLE__) && !defined(__FreeBSD__)
+ #include <malloc.h>
+ #endif
+
+ /* open the device to write the bit stream into it */
+-void shine_open_bit_stream(bitstream_t *bs, int size)
+-{
+- bs->data = (unsigned char *)malloc(size*sizeof(unsigned char));
++void shine_open_bit_stream(bitstream_t *bs, int size) {
++ bs->data = (unsigned char *)malloc(size * sizeof(unsigned char));
+ bs->data_size = size;
+ bs->data_position = 0;
+ bs->cache = 0;
+@@ -25,8 +24,7 @@ void shine_open_bit_stream(bitstream_t *bs, int size)
+ }
+
+ /*close the device containing the bit stream */
+-void shine_close_bit_stream(bitstream_t *bs)
+-{
++void shine_close_bit_stream(bitstream_t *bs) {
+ if (bs->data)
+ free(bs->data);
+ }
+@@ -39,42 +37,40 @@ void shine_close_bit_stream(bitstream_t *bs)
+ * val = value to write into the buffer
+ * N = number of bits of val
+ */
+-void shine_putbits(bitstream_t *bs, unsigned int val, unsigned int N)
+-{
++void shine_putbits(bitstream_t *bs, unsigned int val, unsigned int N) {
+ #ifdef DEBUG
+- if (N > 32)
+- printf("Cannot write more than 32 bits at a time.\n");
+- if (N < 32 && (val >> N) != 0)
+- printf("Upper bits (higher than %d) are not all zeros.\n", N);
++ if (N > 32)
++ printf("Cannot write more than 32 bits at a time.\n");
++ if (N < 32 && (val >> N) != 0)
++ printf("Upper bits (higher than %d) are not all zeros.\n", N);
+ #endif
+
+- if (bs->cache_bits > N) {
+- bs->cache_bits -= N;
+- bs->cache |= val << bs->cache_bits;
+- } else {
+- if (bs->data_position + sizeof(unsigned int) >= bs->data_size) {
+- bs->data = (unsigned char *)realloc(bs->data, bs->data_size + (bs->data_size / 2));
+- bs->data_size += (bs->data_size / 2);
+- }
++ if (bs->cache_bits > N) {
++ bs->cache_bits -= N;
++ bs->cache |= val << bs->cache_bits;
++ } else {
++ if (bs->data_position + sizeof(unsigned int) >= bs->data_size) {
++ bs->data = (unsigned char *)realloc(bs->data,
++ bs->data_size + (bs->data_size / 2));
++ bs->data_size += (bs->data_size / 2);
++ }
+
+- N -= bs->cache_bits;
+- bs->cache |= val >> N;
++ N -= bs->cache_bits;
++ bs->cache |= val >> N;
+ #ifdef SHINE_BIG_ENDIAN
+- *(unsigned int*)(bs->data + bs->data_position) = bs->cache;
++ *(unsigned int *)(bs->data + bs->data_position) = bs->cache;
+ #else
+- *(unsigned int*)(bs->data + bs->data_position) = SWAB32(bs->cache);
++ *(unsigned int *)(bs->data + bs->data_position) = SWAB32(bs->cache);
+ #endif
+- bs->data_position += sizeof(unsigned int);
+- bs->cache_bits = 32 - N;
+- if (N != 0)
+- bs->cache = val << bs->cache_bits;
+- else
+- bs->cache = 0;
+- }
++ bs->data_position += sizeof(unsigned int);
++ bs->cache_bits = 32 - N;
++ if (N != 0)
++ bs->cache = val << bs->cache_bits;
++ else
++ bs->cache = 0;
++ }
+ }
+
+-int shine_get_bits_count(bitstream_t *bs)
+-{
+- return bs->data_position * 8 + 32 - bs->cache_bits;
++int shine_get_bits_count(bitstream_t *bs) {
++ return bs->data_position * 8 + 32 - bs->cache_bits;
+ }
+-
+diff --git a/src/lib/bitstream.h b/src/lib/bitstream.h
+index d910ef9..4f7efb6 100644
+--- a/src/lib/bitstream.h
++++ b/src/lib/bitstream.h
+@@ -1,28 +1,29 @@
+ #ifndef BITSTREAM_H
+ #define BITSTREAM_H
+
+-typedef struct bit_stream_struc {
+- unsigned char *data; /* Processed data */
+- int data_size; /* Total data size */
+- int data_position; /* Data position */
+- unsigned int cache; /* bit stream cache */
+- int cache_bits; /* free bits in cache */
++typedef struct bit_stream_struc {
++ unsigned char *data; /* Processed data */
++ int data_size; /* Total data size */
++ int data_position; /* Data position */
++ unsigned int cache; /* bit stream cache */
++ int cache_bits; /* free bits in cache */
+ } bitstream_t;
+
+ /* "bit_stream.h" Definitions */
+
+-#define MINIMUM 4 /* Minimum size of the buffer in bytes */
+-#define MAX_LENGTH 32 /* Maximum length of word written or
+- read from bit stream */
++#define MINIMUM 4 /* Minimum size of the buffer in bytes */
++#define MAX_LENGTH \
++ 32 /* Maximum length of word written or \
++ read from bit stream */
+
+-#define BUFFER_SIZE 4096
++#define BUFFER_SIZE 4096
+
+-#define MIN(A, B) ((A) < (B) ? (A) : (B))
+-#define MAX(A, B) ((A) > (B) ? (A) : (B))
++#define MIN(A, B) ((A) < (B) ? (A) : (B))
++#define MAX(A, B) ((A) > (B) ? (A) : (B))
+
+-void shine_open_bit_stream(bitstream_t *bs,const int size);
++void shine_open_bit_stream(bitstream_t *bs, const int size);
+ void shine_close_bit_stream(bitstream_t *bs);
+-void shine_putbits(bitstream_t *bs,unsigned int val, unsigned int N);
+-int shine_get_bits_count(bitstream_t *bs);
++void shine_putbits(bitstream_t *bs, unsigned int val, unsigned int N);
++int shine_get_bits_count(bitstream_t *bs);
+
+ #endif
+diff --git a/src/lib/huffman.c b/src/lib/huffman.c
+index d4bd6aa..854ae41 100644
+--- a/src/lib/huffman.c
++++ b/src/lib/huffman.c
+@@ -1,120 +1,248 @@
+ /* huffman.c */
+
+-#include "types.h"
+ #include "huffman.h"
+ #include "bitstream.h"
+ #include "l3bitstream.h"
++#include "types.h"
+
+-const HUFFBITS dmask = 1 << (((sizeof(HUFFBITS))<<3)-1);
+-const unsigned int hs = sizeof(HUFFBITS)<<3;
++const HUFFBITS dmask = 1 << (((sizeof(HUFFBITS)) << 3) - 1);
++const unsigned int hs = sizeof(HUFFBITS) << 3;
+
+-static const HUFFBITS t1HB[] = {1, 1, 1, 0};
+-static const HUFFBITS t2HB[] = {1, 2, 1, 3, 1, 1, 3, 2, 0};
+-static const HUFFBITS t3HB[] = {3, 2, 1, 1, 1, 1, 3, 2, 0};
+-static const HUFFBITS t5HB[] = {1, 2, 6, 5, 3, 1, 4, 4, 7, 5, 7, 1, 6, 1, 1, 0};
+-static const HUFFBITS t6HB[] = {7, 3, 5, 1, 6, 2, 3, 2, 5, 4, 4, 1, 3, 3, 2, 0};
+-static const HUFFBITS t7HB[] = {1, 2, 10, 19, 16, 10, 3, 3, 7, 10, 5, 3, 11, 4, 13, 17, 8, 4, 12, 11, 18, 15, 11, 2, 7, 6, 9, 14, 3, 1, 6, 4, 5, 3, 2, 0};
+-static const HUFFBITS t8HB[] = {3, 4, 6, 18, 12, 5, 5, 1, 2, 16, 9, 3, 7, 3, 5, 14, 7, 3, 19, 17, 15, 13, 10, 4, 13, 5, 8, 11, 5, 1, 12, 4, 4, 1, 1, 0};
+-static const HUFFBITS t9HB[] = {7, 5, 9, 14, 15, 7, 6, 4, 5, 5, 6, 7, 7, 6, 8, 8, 8, 5, 15, 6, 9, 10, 5, 1, 11, 7, 9, 6, 4, 1, 14, 4, 6, 2, 6, 0};
+-static const HUFFBITS t10HB[] = {1, 2, 10, 23, 35, 30, 12, 17, 3, 3, 8, 12, 18, 21, 12, 7, 11, 9, 15, 21, 32, 40, 19, 6, 14, 13, 22, 34, 46, 23, 18, 7, 20, 19, 33, 47, 27, 22, 9, 3, 31, 22, 41, 26, 21, 20, 5, 3, 14, 13, 10, 11, 16, 6, 5, 1, 9, 8, 7, 8, 4 , 4, 2, 0};
+-static const HUFFBITS t11HB[] = {3, 4, 10, 24, 34, 33, 21, 15, 5, 3, 4, 10, 32, 17, 11, 10, 11, 7, 13, 18, 30, 31, 20, 5, 25, 11, 19, 59, 27, 18, 12, 5, 35, 33, 31, 58, 30, 16, 7, 5, 28, 26, 32, 19, 17, 15, 8, 14, 14, 12, 9, 13, 14, 9, 4, 1, 11, 4, 6, 6, 6, 3, 2, 0};
+-static const HUFFBITS t12HB[] = {9, 6, 16, 33, 41, 39, 38, 26, 7, 5, 6, 9, 23, 16, 26, 11, 17, 7, 11, 14, 21, 30, 10, 7, 17, 10, 15, 12, 18, 28, 14, 5, 32, 13, 22, 19, 18, 16, 9, 5, 40, 17, 31, 29, 17, 13, 4, 2, 27, 12, 11, 15, 10, 7, 4, 1, 27, 12, 8, 12 , 6, 3, 1, 0};
+-static const HUFFBITS t13HB[] = {1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19, 3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14, 15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16, 22,
+- 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14, 35, 16, 60, 57, 97, 75, 114, 91, 54, 73, 55, 41, 48, 53, 23, 24, 58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17, 47,
+- 45, 78, 74, 115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15, 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42, 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16, 53,
+- 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11, 35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22, 53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7, 34, 32,
+- 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5, 45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3, 48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2, 16, 15, 17, 27, 25,
+- 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1};
+-static const HUFFBITS t15HB[] = {7, 12, 18, 53, 47, 76, 124, 108, 89, 123, 108, 119, 107, 81, 122, 63, 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36, 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56,
+- 33, 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29, 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27, 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38,
+- 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30, 109, 53, 49, 94, 88, 75, 66, 122, 91, 73, 56, 42, 64, 44, 21, 25, 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20,
+- 71, 34, 67, 60, 58, 49, 88, 76, 67, 106, 71, 54, 38, 39, 23, 15, 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9, 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11,
+- 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7, 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3, 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1, 71,
+- 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0};
+-static const HUFFBITS t16HB[] = {1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17, 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9, 15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117,
+- 110, 209, 206, 16, 45, 21, 39, 69, 64, 114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26, 75, 36, 68, 65, 115, 101, 179, 164, 155, 264, 246, 226, 395, 382, 362, 9, 66, 30, 59, 56, 102,
+- 185, 173, 265, 142, 253, 232, 400, 388, 378, 445, 16, 111, 54, 52, 100, 184, 178, 160, 133, 257, 244, 228, 217, 385, 366, 715, 10, 98, 48, 91, 88, 165, 157, 148, 261, 248, 407, 397, 372,
+- 380, 889, 884, 8, 85, 84, 81, 159, 156, 143, 260, 249, 427, 401, 392, 383, 727, 713, 708, 7, 154, 76, 73, 141, 131, 256, 245, 426, 406, 394, 384, 735, 359, 710, 352, 11, 139, 129, 67, 125,
+- 247, 233, 229, 219, 393, 743, 737, 720, 885, 882, 439, 4, 243, 120, 118, 115, 227, 223, 396, 746, 742, 736, 721, 712, 706, 223, 436, 6, 202, 224, 222, 218, 216, 389, 386, 381, 364, 888,
+- 443, 707, 440, 437, 1728, 4, 747, 211, 210, 208, 370, 379, 734, 723, 714, 1735, 883, 877, 876, 3459, 865, 2, 377, 369, 102, 187, 726, 722, 358, 711, 709, 866, 1734, 871, 3458, 870, 434,
+- 0, 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3};
+-static const HUFFBITS t24HB[] = {15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88, 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42, 47, 22, 41, 74, 68, 128, 120, 221,
+- 207, 194, 182, 340, 315, 295, 541, 18, 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16, 147, 72, 69, 135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285,
+- 540, 14, 263, 66, 129, 126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12, 249, 123, 121, 117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10, 435, 115, 111,
+- 109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17, 427, 212, 208, 205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16, 335, 199, 197, 191, 189, 181, 174, 333,
+- 321, 305, 289, 275, 521, 379, 371, 11, 668, 184, 183, 179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10, 652, 346, 171, 168, 164, 318, 309, 299, 287, 276, 263, 513, 375,
+- 368, 362, 6, 648, 322, 316, 312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4, 620, 300, 296, 294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2, 1033, 280, 278,
+- 274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0, 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3};
+-static const HUFFBITS t32HB[] = {1, 5, 4, 5, 6, 5, 4, 4, 7, 3, 6, 0, 7, 2, 3, 1};
+-static const HUFFBITS t33HB[] = {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
++static const HUFFBITS t1HB[] = {1, 1, 1, 0};
++static const HUFFBITS t2HB[] = {1, 2, 1, 3, 1, 1, 3, 2, 0};
++static const HUFFBITS t3HB[] = {3, 2, 1, 1, 1, 1, 3, 2, 0};
++static const HUFFBITS t5HB[] = {1, 2, 6, 5, 3, 1, 4, 4, 7, 5, 7, 1, 6, 1, 1, 0};
++static const HUFFBITS t6HB[] = {7, 3, 5, 1, 6, 2, 3, 2, 5, 4, 4, 1, 3, 3, 2, 0};
++static const HUFFBITS t7HB[] = {1, 2, 10, 19, 16, 10, 3, 3, 7, 10, 5, 3,
++ 11, 4, 13, 17, 8, 4, 12, 11, 18, 15, 11, 2,
++ 7, 6, 9, 14, 3, 1, 6, 4, 5, 3, 2, 0};
++static const HUFFBITS t8HB[] = {3, 4, 6, 18, 12, 5, 5, 1, 2, 16, 9, 3,
++ 7, 3, 5, 14, 7, 3, 19, 17, 15, 13, 10, 4,
++ 13, 5, 8, 11, 5, 1, 12, 4, 4, 1, 1, 0};
++static const HUFFBITS t9HB[] = {7, 5, 9, 14, 15, 7, 6, 4, 5, 5, 6, 7,
++ 7, 6, 8, 8, 8, 5, 15, 6, 9, 10, 5, 1,
++ 11, 7, 9, 6, 4, 1, 14, 4, 6, 2, 6, 0};
++static const HUFFBITS t10HB[] = {
++ 1, 2, 10, 23, 35, 30, 12, 17, 3, 3, 8, 12, 18, 21, 12, 7,
++ 11, 9, 15, 21, 32, 40, 19, 6, 14, 13, 22, 34, 46, 23, 18, 7,
++ 20, 19, 33, 47, 27, 22, 9, 3, 31, 22, 41, 26, 21, 20, 5, 3,
++ 14, 13, 10, 11, 16, 6, 5, 1, 9, 8, 7, 8, 4, 4, 2, 0};
++static const HUFFBITS t11HB[] = {
++ 3, 4, 10, 24, 34, 33, 21, 15, 5, 3, 4, 10, 32, 17, 11, 10,
++ 11, 7, 13, 18, 30, 31, 20, 5, 25, 11, 19, 59, 27, 18, 12, 5,
++ 35, 33, 31, 58, 30, 16, 7, 5, 28, 26, 32, 19, 17, 15, 8, 14,
++ 14, 12, 9, 13, 14, 9, 4, 1, 11, 4, 6, 6, 6, 3, 2, 0};
++static const HUFFBITS t12HB[] = {
++ 9, 6, 16, 33, 41, 39, 38, 26, 7, 5, 6, 9, 23, 16, 26, 11,
++ 17, 7, 11, 14, 21, 30, 10, 7, 17, 10, 15, 12, 18, 28, 14, 5,
++ 32, 13, 22, 19, 18, 16, 9, 5, 40, 17, 31, 29, 17, 13, 4, 2,
++ 27, 12, 11, 15, 10, 7, 4, 1, 27, 12, 8, 12, 6, 3, 1, 0};
++static const HUFFBITS t13HB[] = {
++ 1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19, 3, 4,
++ 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14, 15, 13, 23, 36,
++ 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16, 22, 20, 37, 61, 56, 79,
++ 73, 64, 43, 76, 56, 37, 26, 31, 25, 14, 35, 16, 60, 57, 97, 75, 114, 91,
++ 54, 73, 55, 41, 48, 53, 23, 24, 58, 27, 50, 96, 76, 70, 93, 84, 77, 58,
++ 79, 29, 74, 49, 41, 17, 47, 45, 78, 74, 115, 94, 90, 79, 69, 83, 71, 50,
++ 59, 38, 36, 15, 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44,
++ 43, 42, 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16,
++ 53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11, 35, 33,
++ 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22, 53, 25, 23, 38,
++ 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7, 34, 32, 28, 39, 49, 75,
++ 30, 52, 48, 40, 52, 28, 18, 17, 9, 5, 45, 21, 34, 64, 56, 50, 49, 45,
++ 31, 19, 12, 15, 10, 7, 6, 3, 48, 23, 20, 39, 36, 35, 53, 21, 16, 23,
++ 13, 10, 6, 1, 4, 2, 16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8,
++ 1, 1, 0, 1};
++static const HUFFBITS t15HB[] = {
++ 7, 12, 18, 53, 47, 76, 124, 108, 89, 123, 108, 119, 107, 81, 122, 63,
++ 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36,
++ 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33,
++ 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29,
++ 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27,
++ 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38,
++ 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30,
++ 109, 53, 49, 94, 88, 75, 66, 122, 91, 73, 56, 42, 64, 44, 21, 25,
++ 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20,
++ 71, 34, 67, 60, 58, 49, 88, 76, 67, 106, 71, 54, 38, 39, 23, 15,
++ 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9,
++ 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11,
++ 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7,
++ 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3,
++ 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1,
++ 71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0};
++static const HUFFBITS t16HB[] = {
++ 1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195,
++ 376, 17, 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119,
++ 201, 107, 207, 9, 15, 13, 23, 38, 67, 58, 103, 90, 161, 72,
++ 127, 117, 110, 209, 206, 16, 45, 21, 39, 69, 64, 114, 99, 87,
++ 158, 140, 252, 212, 199, 387, 365, 26, 75, 36, 68, 65, 115, 101,
++ 179, 164, 155, 264, 246, 226, 395, 382, 362, 9, 66, 30, 59, 56,
++ 102, 185, 173, 265, 142, 253, 232, 400, 388, 378, 445, 16, 111, 54,
++ 52, 100, 184, 178, 160, 133, 257, 244, 228, 217, 385, 366, 715, 10,
++ 98, 48, 91, 88, 165, 157, 148, 261, 248, 407, 397, 372, 380, 889,
++ 884, 8, 85, 84, 81, 159, 156, 143, 260, 249, 427, 401, 392, 383,
++ 727, 713, 708, 7, 154, 76, 73, 141, 131, 256, 245, 426, 406, 394,
++ 384, 735, 359, 710, 352, 11, 139, 129, 67, 125, 247, 233, 229, 219,
++ 393, 743, 737, 720, 885, 882, 439, 4, 243, 120, 118, 115, 227, 223,
++ 396, 746, 742, 736, 721, 712, 706, 223, 436, 6, 202, 224, 222, 218,
++ 216, 389, 386, 381, 364, 888, 443, 707, 440, 437, 1728, 4, 747, 211,
++ 210, 208, 370, 379, 734, 723, 714, 1735, 883, 877, 876, 3459, 865, 2,
++ 377, 369, 102, 187, 726, 722, 358, 711, 709, 866, 1734, 871, 3458, 870,
++ 434, 0, 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7,
++ 5, 3, 1, 3};
++static const HUFFBITS t24HB[] = {
++ 15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032,
++ 88, 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297,
++ 279, 42, 47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315,
++ 295, 541, 18, 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325,
++ 311, 293, 271, 16, 147, 72, 69, 135, 127, 118, 112, 210, 200, 188, 352,
++ 323, 306, 285, 540, 14, 263, 66, 129, 126, 119, 114, 214, 202, 192, 180,
++ 341, 317, 301, 281, 262, 12, 249, 123, 121, 117, 113, 215, 206, 195, 185,
++ 347, 330, 308, 291, 272, 520, 10, 435, 115, 111, 109, 211, 203, 196, 187,
++ 353, 332, 313, 298, 283, 531, 381, 17, 427, 212, 208, 205, 201, 193, 186,
++ 177, 169, 320, 303, 286, 268, 514, 377, 16, 335, 199, 197, 191, 189, 181,
++ 174, 333, 321, 305, 289, 275, 521, 379, 371, 11, 668, 184, 183, 179, 175,
++ 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10, 652, 346, 171, 168,
++ 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6, 648, 322, 316,
++ 312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4, 620, 300,
++ 296, 294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2, 1033,
++ 280, 278, 274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0,
++ 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1,
++ 3};
++static const HUFFBITS t32HB[] = {1, 5, 4, 5, 6, 5, 4, 4,
++ 7, 3, 6, 0, 7, 2, 3, 1};
++static const HUFFBITS t33HB[] = {15, 14, 13, 12, 11, 10, 9, 8,
++ 7, 6, 5, 4, 3, 2, 1, 0};
+
+-static const unsigned char t1l[] = {1, 3, 2, 3};
+-static const unsigned char t2l[] = {1, 3, 6, 3, 3, 5, 5, 5, 6};
+-static const unsigned char t3l[] = {2, 2, 6, 3, 2, 5, 5, 5, 6};
+-static const unsigned char t5l[] = {1, 3, 6, 7, 3, 3, 6, 7, 6, 6, 7, 8, 7, 6, 7, 8};
+-static const unsigned char t6l[] = {3, 3, 5, 7, 3, 2, 4, 5, 4, 4, 5, 6, 6, 5, 6, 7};
+-static const unsigned char t7l[] = {1, 3, 6, 8, 8, 9, 3, 4, 6, 7, 7, 8, 6, 5, 7, 8, 8, 9, 7, 7, 8, 9, 9, 9, 7, 7, 8, 9, 9, 10, 8, 8, 9, 10, 10, 10};
+-static const unsigned char t8l[] = {2, 3, 6, 8, 8, 9, 3, 2, 4, 8, 8, 8, 6, 4, 6, 8, 8, 9, 8, 8, 8, 9, 9, 10, 8, 7, 8, 9, 10, 10, 9, 8, 9, 9, 11, 11};
+-static const unsigned char t9l[] = {3, 3, 5, 6, 8, 9, 3, 3, 4, 5, 6, 8, 4, 4, 5, 6, 7, 8, 6, 5, 6, 7, 7, 8, 7, 6, 7, 7, 8, 9, 8, 7, 8, 8, 9, 9};
+-static const unsigned char t10l[] = {1, 3, 6, 8, 9, 9, 9, 10, 3, 4, 6, 7, 8, 9, 8, 8, 6, 6, 7, 8, 9, 10, 9, 9, 7, 7, 8, 9, 10, 10, 9, 10, 8, 8, 9, 10, 10, 10, 10, 10, 9, 9, 10, 10, 11, 11, 10, 11, 8, 8, 9, 10, 10, 10, 11, 11, 9, 8, 9, 10, 10, 11, 11, 11};
+-static const unsigned char t11l[] = {2, 3, 5, 7, 8, 9, 8, 9, 3, 3, 4, 6, 8, 8, 7, 8, 5, 5, 6, 7, 8, 9, 8, 8, 7, 6, 7, 9, 8, 10, 8, 9, 8, 8, 8, 9, 9, 10, 9, 10, 8, 8, 9, 10, 10, 11, 10, 11, 8, 7, 7, 8, 9, 10, 10, 10, 8, 7, 8, 9, 10, 10, 10, 10};
+-static const unsigned char t12l[] = {4, 3, 5, 7, 8, 9, 9, 9, 3, 3, 4, 5, 7, 7, 8, 8, 5, 4, 5, 6, 7, 8, 7, 8, 6, 5, 6, 6, 7, 8, 8, 8, 7, 6, 7, 7, 8, 8, 8, 9, 8, 7, 8, 8, 8, 9, 8, 9, 8, 7, 7, 8, 8, 9, 9, 10, 9, 8, 8, 9, 9, 9, 9, 10};
+-static const unsigned char t13l[] = {1, 4, 6, 7, 8, 9, 9, 10, 9, 10, 11, 11, 12, 12, 13, 13, 3, 4, 6, 7, 8, 8, 9, 9, 9, 9, 10, 10, 11, 12, 12, 12, 6, 6, 7, 8, 9, 9, 10, 10, 9, 10, 10, 11, 11, 12, 13, 13, 7, 7, 8, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 13, 13,
+-8, 7, 9, 9, 10, 10, 11, 11, 10, 11, 11, 12, 12, 13, 13, 14, 9, 8, 9, 10, 10, 10, 11, 11, 11, 11, 12, 11, 13, 13, 14, 14, 9, 9, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14, 10, 9, 10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 14, 16, 16, 9, 8, 9, 10,
+-10, 11, 11, 12, 12, 12, 12, 13, 13, 14, 15, 15, 10, 9, 10, 10, 11, 11, 11, 13, 12, 13, 13, 14, 14, 14, 16, 15, 10, 10, 10, 11, 11, 12, 12, 13, 12, 13, 14, 13, 14, 15, 16, 17, 11, 10, 10, 11, 12, 12, 12, 12, 13, 13, 13, 14, 15, 15, 15, 16, 11, 11, 11, 12, 12,
+-13, 12, 13, 14, 14, 15, 15, 15, 16, 16, 16, 12, 11, 12, 13, 13, 13, 14, 14, 14, 14, 14, 15, 16, 15, 16, 16, 13, 12, 12, 13, 13, 13, 15, 14, 14, 17, 15, 15, 15, 17, 16, 16, 12, 12, 13, 14, 14, 14, 15, 14, 15, 15, 16, 16, 19, 18, 19, 16};
+-static const unsigned char t15l[] = {3, 4, 5, 7, 7, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12, 13, 4, 3, 5, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 5, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 11, 11, 11, 6, 6, 6, 7, 7, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 7, 6, 7,
+- 7, 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 11, 8, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 11, 11, 11, 12, 9, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 12, 12, 9, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 12, 9, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11,
+- 12, 12, 12, 9, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 10, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 13, 12, 10, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 11, 10, 9, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 13, 13,
+-11, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 12, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 12, 13, 12, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13};
+-static const unsigned char t16l[] = {1, 4, 6, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 9, 3, 4, 6, 7, 8, 9, 9, 9, 10, 10, 10, 11, 12, 11, 12, 8, 6, 6, 7, 8, 9, 9, 10, 10, 11, 10, 11, 11, 11, 12, 12, 9, 8, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13,
+- 10, 9, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 9, 9, 8, 9, 9, 10, 11, 11, 12, 11, 12, 12, 13, 13, 13, 14, 10, 10, 9, 9, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 10, 10, 9, 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 13, 15, 15, 10, 10, 10,
+- 10, 11, 11, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 10, 11, 10, 10, 11, 11, 12, 12, 13, 13, 13, 13, 14, 13, 14, 13, 11, 11, 11, 10, 11, 12, 12, 12, 12, 13, 14, 14, 14, 15, 15, 14, 10, 12, 11, 11, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 13, 14, 11, 12, 12,
+- 12, 12, 12, 13, 13, 13, 13, 15, 14, 14, 14, 14, 16, 11, 14, 12, 12, 12, 13, 13, 14, 14, 14, 16, 15, 15, 15, 17, 15, 11, 13, 13, 11, 12, 14, 14, 13, 14, 14, 15, 16, 15, 17, 15, 14, 11, 9, 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 8};
+-static const unsigned char t24l[] = {4, 4, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 12, 9, 4, 4, 5, 6, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10, 8, 6, 5, 6, 7, 7, 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 7, 7, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 7, 8, 7, 7, 8,
+- 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 7, 9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 7, 9, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 7, 10, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 8, 10, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11,
+-8, 10, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 8, 11, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 8, 11, 10, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 8, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 8, 11, 10, 10,
+- 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 8, 12, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 4};
+-static const unsigned char t32l[] = {1, 4, 4, 5, 4, 6, 5, 6, 4, 5, 5, 6, 5, 6, 6, 6};
+-static const unsigned char t33l[] = {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};
++static const unsigned char t1l[] = {1, 3, 2, 3};
++static const unsigned char t2l[] = {1, 3, 6, 3, 3, 5, 5, 5, 6};
++static const unsigned char t3l[] = {2, 2, 6, 3, 2, 5, 5, 5, 6};
++static const unsigned char t5l[] = {1, 3, 6, 7, 3, 3, 6, 7,
++ 6, 6, 7, 8, 7, 6, 7, 8};
++static const unsigned char t6l[] = {3, 3, 5, 7, 3, 2, 4, 5,
++ 4, 4, 5, 6, 6, 5, 6, 7};
++static const unsigned char t7l[] = {1, 3, 6, 8, 8, 9, 3, 4, 6, 7, 7, 8,
++ 6, 5, 7, 8, 8, 9, 7, 7, 8, 9, 9, 9,
++ 7, 7, 8, 9, 9, 10, 8, 8, 9, 10, 10, 10};
++static const unsigned char t8l[] = {2, 3, 6, 8, 8, 9, 3, 2, 4, 8, 8, 8,
++ 6, 4, 6, 8, 8, 9, 8, 8, 8, 9, 9, 10,
++ 8, 7, 8, 9, 10, 10, 9, 8, 9, 9, 11, 11};
++static const unsigned char t9l[] = {3, 3, 5, 6, 8, 9, 3, 3, 4, 5, 6, 8,
++ 4, 4, 5, 6, 7, 8, 6, 5, 6, 7, 7, 8,
++ 7, 6, 7, 7, 8, 9, 8, 7, 8, 8, 9, 9};
++static const unsigned char t10l[] = {
++ 1, 3, 6, 8, 9, 9, 9, 10, 3, 4, 6, 7, 8, 9, 8, 8,
++ 6, 6, 7, 8, 9, 10, 9, 9, 7, 7, 8, 9, 10, 10, 9, 10,
++ 8, 8, 9, 10, 10, 10, 10, 10, 9, 9, 10, 10, 11, 11, 10, 11,
++ 8, 8, 9, 10, 10, 10, 11, 11, 9, 8, 9, 10, 10, 11, 11, 11};
++static const unsigned char t11l[] = {
++ 2, 3, 5, 7, 8, 9, 8, 9, 3, 3, 4, 6, 8, 8, 7, 8,
++ 5, 5, 6, 7, 8, 9, 8, 8, 7, 6, 7, 9, 8, 10, 8, 9,
++ 8, 8, 8, 9, 9, 10, 9, 10, 8, 8, 9, 10, 10, 11, 10, 11,
++ 8, 7, 7, 8, 9, 10, 10, 10, 8, 7, 8, 9, 10, 10, 10, 10};
++static const unsigned char t12l[] = {
++ 4, 3, 5, 7, 8, 9, 9, 9, 3, 3, 4, 5, 7, 7, 8, 8, 5, 4, 5, 6, 7, 8,
++ 7, 8, 6, 5, 6, 6, 7, 8, 8, 8, 7, 6, 7, 7, 8, 8, 8, 9, 8, 7, 8, 8,
++ 8, 9, 8, 9, 8, 7, 7, 8, 8, 9, 9, 10, 9, 8, 8, 9, 9, 9, 9, 10};
++static const unsigned char t13l[] = {
++ 1, 4, 6, 7, 8, 9, 9, 10, 9, 10, 11, 11, 12, 12, 13, 13, 3, 4, 6,
++ 7, 8, 8, 9, 9, 9, 9, 10, 10, 11, 12, 12, 12, 6, 6, 7, 8, 9, 9,
++ 10, 10, 9, 10, 10, 11, 11, 12, 13, 13, 7, 7, 8, 9, 9, 10, 10, 10, 10,
++ 11, 11, 11, 11, 12, 13, 13, 8, 7, 9, 9, 10, 10, 11, 11, 10, 11, 11, 12,
++ 12, 13, 13, 14, 9, 8, 9, 10, 10, 10, 11, 11, 11, 11, 12, 11, 13, 13, 14,
++ 14, 9, 9, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14, 10, 9,
++ 10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 14, 16, 16, 9, 8, 9, 10, 10,
++ 11, 11, 12, 12, 12, 12, 13, 13, 14, 15, 15, 10, 9, 10, 10, 11, 11, 11, 13,
++ 12, 13, 13, 14, 14, 14, 16, 15, 10, 10, 10, 11, 11, 12, 12, 13, 12, 13, 14,
++ 13, 14, 15, 16, 17, 11, 10, 10, 11, 12, 12, 12, 12, 13, 13, 13, 14, 15, 15,
++ 15, 16, 11, 11, 11, 12, 12, 13, 12, 13, 14, 14, 15, 15, 15, 16, 16, 16, 12,
++ 11, 12, 13, 13, 13, 14, 14, 14, 14, 14, 15, 16, 15, 16, 16, 13, 12, 12, 13,
++ 13, 13, 15, 14, 14, 17, 15, 15, 15, 17, 16, 16, 12, 12, 13, 14, 14, 14, 15,
++ 14, 15, 15, 16, 16, 19, 18, 19, 16};
++static const unsigned char t15l[] = {
++ 3, 4, 5, 7, 7, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12, 13, 4, 3, 5,
++ 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 5, 5, 5, 6, 7, 7,
++ 8, 8, 8, 9, 9, 10, 10, 11, 11, 11, 6, 6, 6, 7, 7, 8, 8, 9, 9,
++ 9, 10, 10, 10, 11, 11, 11, 7, 6, 7, 7, 8, 8, 9, 9, 9, 9, 10, 10,
++ 10, 11, 11, 11, 8, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 11, 11, 11,
++ 12, 9, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 12, 12, 9, 8,
++ 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 12, 9, 8, 8, 9, 9,
++ 9, 9, 10, 10, 10, 10, 11, 11, 12, 12, 12, 9, 8, 9, 9, 9, 9, 10, 10,
++ 10, 11, 11, 11, 11, 12, 12, 12, 10, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11,
++ 11, 11, 12, 13, 12, 10, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12,
++ 12, 13, 11, 10, 9, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 13, 13, 11,
++ 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 12, 11, 11, 11,
++ 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 12, 13, 12, 11, 11, 11, 11, 11, 11,
++ 12, 12, 12, 12, 12, 13, 13, 13, 13};
++static const unsigned char t16l[] = {
++ 1, 4, 6, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 9, 3, 4, 6,
++ 7, 8, 9, 9, 9, 10, 10, 10, 11, 12, 11, 12, 8, 6, 6, 7, 8, 9, 9,
++ 10, 10, 11, 10, 11, 11, 11, 12, 12, 9, 8, 7, 8, 9, 9, 10, 10, 10, 11,
++ 11, 12, 12, 12, 13, 13, 10, 9, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12,
++ 13, 13, 13, 9, 9, 8, 9, 9, 10, 11, 11, 12, 11, 12, 12, 13, 13, 13, 14,
++ 10, 10, 9, 9, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 10, 10, 9,
++ 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 13, 15, 15, 10, 10, 10, 10, 11, 11,
++ 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 10, 11, 10, 10, 11, 11, 12, 12, 13,
++ 13, 13, 13, 14, 13, 14, 13, 11, 11, 11, 10, 11, 12, 12, 12, 12, 13, 14, 14,
++ 14, 15, 15, 14, 10, 12, 11, 11, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 13,
++ 14, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 15, 14, 14, 14, 14, 16, 11, 14,
++ 12, 12, 12, 13, 13, 14, 14, 14, 16, 15, 15, 15, 17, 15, 11, 13, 13, 11, 12,
++ 14, 14, 13, 14, 14, 15, 16, 15, 17, 15, 14, 11, 9, 8, 8, 9, 9, 10, 10,
++ 10, 11, 11, 11, 11, 11, 11, 11, 8};
++static const unsigned char t24l[] = {
++ 4, 4, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 12, 9, 4, 4, 5,
++ 6, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10, 8, 6, 5, 6, 7, 7, 8,
++ 8, 9, 9, 9, 9, 10, 10, 10, 11, 7, 7, 6, 7, 7, 8, 8, 8, 9, 9,
++ 9, 9, 10, 10, 10, 10, 7, 8, 7, 7, 8, 8, 8, 8, 9, 9, 9, 10, 10,
++ 10, 10, 11, 7, 9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10,
++ 7, 9, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 7, 10, 8,
++ 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 8, 10, 9, 9, 9, 9,
++ 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 8, 10, 9, 9, 9, 9, 9, 9, 10,
++ 10, 10, 10, 10, 11, 11, 11, 8, 11, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10,
++ 11, 11, 11, 11, 8, 11, 10, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
++ 11, 8, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 8, 11,
++ 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 8, 12, 10, 10, 10,
++ 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 8, 8, 7, 7, 7, 7, 7, 7,
++ 7, 7, 7, 7, 8, 8, 8, 8, 4};
++static const unsigned char t32l[] = {1, 4, 4, 5, 4, 6, 5, 6,
++ 4, 5, 5, 6, 5, 6, 6, 6};
++static const unsigned char t33l[] = {4, 4, 4, 4, 4, 4, 4, 4,
++ 4, 4, 4, 4, 4, 4, 4, 4};
+
+ #define NOREF -1
+-const struct huffcodetab shine_huffman_table[HTN] =
+-{
+-{ 0, 0, 0, 0,NULL,NULL},
+-{ 2, 2, 0, 0,t1HB, t1l},
+-{ 3, 3, 0, 0,t2HB, t2l},
+-{ 3, 3, 0, 0,t3HB, t3l},
+-{ 0, 0, 0, 0,NULL,NULL},/* Apparently not used*/
+-{ 4, 4, 0, 0,t5HB, t5l},
+-{ 4, 4, 0, 0,t6HB, t6l},
+-{ 6, 6, 0, 0,t7HB, t7l},
+-{ 6, 6, 0, 0,t8HB, t8l},
+-{ 6, 6, 0, 0,t9HB, t9l},
+-{ 8, 8, 0, 0,t10HB, t10l},
+-{ 8, 8, 0, 0,t11HB, t11l},
+-{ 8, 8, 0, 0,t12HB, t12l},
+-{16,16, 0, 0,t13HB, t13l},
+-{ 0, 0, 0, 0,NULL,NULL},/* Apparently not used*/
+-{16,16, 0, 0,t15HB, t15l},
+-{16,16, 1, 1,t16HB, t16l},
+-{16,16, 2, 3,t16HB, t16l},
+-{16,16, 3, 7,t16HB, t16l},
+-{16,16, 4, 15,t16HB, t16l},
+-{16,16, 6, 63,t16HB, t16l},
+-{16,16, 8, 255,t16HB, t16l},
+-{16,16,10,1023,t16HB, t16l},
+-{16,16,13,8191,t16HB, t16l},
+-{16,16, 4, 15,t24HB, t24l},
+-{16,16, 5, 31,t24HB, t24l},
+-{16,16, 6, 63,t24HB, t24l},
+-{16,16, 7, 127,t24HB, t24l},
+-{16,16, 8, 255,t24HB, t24l},
+-{16,16, 9, 511,t24HB, t24l},
+-{16,16,11,2047,t24HB, t24l},
+-{16,16,13,8191,t24HB, t24l},
+-{ 1,16, 0, 0,t32HB, t32l},
+-{ 1,16, 0, 0,t33HB, t33l},
++const struct huffcodetab shine_huffman_table[HTN] = {
++ {0, 0, 0, 0, NULL, NULL},
++ {2, 2, 0, 0, t1HB, t1l},
++ {3, 3, 0, 0, t2HB, t2l},
++ {3, 3, 0, 0, t3HB, t3l},
++ {0, 0, 0, 0, NULL, NULL}, /* Apparently not used*/
++ {4, 4, 0, 0, t5HB, t5l},
++ {4, 4, 0, 0, t6HB, t6l},
++ {6, 6, 0, 0, t7HB, t7l},
++ {6, 6, 0, 0, t8HB, t8l},
++ {6, 6, 0, 0, t9HB, t9l},
++ {8, 8, 0, 0, t10HB, t10l},
++ {8, 8, 0, 0, t11HB, t11l},
++ {8, 8, 0, 0, t12HB, t12l},
++ {16, 16, 0, 0, t13HB, t13l},
++ {0, 0, 0, 0, NULL, NULL}, /* Apparently not used*/
++ {16, 16, 0, 0, t15HB, t15l},
++ {16, 16, 1, 1, t16HB, t16l},
++ {16, 16, 2, 3, t16HB, t16l},
++ {16, 16, 3, 7, t16HB, t16l},
++ {16, 16, 4, 15, t16HB, t16l},
++ {16, 16, 6, 63, t16HB, t16l},
++ {16, 16, 8, 255, t16HB, t16l},
++ {16, 16, 10, 1023, t16HB, t16l},
++ {16, 16, 13, 8191, t16HB, t16l},
++ {16, 16, 4, 15, t24HB, t24l},
++ {16, 16, 5, 31, t24HB, t24l},
++ {16, 16, 6, 63, t24HB, t24l},
++ {16, 16, 7, 127, t24HB, t24l},
++ {16, 16, 8, 255, t24HB, t24l},
++ {16, 16, 9, 511, t24HB, t24l},
++ {16, 16, 11, 2047, t24HB, t24l},
++ {16, 16, 13, 8191, t24HB, t24l},
++ {1, 16, 0, 0, t32HB, t32l},
++ {1, 16, 0, 0, t33HB, t33l},
+ };
+-
+-
+diff --git a/src/lib/huffman.h b/src/lib/huffman.h
+index d2d5b51..6a341c7 100644
+--- a/src/lib/huffman.h
++++ b/src/lib/huffman.h
+@@ -1,6 +1,8 @@
++#include <stdint.h>
++
+ #define HUFFBITS uint16_t
+-#define HTN 34
+-#define MXOFF 250
++#define HTN 34
++#define MXOFF 250
+
+ struct huffcodetab {
+ unsigned int xlen; /*max. x-index+ */
+@@ -11,9 +13,8 @@ struct huffcodetab {
+ const unsigned char *hlen; /*pointer to array[xlen][ylen] */
+ };
+
+-extern const struct huffcodetab shine_huffman_table[HTN];/* global memory block */
+- /* array of all huffcodtable headers */
+- /* 0..31 Huffman code table 0..31 */
+- /* 32,33 count1-tables */
+-
+-
++extern const struct huffcodetab
++ shine_huffman_table[HTN]; /* global memory block */
++ /* array of all huffcodtable headers */
++ /* 0..31 Huffman code table 0..31 */
++ /* 32,33 count1-tables */
+diff --git a/src/lib/l3bitstream.c b/src/lib/l3bitstream.c
+index ba788e6..1b2849e 100644
+--- a/src/lib/l3bitstream.c
++++ b/src/lib/l3bitstream.c
+@@ -1,20 +1,22 @@
+ /* l3bitstrea.c */
+
+-#include "types.h"
+-#include "l3mdct.h"
++#include "l3bitstream.h" /* the public interface */
++#include "bitstream.h"
++#include "huffman.h"
+ #include "l3loop.h"
++#include "l3mdct.h"
+ #include "layer3.h"
+-#include "huffman.h"
+-#include "bitstream.h"
+ #include "tables.h"
+-#include "l3bitstream.h" /* the public interface */
++#include "types.h"
+
+ static void shine_HuffmanCode(bitstream_t *bs, int table_select, int x, int y);
+-static void shine_huffman_coder_count1(bitstream_t *bs, const struct huffcodetab *h, int v, int w, int x, int y);
++static void shine_huffman_coder_count1(bitstream_t *bs,
++ const struct huffcodetab *h, int v,
++ int w, int x, int y);
+
+-static void encodeSideInfo( shine_global_config *config );
+-static void encodeMainData( shine_global_config *config );
+-static void Huffmancodebits( shine_global_config *config, int *ix, gr_info *gi);
++static void encodeSideInfo(shine_global_config *config);
++static void encodeMainData(shine_global_config *config);
++static void Huffmancodebits(shine_global_config *config, int *ix, gr_info *gi);
+
+ /*
+ shine_format_bitstream()
+@@ -27,130 +29,121 @@ static void Huffmancodebits( shine_global_config *config, int *ix, gr_info *gi);
+ in the IS).
+ */
+
+-void
+-shine_format_bitstream(shine_global_config *config)
+-{
++void shine_format_bitstream(shine_global_config *config) {
+ int gr, ch, i;
+
+- for ( ch = 0; ch < config->wave.channels; ch++ )
+- for ( gr = 0; gr < config->mpeg.granules_per_frame; gr++ )
+- {
+- int *pi = &config->l3_enc[ch][gr][0];
+- int32_t *pr = &config->mdct_freq[ch][gr][0];
+- for ( i = 0; i < GRANULE_SIZE; i++ )
+- {
+- if ( (pr[i] < 0) && (pi[i] > 0) )
+- pi[i] *= -1;
+- }
++ for (ch = 0; ch < config->wave.channels; ch++)
++ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++) {
++ int *pi = &config->l3_enc[ch][gr][0];
++ int32_t *pr = &config->mdct_freq[ch][gr][0];
++ for (i = 0; i < GRANULE_SIZE; i++) {
++ if ((pr[i] < 0) && (pi[i] > 0))
++ pi[i] *= -1;
+ }
++ }
+
+- encodeSideInfo( config );
+- encodeMainData( config );
++ encodeSideInfo(config);
++ encodeMainData(config);
+ }
+
+-static void encodeMainData(shine_global_config *config)
+-{
++static void encodeMainData(shine_global_config *config) {
+ int gr, ch, sfb;
+- shine_side_info_t si = config->side_info;
+-
+- for ( gr = 0; gr < config->mpeg.granules_per_frame; gr++ )
+- {
+- for ( ch = 0; ch < config->wave.channels; ch++ )
+- {
+- gr_info *gi = &(si.gr[gr].ch[ch].tt);
+- unsigned slen1 = shine_slen1_tab[ gi->scalefac_compress ];
+- unsigned slen2 = shine_slen2_tab[ gi->scalefac_compress ];
+- int *ix = &config->l3_enc[ch][gr][0];
+-
+- if ( gr == 0 || si.scfsi[ch][0] == 0 )
+- for ( sfb = 0; sfb < 6; sfb++ )
+- shine_putbits( &config->bs, config->scalefactor.l[gr][ch][sfb], slen1 );
+- if ( gr == 0 || si.scfsi[ch][1] == 0 )
+- for ( sfb = 6; sfb < 11; sfb++ )
+- shine_putbits( &config->bs, config->scalefactor.l[gr][ch][sfb], slen1 );
+- if ( gr == 0 || si.scfsi[ch][2] == 0 )
+- for ( sfb = 11; sfb < 16; sfb++ )
+- shine_putbits( &config->bs, config->scalefactor.l[gr][ch][sfb], slen2 );
+- if ( gr == 0 || si.scfsi[ch][3] == 0 )
+- for ( sfb = 16; sfb < 21; sfb++ )
+- shine_putbits( &config->bs, config->scalefactor.l[gr][ch][sfb], slen2 );
+-
+- Huffmancodebits( config, ix, gi );
+- }
++ shine_side_info_t si = config->side_info;
++
++ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++) {
++ for (ch = 0; ch < config->wave.channels; ch++) {
++ gr_info *gi = &(si.gr[gr].ch[ch].tt);
++ unsigned slen1 = shine_slen1_tab[gi->scalefac_compress];
++ unsigned slen2 = shine_slen2_tab[gi->scalefac_compress];
++ int *ix = &config->l3_enc[ch][gr][0];
++
++ if (gr == 0 || si.scfsi[ch][0] == 0)
++ for (sfb = 0; sfb < 6; sfb++)
++ shine_putbits(&config->bs, config->scalefactor.l[gr][ch][sfb], slen1);
++ if (gr == 0 || si.scfsi[ch][1] == 0)
++ for (sfb = 6; sfb < 11; sfb++)
++ shine_putbits(&config->bs, config->scalefactor.l[gr][ch][sfb], slen1);
++ if (gr == 0 || si.scfsi[ch][2] == 0)
++ for (sfb = 11; sfb < 16; sfb++)
++ shine_putbits(&config->bs, config->scalefactor.l[gr][ch][sfb], slen2);
++ if (gr == 0 || si.scfsi[ch][3] == 0)
++ for (sfb = 16; sfb < 21; sfb++)
++ shine_putbits(&config->bs, config->scalefactor.l[gr][ch][sfb], slen2);
++
++ Huffmancodebits(config, ix, gi);
+ }
++ }
+ }
+
+-static void encodeSideInfo( shine_global_config *config )
+-{
++static void encodeSideInfo(shine_global_config *config) {
+ int gr, ch, scfsi_band, region;
+- shine_side_info_t si = config->side_info;
+-
+- shine_putbits( &config->bs, 0x7ff, 11 );
+- shine_putbits( &config->bs, config->mpeg.version, 2 );
+- shine_putbits( &config->bs, config->mpeg.layer, 2 );
+- shine_putbits( &config->bs, !config->mpeg.crc, 1 );
+- shine_putbits( &config->bs, config->mpeg.bitrate_index, 4 );
+- shine_putbits( &config->bs, config->mpeg.samplerate_index % 3, 2 );
+- shine_putbits( &config->bs, config->mpeg.padding, 1 );
+- shine_putbits( &config->bs, config->mpeg.ext, 1 );
+- shine_putbits( &config->bs, config->mpeg.mode, 2 );
+- shine_putbits( &config->bs, config->mpeg.mode_ext, 2 );
+- shine_putbits( &config->bs, config->mpeg.copyright, 1 );
+- shine_putbits( &config->bs, config->mpeg.original, 1 );
+- shine_putbits( &config->bs, config->mpeg.emph, 2 );
+-
+- if ( config->mpeg.version == MPEG_I ) {
+- shine_putbits( &config->bs, 0, 9 );
+- if ( config->wave.channels == 2 )
+- shine_putbits( &config->bs, si.private_bits, 3 );
++ shine_side_info_t si = config->side_info;
++
++ shine_putbits(&config->bs, 0x7ff, 11);
++ shine_putbits(&config->bs, config->mpeg.version, 2);
++ shine_putbits(&config->bs, config->mpeg.layer, 2);
++ shine_putbits(&config->bs, !config->mpeg.crc, 1);
++ shine_putbits(&config->bs, config->mpeg.bitrate_index, 4);
++ shine_putbits(&config->bs, config->mpeg.samplerate_index % 3, 2);
++ shine_putbits(&config->bs, config->mpeg.padding, 1);
++ shine_putbits(&config->bs, config->mpeg.ext, 1);
++ shine_putbits(&config->bs, config->mpeg.mode, 2);
++ shine_putbits(&config->bs, config->mpeg.mode_ext, 2);
++ shine_putbits(&config->bs, config->mpeg.copyright, 1);
++ shine_putbits(&config->bs, config->mpeg.original, 1);
++ shine_putbits(&config->bs, config->mpeg.emph, 2);
++
++ if (config->mpeg.version == MPEG_I) {
++ shine_putbits(&config->bs, 0, 9);
++ if (config->wave.channels == 2)
++ shine_putbits(&config->bs, si.private_bits, 3);
+ else
+- shine_putbits( &config->bs, si.private_bits, 5 );
++ shine_putbits(&config->bs, si.private_bits, 5);
+ } else {
+- shine_putbits( &config->bs, 0, 8 );
+- if ( config->wave.channels == 2 )
+- shine_putbits( &config->bs, si.private_bits, 2 );
++ shine_putbits(&config->bs, 0, 8);
++ if (config->wave.channels == 2)
++ shine_putbits(&config->bs, si.private_bits, 2);
+ else
+- shine_putbits( &config->bs, si.private_bits, 1 );
++ shine_putbits(&config->bs, si.private_bits, 1);
+ }
+
+- if ( config->mpeg.version == MPEG_I )
+- for ( ch = 0; ch < config->wave.channels; ch++ ) {
+- for ( scfsi_band = 0; scfsi_band < 4; scfsi_band++ )
+- shine_putbits( &config->bs, si.scfsi[ch][scfsi_band], 1 );
++ if (config->mpeg.version == MPEG_I)
++ for (ch = 0; ch < config->wave.channels; ch++) {
++ for (scfsi_band = 0; scfsi_band < 4; scfsi_band++)
++ shine_putbits(&config->bs, si.scfsi[ch][scfsi_band], 1);
+ }
+
+- for ( gr = 0; gr < config->mpeg.granules_per_frame; gr++ )
+- for ( ch = 0; ch < config->wave.channels ; ch++ )
+- {
+- gr_info *gi = &(si.gr[gr].ch[ch].tt);
+-
+- shine_putbits( &config->bs, gi->part2_3_length, 12 );
+- shine_putbits( &config->bs, gi->big_values, 9 );
+- shine_putbits( &config->bs, gi->global_gain, 8 );
+- if ( config->mpeg.version == MPEG_I )
+- shine_putbits( &config->bs, gi->scalefac_compress, 4 );
+- else
+- shine_putbits( &config->bs, gi->scalefac_compress, 9 );
+- shine_putbits( &config->bs, 0, 1 );
+-
+- for ( region = 0; region < 3; region++ )
+- shine_putbits( &config->bs, gi->table_select[region], 5 );
+-
+- shine_putbits( &config->bs, gi->region0_count, 4 );
+- shine_putbits( &config->bs, gi->region1_count, 3 );
+-
+- if ( config->mpeg.version == MPEG_I )
+- shine_putbits( &config->bs, gi->preflag, 1 );
+- shine_putbits( &config->bs, gi->scalefac_scale, 1 );
+- shine_putbits( &config->bs, gi->count1table_select, 1 );
+- }
++ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++)
++ for (ch = 0; ch < config->wave.channels; ch++) {
++ gr_info *gi = &(si.gr[gr].ch[ch].tt);
++
++ shine_putbits(&config->bs, gi->part2_3_length, 12);
++ shine_putbits(&config->bs, gi->big_values, 9);
++ shine_putbits(&config->bs, gi->global_gain, 8);
++ if (config->mpeg.version == MPEG_I)
++ shine_putbits(&config->bs, gi->scalefac_compress, 4);
++ else
++ shine_putbits(&config->bs, gi->scalefac_compress, 9);
++ shine_putbits(&config->bs, 0, 1);
++
++ for (region = 0; region < 3; region++)
++ shine_putbits(&config->bs, gi->table_select[region], 5);
++
++ shine_putbits(&config->bs, gi->region0_count, 4);
++ shine_putbits(&config->bs, gi->region1_count, 3);
++
++ if (config->mpeg.version == MPEG_I)
++ shine_putbits(&config->bs, gi->preflag, 1);
++ shine_putbits(&config->bs, gi->scalefac_scale, 1);
++ shine_putbits(&config->bs, gi->count1table_select, 1);
++ }
+ }
+
+ /* Note the discussion of huffmancodebits() on pages 28 and 29 of the IS, as
+ well as the definitions of the side information on pages 26 and 27. */
+-static void Huffmancodebits( shine_global_config *config, int *ix, gr_info *gi )
+-{
+- const int *scalefac = &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
++static void Huffmancodebits(shine_global_config *config, int *ix, gr_info *gi) {
++ const int *scalefac =
++ &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
+ unsigned scalefac_index;
+ int region1Start, region2Start;
+ int i, bigvalues, count1End;
+@@ -164,168 +157,153 @@ static void Huffmancodebits( shine_global_config *config, int *ix, gr_info *gi )
+ bigvalues = gi->big_values << 1;
+
+ scalefac_index = gi->region0_count + 1;
+- region1Start = scalefac[ scalefac_index ];
++ region1Start = scalefac[scalefac_index];
+ scalefac_index += gi->region1_count + 1;
+- region2Start = scalefac[ scalefac_index ];
+-
+- for ( i = 0; i < bigvalues; i += 2 )
+- {
+- /* get table pointer */
+- int idx = (i >= region1Start) + (i >= region2Start);
+- unsigned tableindex = gi->table_select[idx];
+- /* get huffman code */
+- if ( tableindex )
+- {
+- x = ix[i];
+- y = ix[i + 1];
+- shine_HuffmanCode( &config->bs, tableindex, x, y );
+- }
++ region2Start = scalefac[scalefac_index];
++
++ for (i = 0; i < bigvalues; i += 2) {
++ /* get table pointer */
++ int idx = (i >= region1Start) + (i >= region2Start);
++ unsigned tableindex = gi->table_select[idx];
++ /* get huffman code */
++ if (tableindex) {
++ x = ix[i];
++ y = ix[i + 1];
++ shine_HuffmanCode(&config->bs, tableindex, x, y);
+ }
++ }
+
+ /* 2: Write count1 area */
+ h = &shine_huffman_table[gi->count1table_select + 32];
+- count1End = bigvalues + (gi->count1 <<2);
+- for ( i = bigvalues; i < count1End; i += 4 )
+- {
+- v = ix[i];
+- w = ix[i+1];
+- x = ix[i+2];
+- y = ix[i+3];
+- shine_huffman_coder_count1( &config->bs, h, v, w, x, y );
+- }
++ count1End = bigvalues + (gi->count1 << 2);
++ for (i = bigvalues; i < count1End; i += 4) {
++ v = ix[i];
++ w = ix[i + 1];
++ x = ix[i + 2];
++ y = ix[i + 3];
++ shine_huffman_coder_count1(&config->bs, h, v, w, x, y);
++ }
+
+ bits = shine_get_bits_count(&config->bs) - bits;
+ bits = gi->part2_3_length - gi->part2_length - bits;
+- if (bits)
+- {
+- int stuffingWords = bits / 32;
+- int remainingBits = bits % 32;
+-
+- /* Due to the nature of the Huffman code tables, we will pad with ones */
+- while ( stuffingWords-- )
+- shine_putbits( &config->bs, ~0, 32 );
+- if ( remainingBits )
+- shine_putbits( &config->bs, (1UL << remainingBits) - 1, remainingBits );
+- }
++ if (bits) {
++ int stuffingWords = bits / 32;
++ int remainingBits = bits % 32;
++
++ /* Due to the nature of the Huffman code tables, we will pad with ones */
++ while (stuffingWords--)
++ shine_putbits(&config->bs, ~0, 32);
++ if (remainingBits)
++ shine_putbits(&config->bs, (1UL << remainingBits) - 1, remainingBits);
++ }
+ }
+
+-static inline int shine_abs_and_sign( int *x )
+-{
+- if ( *x > 0 ) return 0;
++static inline int shine_abs_and_sign(int *x) {
++ if (*x > 0)
++ return 0;
+ *x *= -1;
+ return 1;
+ }
+
+-static void shine_huffman_coder_count1( bitstream_t *bs, const struct huffcodetab *h, int v, int w, int x, int y )
+-{
++static void shine_huffman_coder_count1(bitstream_t *bs,
++ const struct huffcodetab *h, int v,
++ int w, int x, int y) {
+ unsigned int signv, signw, signx, signy;
+ unsigned int code = 0;
+ int p, cbits = 0;
+
+- signv = shine_abs_and_sign( &v );
+- signw = shine_abs_and_sign( &w );
+- signx = shine_abs_and_sign( &x );
+- signy = shine_abs_and_sign( &y );
++ signv = shine_abs_and_sign(&v);
++ signw = shine_abs_and_sign(&w);
++ signx = shine_abs_and_sign(&x);
++ signy = shine_abs_and_sign(&y);
+
+ p = v + (w << 1) + (x << 2) + (y << 3);
+- shine_putbits( bs, h->table[p], h->hlen[p] );
++ shine_putbits(bs, h->table[p], h->hlen[p]);
+
+- if ( v ) {
++ if (v) {
+ code = signv;
+ cbits = 1;
+ }
+- if ( w ) {
++ if (w) {
+ code = (code << 1) | signw;
+ cbits++;
+ }
+- if ( x ) {
++ if (x) {
+ code = (code << 1) | signx;
+ cbits++;
+ }
+- if ( y ) {
++ if (y) {
+ code = (code << 1) | signy;
+ cbits++;
+ }
+- shine_putbits( bs, code, cbits );
++ shine_putbits(bs, code, cbits);
+ }
+
+ /* Implements the pseudocode of page 98 of the IS */
+-static void shine_HuffmanCode(bitstream_t *bs, int table_select, int x, int y)
+-{
++static void shine_HuffmanCode(bitstream_t *bs, int table_select, int x, int y) {
+ int cbits = 0, xbits = 0;
+ unsigned int code = 0, ext = 0;
+ unsigned signx, signy, ylen, idx;
+ const struct huffcodetab *h;
+
+- signx = shine_abs_and_sign( &x );
+- signy = shine_abs_and_sign( &y );
++ signx = shine_abs_and_sign(&x);
++ signy = shine_abs_and_sign(&y);
+
+ h = &(shine_huffman_table[table_select]);
+ ylen = h->ylen;
+
+- if ( table_select > 15 )
+- { /* ESC-table is used */
+- unsigned linbitsx = 0, linbitsy = 0, linbits = h->linbits;
+-
+- if ( x > 14 )
+- {
+- linbitsx = x - 15;
+- x = 15;
+- }
+- if ( y > 14 )
+- {
+- linbitsy = y - 15;
+- y = 15;
+- }
+-
+- idx = (x * ylen) + y;
+- code = h->table[idx];
+- cbits = h->hlen [idx];
+- if ( x > 14 )
+- {
+- ext |= linbitsx;
+- xbits += linbits;
+- }
+- if ( x != 0 )
+- {
+- ext <<= 1;
+- ext |= signx;
+- xbits += 1;
+- }
+- if ( y > 14 )
+- {
+- ext <<= linbits;
+- ext |= linbitsy;
+- xbits += linbits;
+- }
+- if ( y != 0 )
+- {
+- ext <<= 1;
+- ext |= signy;
+- xbits += 1;
+- }
+-
+- shine_putbits( bs, code, cbits);
+- shine_putbits( bs, ext, xbits);
++ if (table_select > 15) { /* ESC-table is used */
++ unsigned linbitsx = 0, linbitsy = 0, linbits = h->linbits;
++
++ if (x > 14) {
++ linbitsx = x - 15;
++ x = 15;
++ }
++ if (y > 14) {
++ linbitsy = y - 15;
++ y = 15;
++ }
++
++ idx = (x * ylen) + y;
++ code = h->table[idx];
++ cbits = h->hlen[idx];
++ if (x > 14) {
++ ext |= linbitsx;
++ xbits += linbits;
+ }
+- else
+- { /* No ESC-words */
+- idx = (x * ylen) + y;
+- code = h->table[idx];
+- cbits = h->hlen[idx];
+- if ( x != 0 )
+- {
+- code <<= 1;
+- code |= signx;
+- cbits += 1;
+- }
+- if ( y != 0 )
+- {
+- code <<= 1;
+- code |= signy;
+- cbits += 1;
+- }
+-
+- shine_putbits( bs, code, cbits);
++ if (x != 0) {
++ ext <<= 1;
++ ext |= signx;
++ xbits += 1;
+ }
++ if (y > 14) {
++ ext <<= linbits;
++ ext |= linbitsy;
++ xbits += linbits;
++ }
++ if (y != 0) {
++ ext <<= 1;
++ ext |= signy;
++ xbits += 1;
++ }
++
++ shine_putbits(bs, code, cbits);
++ shine_putbits(bs, ext, xbits);
++ } else { /* No ESC-words */
++ idx = (x * ylen) + y;
++ code = h->table[idx];
++ cbits = h->hlen[idx];
++ if (x != 0) {
++ code <<= 1;
++ code |= signx;
++ cbits += 1;
++ }
++ if (y != 0) {
++ code <<= 1;
++ code |= signy;
++ cbits += 1;
++ }
++
++ shine_putbits(bs, code, cbits);
++ }
+ }
+diff --git a/src/lib/l3bitstream.h b/src/lib/l3bitstream.h
+index 6e165f5..fa61899 100644
+--- a/src/lib/l3bitstream.h
++++ b/src/lib/l3bitstream.h
+@@ -1,6 +1,8 @@
+ #ifndef shine_BITSTREAM_H
+ #define shine_BITSTREAM_H
+
++#include "types.h"
++
+ void shine_format_bitstream(shine_global_config *config);
+
+ #endif
+diff --git a/src/lib/l3loop.c b/src/lib/l3loop.c
+index 609c2b2..d3799fb 100644
+--- a/src/lib/l3loop.c
++++ b/src/lib/l3loop.c
+@@ -1,34 +1,40 @@
+ /* l3loop.c */
+
+-#include "types.h"
+-#include "tables.h"
+ #include "l3loop.h"
+-#include "layer3.h"
+-#include "huffman.h"
+ #include "bitstream.h"
++#include "huffman.h"
+ #include "l3bitstream.h"
++#include "layer3.h"
+ #include "reservoir.h"
++#include "tables.h"
++#include "types.h"
+
+-#define e 2.71828182845
+-#define CBLIMIT 21
++#define e 2.71828182845
++#define CBLIMIT 21
+ #define SFB_LMAX 22
+ #define en_tot_krit 10
+ #define en_dif_krit 100
+ #define en_scfsi_band_krit 10
+ #define xm_scfsi_band_krit 10
+
+-static void calc_scfsi(shine_psy_xmin_t *l3_xmin, int ch, int gr, shine_global_config *config);
++static void calc_scfsi(shine_psy_xmin_t *l3_xmin, int ch, int gr,
++ shine_global_config *config);
+ static int part2_length(int gr, int ch, shine_global_config *config);
+-static int bin_search_StepSize(int desired_rate, int ix[GRANULE_SIZE], gr_info * cod_info, shine_global_config *config);
+-static int count_bit(int ix[GRANULE_SIZE], unsigned int start, unsigned int end, unsigned int table );
++static int bin_search_StepSize(int desired_rate, int ix[GRANULE_SIZE],
++ gr_info *cod_info, shine_global_config *config);
++static int count_bit(int ix[GRANULE_SIZE], unsigned int start, unsigned int end,
++ unsigned int table);
+ static int bigv_bitcount(int ix[GRANULE_SIZE], gr_info *gi);
+-static int new_choose_table( int ix[GRANULE_SIZE], unsigned int begin, unsigned int end );
+-static void bigv_tab_select( int ix[GRANULE_SIZE], gr_info *cod_info );
+-static void subdivide(gr_info *cod_info, shine_global_config *config );
+-static int count1_bitcount( int ix[ GRANULE_SIZE ], gr_info *cod_info );
+-static void calc_runlen( int ix[GRANULE_SIZE], gr_info *cod_info );
+-static void calc_xmin(shine_psy_ratio_t *ratio, gr_info *cod_info, shine_psy_xmin_t *l3_xmin, int gr, int ch );
+-static int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config);
++static int new_choose_table(int ix[GRANULE_SIZE], unsigned int begin,
++ unsigned int end);
++static void bigv_tab_select(int ix[GRANULE_SIZE], gr_info *cod_info);
++static void subdivide(gr_info *cod_info, shine_global_config *config);
++static int count1_bitcount(int ix[GRANULE_SIZE], gr_info *cod_info);
++static void calc_runlen(int ix[GRANULE_SIZE], gr_info *cod_info);
++static void calc_xmin(shine_psy_ratio_t *ratio, gr_info *cod_info,
++ shine_psy_xmin_t *l3_xmin, int gr, int ch);
++static int quantize(int ix[GRANULE_SIZE], int stepsize,
++ shine_global_config *config);
+
+ /*
+ * shine_inner_loop:
+@@ -36,25 +42,22 @@ static int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *con
+ * The code selects the best quantizerStepSize for a particular set
+ * of scalefacs.
+ */
+-int shine_inner_loop(int ix[GRANULE_SIZE],
+- int max_bits, gr_info *cod_info, int gr, int ch,
+- shine_global_config *config )
+-{
++int shine_inner_loop(int ix[GRANULE_SIZE], int max_bits, gr_info *cod_info,
++ int gr, int ch, shine_global_config *config) {
+ int bits, c1bits, bvbits;
+
+- if(max_bits<0)
++ if (max_bits < 0)
+ cod_info->quantizerStepSize--;
+- do
+- {
+- while(quantize(ix,++cod_info->quantizerStepSize,config) > 8192); /* within table range? */
+-
+- calc_runlen(ix,cod_info); /* rzero,count1,big_values*/
+- bits = c1bits = count1_bitcount(ix,cod_info); /* count1_table selection*/
+- subdivide(cod_info, config); /* bigvalues sfb division */
+- bigv_tab_select(ix,cod_info); /* codebook selection*/
+- bits += bvbits = bigv_bitcount( ix, cod_info ); /* bit count */
+- }
+- while(bits>max_bits);
++ do {
++ while (quantize(ix, ++cod_info->quantizerStepSize, config) > 8192)
++ ; /* within table range? */
++
++ calc_runlen(ix, cod_info); /* rzero,count1,big_values*/
++ bits = c1bits = count1_bitcount(ix, cod_info); /* count1_table selection*/
++ subdivide(cod_info, config); /* bigvalues sfb division */
++ bigv_tab_select(ix, cod_info); /* codebook selection*/
++ bits += bvbits = bigv_bitcount(ix, cod_info); /* bit count */
++ } while (bits > max_bits);
+ return bits;
+ }
+
+@@ -66,21 +69,22 @@ int shine_inner_loop(int ix[GRANULE_SIZE],
+ * global gain. This module calls the inner iteration loop.
+ */
+
+-int shine_outer_loop( int max_bits,
+- shine_psy_xmin_t *l3_xmin, /* the allowed distortion of the scalefactor */
+- int ix[GRANULE_SIZE], /* vector of quantized values ix(0..575) */
+- int gr, int ch, shine_global_config *config)
+-{
++int shine_outer_loop(
++ int max_bits,
++ shine_psy_xmin_t *l3_xmin, /* the allowed distortion of the scalefactor */
++ int ix[GRANULE_SIZE], /* vector of quantized values ix(0..575) */
++ int gr, int ch, shine_global_config *config) {
+ int bits, huff_bits;
+- shine_side_info_t *side_info = &config->side_info;
++ shine_side_info_t *side_info = &config->side_info;
+ gr_info *cod_info = &side_info->gr[gr].ch[ch].tt;
+
+- cod_info->quantizerStepSize = bin_search_StepSize(max_bits,ix,cod_info, config);
++ cod_info->quantizerStepSize =
++ bin_search_StepSize(max_bits, ix, cod_info, config);
+
+- cod_info->part2_length = part2_length(gr,ch,config);
++ cod_info->part2_length = part2_length(gr, ch, config);
+ huff_bits = max_bits - cod_info->part2_length;
+
+- bits = shine_inner_loop(ix, huff_bits, cod_info, gr, ch, config );
++ bits = shine_inner_loop(ix, huff_bits, cod_info, gr, ch, config);
+ cod_info->part2_3_length = cod_info->part2_length + bits;
+
+ return cod_info->part2_3_length;
+@@ -90,18 +94,15 @@ int shine_outer_loop( int max_bits,
+ * shine_iteration_loop:
+ * ------------------
+ */
+-void shine_iteration_loop(shine_global_config *config)
+-{
++void shine_iteration_loop(shine_global_config *config) {
+ shine_psy_xmin_t l3_xmin;
+ gr_info *cod_info;
+ int max_bits;
+ int ch, gr, i;
+ int *ix;
+
+- for(ch=config->wave.channels; ch--; )
+- {
+- for(gr=0; gr<config->mpeg.granules_per_frame; gr++)
+- {
++ for (ch = config->wave.channels; ch--;) {
++ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++) {
+ /* setup pointers */
+ ix = config->l3_enc[ch][gr];
+ config->l3loop.xr = config->mdct_freq[ch][gr];
+@@ -109,56 +110,58 @@ void shine_iteration_loop(shine_global_config *config)
+ /* Precalculate the square, abs, and maximum,
+ * for use later on.
+ */
+- for (i=GRANULE_SIZE, config->l3loop.xrmax=0; i--;)
+- {
+- config->l3loop.xrsq[i] = mulsr(config->l3loop.xr[i],config->l3loop.xr[i]);
++ for (i = GRANULE_SIZE, config->l3loop.xrmax = 0; i--;) {
++ config->l3loop.xrsq[i] =
++ mulsr(config->l3loop.xr[i], config->l3loop.xr[i]);
+ config->l3loop.xrabs[i] = labs(config->l3loop.xr[i]);
+- if(config->l3loop.xrabs[i]>config->l3loop.xrmax)
+- config->l3loop.xrmax=config->l3loop.xrabs[i];
++ if (config->l3loop.xrabs[i] > config->l3loop.xrmax)
++ config->l3loop.xrmax = config->l3loop.xrabs[i];
+ }
+
+- cod_info = (gr_info *) &(config->side_info.gr[gr].ch[ch]);
++ cod_info = (gr_info *)&(config->side_info.gr[gr].ch[ch]);
+ cod_info->sfb_lmax = SFB_LMAX - 1; /* gr_deco */
+
+- calc_xmin(&config->ratio, cod_info, &l3_xmin, gr, ch );
++ calc_xmin(&config->ratio, cod_info, &l3_xmin, gr, ch);
+
+- if ( config->mpeg.version == MPEG_I )
+- calc_scfsi(&l3_xmin,ch,gr,config);
++ if (config->mpeg.version == MPEG_I)
++ calc_scfsi(&l3_xmin, ch, gr, config);
+
+ /* calculation of number of available bit( per granule ) */
+- max_bits = shine_max_reservoir_bits(&config->pe[ch][gr],config);
++ max_bits = shine_max_reservoir_bits(&config->pe[ch][gr], config);
+
+ /* reset of iteration variables */
+- memset(config->scalefactor.l[gr][ch],0,sizeof(config->scalefactor.l[gr][ch]));
+- memset(config->scalefactor.s[gr][ch],0,sizeof(config->scalefactor.s[gr][ch]));
++ memset(config->scalefactor.l[gr][ch], 0,
++ sizeof(config->scalefactor.l[gr][ch]));
++ memset(config->scalefactor.s[gr][ch], 0,
++ sizeof(config->scalefactor.s[gr][ch]));
+
+- for ( i=4; i--; )
++ for (i = 4; i--;)
+ cod_info->slen[i] = 0;
+
+- cod_info->part2_3_length = 0;
+- cod_info->big_values = 0;
+- cod_info->count1 = 0;
++ cod_info->part2_3_length = 0;
++ cod_info->big_values = 0;
++ cod_info->count1 = 0;
+ cod_info->scalefac_compress = 0;
+- cod_info->table_select[0] = 0;
+- cod_info->table_select[1] = 0;
+- cod_info->table_select[2] = 0;
+- cod_info->region0_count = 0;
+- cod_info->region1_count = 0;
+- cod_info->part2_length = 0;
+- cod_info->preflag = 0;
+- cod_info->scalefac_scale = 0;
+- cod_info->count1table_select= 0;
++ cod_info->table_select[0] = 0;
++ cod_info->table_select[1] = 0;
++ cod_info->table_select[2] = 0;
++ cod_info->region0_count = 0;
++ cod_info->region1_count = 0;
++ cod_info->part2_length = 0;
++ cod_info->preflag = 0;
++ cod_info->scalefac_scale = 0;
++ cod_info->count1table_select = 0;
+
+ /* all spectral values zero ? */
+- if(config->l3loop.xrmax)
+- cod_info->part2_3_length = shine_outer_loop(max_bits,&l3_xmin,ix,
+- gr,ch,config);
++ if (config->l3loop.xrmax)
++ cod_info->part2_3_length =
++ shine_outer_loop(max_bits, &l3_xmin, ix, gr, ch, config);
+
+- shine_ResvAdjust(cod_info, config );
+- cod_info->global_gain = cod_info->quantizerStepSize+210;
++ shine_ResvAdjust(cod_info, config);
++ cod_info->global_gain = cod_info->quantizerStepSize + 210;
+
+ } /* for gr */
+- } /* for ch */
++ } /* for ch */
+
+ shine_ResvFrameEnd(config);
+ }
+@@ -168,21 +171,20 @@ void shine_iteration_loop(shine_global_config *config)
+ * -----------
+ * calculation of the scalefactor select information ( scfsi ).
+ */
+-void calc_scfsi( shine_psy_xmin_t *l3_xmin, int ch, int gr,
+- shine_global_config *config )
+-{
++void calc_scfsi(shine_psy_xmin_t *l3_xmin, int ch, int gr,
++ shine_global_config *config) {
+ shine_side_info_t *l3_side = &config->side_info;
+ /* This is the scfsi_band table from 2.4.2.7 of the IS */
+- static const int scfsi_band_long[5] = { 0, 6, 11, 16, 21 };
++ static const int scfsi_band_long[5] = {0, 6, 11, 16, 21};
+
+ int scfsi_band;
+- unsigned scfsi_set;
+
+ int sfb, start, end, i;
+ int condition = 0;
+ int temp;
+
+- const int *scalefac_band_long = &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
++ const int *scalefac_band_long =
++ &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
+
+ /* note. it goes quite a bit faster if you uncomment the next bit and exit
+ early from scfsi, but you then loose the advantage of common scale factors.
+@@ -194,82 +196,75 @@ void calc_scfsi( shine_psy_xmin_t *l3_xmin, int ch, int gr,
+ */
+
+ config->l3loop.xrmaxl[gr] = config->l3loop.xrmax;
+- scfsi_set = 0;
+
+ /* the total energy of the granule */
+- for ( temp = 0, i =GRANULE_SIZE; i--; )
+- temp += config->l3loop.xrsq[i]>>10; /* a bit of scaling to avoid overflow, (not very good) */
+- if ( temp )
+- config->l3loop.en_tot[gr] = log((double)temp * 4.768371584e-7) / LN2; /* 1024 / 0x7fffffff */
++ for (temp = 0, i = GRANULE_SIZE; i--;)
++ temp += config->l3loop.xrsq[i] >>
++ 10; /* a bit of scaling to avoid overflow, (not very good) */
++ if (temp)
++ config->l3loop.en_tot[gr] =
++ log((double)temp * 4.768371584e-7) / LN2; /* 1024 / 0x7fffffff */
+ else
+ config->l3loop.en_tot[gr] = 0;
+
+ /* the energy of each scalefactor band, en */
+ /* the allowed distortion of each scalefactor band, xm */
+
+- for(sfb=21; sfb--; )
+- {
+- start = scalefac_band_long[ sfb ];
+- end = scalefac_band_long[ sfb+1 ];
++ for (sfb = 21; sfb--;) {
++ start = scalefac_band_long[sfb];
++ end = scalefac_band_long[sfb + 1];
+
+- for ( temp = 0, i = start; i < end; i++ )
+- temp += config->l3loop.xrsq[i]>>10;
+- if ( temp )
+- config->l3loop.en[gr][sfb] = log((double)temp * 4.768371584e-7) / LN2; /* 1024 / 0x7fffffff */
++ for (temp = 0, i = start; i < end; i++)
++ temp += config->l3loop.xrsq[i] >> 10;
++ if (temp)
++ config->l3loop.en[gr][sfb] =
++ log((double)temp * 4.768371584e-7) / LN2; /* 1024 / 0x7fffffff */
+ else
+ config->l3loop.en[gr][sfb] = 0;
+
+- if ( l3_xmin->l[gr][ch][sfb])
+- config->l3loop.xm[gr][sfb] = log( l3_xmin->l[gr][ch][sfb] ) / LN2;
++ if (l3_xmin->l[gr][ch][sfb])
++ config->l3loop.xm[gr][sfb] = log(l3_xmin->l[gr][ch][sfb]) / LN2;
+ else
+ config->l3loop.xm[gr][sfb] = 0;
+ }
+
+- if(gr==1)
+- {
++ if (gr == 1) {
+ int gr2, tp;
+
+- for(gr2=2; gr2--; )
+- {
++ for (gr2 = 2; gr2--;) {
+ /* The spectral values are not all zero */
+- if(config->l3loop.xrmaxl[gr2])
++ if (config->l3loop.xrmaxl[gr2])
+ condition++;
+
+ condition++;
+ }
+- if(abs(config->l3loop.en_tot[0]-config->l3loop.en_tot[1]) < en_tot_krit)
++ if (abs(config->l3loop.en_tot[0] - config->l3loop.en_tot[1]) < en_tot_krit)
+ condition++;
+- for(tp=0,sfb=21; sfb--; )
+- tp += abs(config->l3loop.en[0][sfb]-config->l3loop.en[1][sfb]);
++ for (tp = 0, sfb = 21; sfb--;)
++ tp += abs(config->l3loop.en[0][sfb] - config->l3loop.en[1][sfb]);
+ if (tp < en_dif_krit)
+ condition++;
+
+- if(condition==6)
+- {
+- for(scfsi_band=0;scfsi_band<4;scfsi_band++)
+- {
++ if (condition == 6) {
++ for (scfsi_band = 0; scfsi_band < 4; scfsi_band++) {
+ int sum0 = 0, sum1 = 0;
+ l3_side->scfsi[ch][scfsi_band] = 0;
+ start = scfsi_band_long[scfsi_band];
+- end = scfsi_band_long[scfsi_band+1];
+- for ( sfb = start; sfb < end; sfb++ )
+- {
+- sum0 += abs( config->l3loop.en[0][sfb] - config->l3loop.en[1][sfb] );
+- sum1 += abs( config->l3loop.xm[0][sfb] - config->l3loop.xm[1][sfb] );
++ end = scfsi_band_long[scfsi_band + 1];
++ for (sfb = start; sfb < end; sfb++) {
++ sum0 += abs(config->l3loop.en[0][sfb] - config->l3loop.en[1][sfb]);
++ sum1 += abs(config->l3loop.xm[0][sfb] - config->l3loop.xm[1][sfb]);
+ }
+
+- if(sum0<en_scfsi_band_krit && sum1<xm_scfsi_band_krit)
+- {
++ if (sum0 < en_scfsi_band_krit && sum1 < xm_scfsi_band_krit) {
+ l3_side->scfsi[ch][scfsi_band] = 1;
+- scfsi_set |= (1 << scfsi_band);
+- }
+- else
++ } else
+ l3_side->scfsi[ch][scfsi_band] = 0;
+ } /* for scfsi_band */
+- } /* if condition == 6 */
++ } /* if condition == 6 */
+ else
+- for(scfsi_band=0;scfsi_band<4;scfsi_band++)
+- l3_side->scfsi[ch][scfsi_band] = 0;
++ for (scfsi_band = 0; scfsi_band < 4; scfsi_band++)
++ l3_side->scfsi[ch][scfsi_band] = 0;
+ } /* if gr == 1 */
+ }
+
+@@ -279,27 +274,26 @@ void calc_scfsi( shine_psy_xmin_t *l3_xmin, int ch, int gr,
+ * calculates the number of bits needed to encode the scalefacs in the
+ * main data block.
+ */
+-int part2_length(int gr, int ch, shine_global_config *config)
+-{
++int part2_length(int gr, int ch, shine_global_config *config) {
+ int slen1, slen2, bits;
+ gr_info *gi = &config->side_info.gr[gr].ch[ch].tt;
+
+ bits = 0;
+
+ {
+- slen1 = shine_slen1_tab[ gi->scalefac_compress ];
+- slen2 = shine_slen2_tab[ gi->scalefac_compress ];
++ slen1 = shine_slen1_tab[gi->scalefac_compress];
++ slen2 = shine_slen2_tab[gi->scalefac_compress];
+
+- if ( !gr || !(config->side_info.scfsi[ch][0]) )
++ if (!gr || !(config->side_info.scfsi[ch][0]))
+ bits += (6 * slen1);
+
+- if ( !gr || !(config->side_info.scfsi[ch][1]) )
++ if (!gr || !(config->side_info.scfsi[ch][1]))
+ bits += (5 * slen1);
+
+- if ( !gr || !(config->side_info.scfsi[ch][2]) )
++ if (!gr || !(config->side_info.scfsi[ch][2]))
+ bits += (5 * slen2);
+
+- if ( !gr || !(config->side_info.scfsi[ch][3]) )
++ if (!gr || !(config->side_info.scfsi[ch][3]))
+ bits += (5 * slen2);
+ }
+ return bits;
+@@ -312,26 +306,22 @@ int part2_length(int gr, int ch, shine_global_config *config)
+ * as determined by the psychoacoustic model.
+ * xmin(sb) = ratio(sb) * en(sb) / bw(sb)
+ */
+-void calc_xmin(shine_psy_ratio_t *ratio,
+- gr_info *cod_info,
+- shine_psy_xmin_t *l3_xmin,
+- int gr, int ch )
+-{
++void calc_xmin(shine_psy_ratio_t *ratio, gr_info *cod_info,
++ shine_psy_xmin_t *l3_xmin, int gr, int ch) {
+ int sfb;
+
+- for ( sfb = cod_info->sfb_lmax; sfb--; )
+- {
+-/* note. xmin will always be zero with no psychoacoustic model
++ for (sfb = cod_info->sfb_lmax; sfb--;) {
++ /* note. xmin will always be zero with no psychoacoustic model
+
+- start = scalefac_band_long[ sfb ];
+- end = scalefac_band_long[ sfb+1 ];
+- bw = end - start;
++ start = scalefac_band_long[ sfb ];
++ end = scalefac_band_long[ sfb+1 ];
++ bw = end - start;
+
+- for ( en = 0, l = start; l < end; l++ )
+- en += config->l3loop.xrsq[l];
++ for ( en = 0, l = start; l < end; l++ )
++ en += config->l3loop.xrsq[l];
+
+- l3_xmin->l[gr][ch][sfb] = ratio->l[gr][ch][sfb] * en / bw;
+-*/
++ l3_xmin->l[gr][ch][sfb] = ratio->l[gr][ch][sfb] * en / bw;
++ */
+ l3_xmin->l[gr][ch][sfb] = 0;
+ }
+ }
+@@ -341,8 +331,7 @@ void calc_xmin(shine_psy_ratio_t *ratio,
+ * -------------------
+ * Calculates the look up tables used by the iteration loop.
+ */
+-void shine_loop_initialise(shine_global_config *config)
+-{
++void shine_loop_initialise(shine_global_config *config) {
+ int i;
+
+ /* quantize: stepsize conversion, fourth root of 2 table.
+@@ -350,24 +339,26 @@ void shine_loop_initialise(shine_global_config *config)
+ * in the spec because it is quicker to do x*y than x/y.
+ * The 0.5 is for rounding.
+ */
+- for(i=128; i--;)
+- {
+- config->l3loop.steptab[i] = pow(2.0,(double)(127-i)/4);
+- if((config->l3loop.steptab[i]*2)>0x7fffffff) /* MAXINT = 2**31 = 2**(124/4) */
+- config->l3loop.steptabi[i]=0x7fffffff;
++ for (i = 128; i--;) {
++ config->l3loop.steptab[i] = pow(2.0, (double)(127 - i) / 4);
++ if ((config->l3loop.steptab[i] * 2) >
++ 0x7fffffff) /* MAXINT = 2**31 = 2**(124/4) */
++ config->l3loop.steptabi[i] = 0x7fffffff;
+ else
+ /* The table is multiplied by 2 to give an extra bit of accuracy.
+ * In quantize, the long multiply does not shift it's result left one
+ * bit to compensate.
+ */
+- config->l3loop.steptabi[i] = (int32_t)((config->l3loop.steptab[i]*2) + 0.5);
++ config->l3loop.steptabi[i] =
++ (int32_t)((config->l3loop.steptab[i] * 2) + 0.5);
+ }
+
+ /* quantize: vector conversion, three quarter power table.
+ * The 0.5 is for rounding, the .0946 comes from the spec.
+ */
+- for(i=10000; i--;)
+- config->l3loop.int2idx[i] = (int)(sqrt(sqrt((double)i)*(double)i) - 0.0946 + 0.5);
++ for (i = 10000; i--;)
++ config->l3loop.int2idx[i] =
++ (int)(sqrt(sqrt((double)i) * (double)i) - 0.0946 + 0.5);
+ }
+
+ /*
+@@ -376,39 +367,37 @@ void shine_loop_initialise(shine_global_config *config)
+ * Function: Quantization of the vector xr ( -> ix).
+ * Returns maximum value of ix.
+ */
+-int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config )
+-{
++int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config) {
+ int i, max, ln;
+ int32_t scalei;
+ double scale, dbl;
+
+- scalei = config->l3loop.steptabi[stepsize+127]; /* 2**(-stepsize/4) */
++ scalei = config->l3loop.steptabi[stepsize + 127]; /* 2**(-stepsize/4) */
+
+ /* a quick check to see if ixmax will be less than 8192 */
+ /* this speeds up the early calls to bin_search_StepSize */
+- if((mulr(config->l3loop.xrmax,scalei)) > 165140) /* 8192**(4/3) */
++ if ((mulr(config->l3loop.xrmax, scalei)) > 165140) /* 8192**(4/3) */
+ max = 16384; /* no point in continuing, stepsize not big enough */
+ else
+- for(i=0, max=0;i<GRANULE_SIZE;i++)
+- {
++ for (i = 0, max = 0; i < GRANULE_SIZE; i++) {
+ /* This calculation is very sensitive. The multiply must round it's
+ * result or bad things happen to the quality.
+ */
+- ln = mulr(labs(config->l3loop.xr[i]),scalei);
++ ln = mulr(labs(config->l3loop.xr[i]), scalei);
+
+- if(ln<10000) /* ln < 10000 catches most values */
++ if (ln < 10000) /* ln < 10000 catches most values */
+ ix[i] = config->l3loop.int2idx[ln]; /* quick look up method */
+- else
+- {
++ else {
+ /* outside table range so have to do it using floats */
+- scale = config->l3loop.steptab[stepsize+127]; /* 2**(-stepsize/4) */
+- dbl = ((double)config->l3loop.xrabs[i]) * scale * 4.656612875e-10; /* 0x7fffffff */
+- ix[i] = (int)sqrt(sqrt(dbl)*dbl); /* dbl**(3/4) */
++ scale = config->l3loop.steptab[stepsize + 127]; /* 2**(-stepsize/4) */
++ dbl = ((double)config->l3loop.xrabs[i]) * scale *
++ 4.656612875e-10; /* 0x7fffffff */
++ ix[i] = (int)sqrt(sqrt(dbl) * dbl); /* dbl**(3/4) */
+ }
+
+ /* calculate ixmax while we're here */
+ /* note. ix cannot be negative */
+- if(max < ix[i])
++ if (max < ix[i])
+ max = ix[i];
+ }
+
+@@ -420,13 +409,13 @@ int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config )
+ * -------
+ * Function: Calculate the maximum of ix from 0 to 575
+ */
+-static inline int ix_max( int ix[GRANULE_SIZE], unsigned int begin, unsigned int end )
+-{
++static inline int ix_max(int ix[GRANULE_SIZE], unsigned int begin,
++ unsigned int end) {
+ register int i;
+ register int max = 0;
+
+- for(i=begin;i<end;i++)
+- if(max < ix[i])
++ for (i = begin; i < end; i++)
++ if (max < ix[i])
+ max = ix[i];
+ return max;
+ }
+@@ -437,28 +426,24 @@ static inline int ix_max( int ix[GRANULE_SIZE], unsigned int begin, unsigned int
+ * Function: Calculation of rzero, count1, big_values
+ * (Partitions ix into big values, quadruples and zeros).
+ */
+-void calc_runlen( int ix[GRANULE_SIZE], gr_info *cod_info )
+-{
++void calc_runlen(int ix[GRANULE_SIZE], gr_info *cod_info) {
+ int i;
+ int rzero = 0;
+
+- for ( i = GRANULE_SIZE; i > 1; i -= 2 )
+- if ( !ix[i-1] && !ix[i-2] )
++ for (i = GRANULE_SIZE; i > 1; i -= 2)
++ if (!ix[i - 1] && !ix[i - 2])
+ rzero++;
+ else
+ break;
+
+- cod_info->count1 = 0 ;
+- for ( ; i > 3; i -= 4 )
+- if ( ix[i-1] <= 1
+- && ix[i-2] <= 1
+- && ix[i-3] <= 1
+- && ix[i-4] <= 1 )
++ cod_info->count1 = 0;
++ for (; i > 3; i -= 4)
++ if (ix[i - 1] <= 1 && ix[i - 2] <= 1 && ix[i - 3] <= 1 && ix[i - 4] <= 1)
+ cod_info->count1++;
+ else
+ break;
+
+- cod_info->big_values = i>>1;
++ cod_info->big_values = i >> 1;
+ }
+
+ /*
+@@ -466,27 +451,29 @@ void calc_runlen( int ix[GRANULE_SIZE], gr_info *cod_info )
+ * ----------------
+ * Determines the number of bits to encode the quadruples.
+ */
+-int count1_bitcount(int ix[GRANULE_SIZE], gr_info *cod_info)
+-{
++int count1_bitcount(int ix[GRANULE_SIZE], gr_info *cod_info) {
+ int p, i, k;
+ int v, w, x, y, signbits;
+- int sum0 = 0,
+- sum1 = 0;
++ int sum0 = 0, sum1 = 0;
+
+- for(i=cod_info->big_values<<1, k=0; k<cod_info->count1; i+=4, k++)
+- {
++ for (i = cod_info->big_values << 1, k = 0; k < cod_info->count1;
++ i += 4, k++) {
+ v = ix[i];
+- w = ix[i+1];
+- x = ix[i+2];
+- y = ix[i+3];
++ w = ix[i + 1];
++ x = ix[i + 2];
++ y = ix[i + 3];
+
+- p = v + (w<<1) + (x<<2) + (y<<3);
++ p = v + (w << 1) + (x << 2) + (y << 3);
+
+ signbits = 0;
+- if(v!=0) signbits++;
+- if(w!=0) signbits++;
+- if(x!=0) signbits++;
+- if(y!=0) signbits++;
++ if (v != 0)
++ signbits++;
++ if (w != 0)
++ signbits++;
++ if (x != 0)
++ signbits++;
++ if (y != 0)
++ signbits++;
+
+ sum0 += signbits;
+ sum1 += signbits;
+@@ -495,13 +482,10 @@ int count1_bitcount(int ix[GRANULE_SIZE], gr_info *cod_info)
+ sum1 += shine_huffman_table[33].hlen[p];
+ }
+
+- if(sum0<sum1)
+- {
++ if (sum0 < sum1) {
+ cod_info->count1table_select = 0;
+ return sum0;
+- }
+- else
+- {
++ } else {
+ cod_info->count1table_select = 1;
+ return sum1;
+ }
+@@ -510,59 +494,56 @@ int count1_bitcount(int ix[GRANULE_SIZE], gr_info *cod_info)
+ /*
+ * subdivide:
+ * ----------
+- * presumable subdivides the bigvalue region which will use separate Huffman tables.
++ * presumable subdivides the bigvalue region which will use separate Huffman
++ * tables.
+ */
+-void subdivide(gr_info *cod_info, shine_global_config *config)
+-{
+- static const struct
+- {
++void subdivide(gr_info *cod_info, shine_global_config *config) {
++ static const struct {
+ unsigned region0_count;
+ unsigned region1_count;
+- } subdv_table[ 23 ] =
+- {
+- {0, 0}, /* 0 bands */
+- {0, 0}, /* 1 bands */
+- {0, 0}, /* 2 bands */
+- {0, 0}, /* 3 bands */
+- {0, 0}, /* 4 bands */
+- {0, 1}, /* 5 bands */
+- {1, 1}, /* 6 bands */
+- {1, 1}, /* 7 bands */
+- {1, 2}, /* 8 bands */
+- {2, 2}, /* 9 bands */
+- {2, 3}, /* 10 bands */
+- {2, 3}, /* 11 bands */
+- {3, 4}, /* 12 bands */
+- {3, 4}, /* 13 bands */
+- {3, 4}, /* 14 bands */
+- {4, 5}, /* 15 bands */
+- {4, 5}, /* 16 bands */
+- {4, 6}, /* 17 bands */
+- {5, 6}, /* 18 bands */
+- {5, 6}, /* 19 bands */
+- {5, 7}, /* 20 bands */
+- {6, 7}, /* 21 bands */
+- {6, 7}, /* 22 bands */
++ } subdv_table[23] = {
++ {0, 0}, /* 0 bands */
++ {0, 0}, /* 1 bands */
++ {0, 0}, /* 2 bands */
++ {0, 0}, /* 3 bands */
++ {0, 0}, /* 4 bands */
++ {0, 1}, /* 5 bands */
++ {1, 1}, /* 6 bands */
++ {1, 1}, /* 7 bands */
++ {1, 2}, /* 8 bands */
++ {2, 2}, /* 9 bands */
++ {2, 3}, /* 10 bands */
++ {2, 3}, /* 11 bands */
++ {3, 4}, /* 12 bands */
++ {3, 4}, /* 13 bands */
++ {3, 4}, /* 14 bands */
++ {4, 5}, /* 15 bands */
++ {4, 5}, /* 16 bands */
++ {4, 6}, /* 17 bands */
++ {5, 6}, /* 18 bands */
++ {5, 6}, /* 19 bands */
++ {5, 7}, /* 20 bands */
++ {6, 7}, /* 21 bands */
++ {6, 7}, /* 22 bands */
+ };
+
+- if (!cod_info->big_values)
+- { /* no big_values region */
++ if (!cod_info->big_values) { /* no big_values region */
+ cod_info->region0_count = 0;
+ cod_info->region1_count = 0;
+- }
+- else
+- {
+- const int *scalefac_band_long = &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
++ } else {
++ const int *scalefac_band_long =
++ &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
+ int bigvalues_region, scfb_anz, thiscount;
+
+ bigvalues_region = 2 * cod_info->big_values;
+
+ /* Calculate scfb_anz */
+ scfb_anz = 0;
+- while ( scalefac_band_long[scfb_anz] < bigvalues_region )
++ while (scalefac_band_long[scfb_anz] < bigvalues_region)
+ scfb_anz++;
+
+- for (thiscount = subdv_table[scfb_anz].region0_count; thiscount; thiscount--) {
++ for (thiscount = subdv_table[scfb_anz].region0_count; thiscount;
++ thiscount--) {
+ if (scalefac_band_long[thiscount + 1] <= bigvalues_region)
+ break;
+ }
+@@ -571,7 +552,8 @@ void subdivide(gr_info *cod_info, shine_global_config *config)
+
+ scalefac_band_long += cod_info->region0_count + 1;
+
+- for (thiscount = subdv_table[scfb_anz].region1_count; thiscount; thiscount--) {
++ for (thiscount = subdv_table[scfb_anz].region1_count; thiscount;
++ thiscount--) {
+ if (scalefac_band_long[thiscount + 1] <= bigvalues_region)
+ break;
+ }
+@@ -587,21 +569,22 @@ void subdivide(gr_info *cod_info, shine_global_config *config)
+ * ----------------
+ * Function: Select huffman code tables for bigvalues regions
+ */
+-void bigv_tab_select( int ix[GRANULE_SIZE], gr_info *cod_info )
+-{
++void bigv_tab_select(int ix[GRANULE_SIZE], gr_info *cod_info) {
+ cod_info->table_select[0] = 0;
+ cod_info->table_select[1] = 0;
+ cod_info->table_select[2] = 0;
+
+ {
+- if ( cod_info->address1 > 0 )
+- cod_info->table_select[0] = new_choose_table( ix, 0, cod_info->address1 );
++ if (cod_info->address1 > 0)
++ cod_info->table_select[0] = new_choose_table(ix, 0, cod_info->address1);
+
+- if ( cod_info->address2 > cod_info->address1 )
+- cod_info->table_select[1] = new_choose_table( ix, cod_info->address1, cod_info->address2 );
++ if (cod_info->address2 > cod_info->address1)
++ cod_info->table_select[1] =
++ new_choose_table(ix, cod_info->address1, cod_info->address2);
+
+- if ( cod_info->big_values<<1 > cod_info->address2 )
+- cod_info->table_select[2] = new_choose_table( ix, cod_info->address2, cod_info->big_values<<1 );
++ if (cod_info->big_values << 1 > cod_info->address2)
++ cod_info->table_select[2] =
++ new_choose_table(ix, cod_info->address2, cod_info->big_values << 1);
+ }
+ }
+
+@@ -614,98 +597,89 @@ void bigv_tab_select( int ix[GRANULE_SIZE], gr_info *cod_info )
+ * of the Huffman tables as defined in the IS (Table B.7), and will not work
+ * with any arbitrary tables.
+ */
+-int new_choose_table( int ix[GRANULE_SIZE], unsigned int begin, unsigned int end )
+-{
++int new_choose_table(int ix[GRANULE_SIZE], unsigned int begin,
++ unsigned int end) {
+ int i, max;
+ int choice[2];
+ int sum[2];
+
+- max = ix_max(ix,begin,end);
+- if(!max)
++ max = ix_max(ix, begin, end);
++ if (!max)
+ return 0;
+
+ choice[0] = 0;
+ choice[1] = 0;
+
+- if(max<15)
+- {
++ if (max < 15) {
+ /* try tables with no linbits */
+- for ( i =14; i--; )
+- if ( shine_huffman_table[i].xlen > max )
+- {
++ for (i = 14; i--;)
++ if (shine_huffman_table[i].xlen > max) {
+ choice[0] = i;
+ break;
+ }
+
+- sum[0] = count_bit( ix, begin, end, choice[0] );
++ sum[0] = count_bit(ix, begin, end, choice[0]);
+
+- switch (choice[0])
+- {
+- case 2:
+- sum[1] = count_bit( ix, begin, end, 3 );
+- if ( sum[1] <= sum[0] )
+- choice[0] = 3;
+- break;
++ switch (choice[0]) {
++ case 2:
++ sum[1] = count_bit(ix, begin, end, 3);
++ if (sum[1] <= sum[0])
++ choice[0] = 3;
++ break;
+
+- case 5:
+- sum[1] = count_bit( ix, begin, end, 6 );
+- if ( sum[1] <= sum[0] )
+- choice[0] = 6;
+- break;
++ case 5:
++ sum[1] = count_bit(ix, begin, end, 6);
++ if (sum[1] <= sum[0])
++ choice[0] = 6;
++ break;
+
+- case 7:
+- sum[1] = count_bit( ix, begin, end, 8 );
+- if ( sum[1] <= sum[0] )
+- {
+- choice[0] = 8;
+- sum[0] = sum[1];
+- }
+- sum[1] = count_bit( ix, begin, end, 9 );
+- if ( sum[1] <= sum[0] )
+- choice[0] = 9;
+- break;
++ case 7:
++ sum[1] = count_bit(ix, begin, end, 8);
++ if (sum[1] <= sum[0]) {
++ choice[0] = 8;
++ sum[0] = sum[1];
++ }
++ sum[1] = count_bit(ix, begin, end, 9);
++ if (sum[1] <= sum[0])
++ choice[0] = 9;
++ break;
+
+- case 10:
+- sum[1] = count_bit( ix, begin, end, 11 );
+- if ( sum[1] <= sum[0] )
+- {
+- choice[0] = 11;
+- sum[0] = sum[1];
+- }
+- sum[1] = count_bit( ix, begin, end, 12 );
+- if ( sum[1] <= sum[0] )
+- choice[0] = 12;
+- break;
++ case 10:
++ sum[1] = count_bit(ix, begin, end, 11);
++ if (sum[1] <= sum[0]) {
++ choice[0] = 11;
++ sum[0] = sum[1];
++ }
++ sum[1] = count_bit(ix, begin, end, 12);
++ if (sum[1] <= sum[0])
++ choice[0] = 12;
++ break;
+
+- case 13:
+- sum[1] = count_bit( ix, begin, end, 15 );
+- if ( sum[1] <= sum[0] )
+- choice[0] = 15;
+- break;
++ case 13:
++ sum[1] = count_bit(ix, begin, end, 15);
++ if (sum[1] <= sum[0])
++ choice[0] = 15;
++ break;
+ }
+- }
+- else
+- {
++ } else {
+ /* try tables with linbits */
+ max -= 15;
+
+- for(i=15;i<24;i++)
+- if(shine_huffman_table[i].linmax>=max)
+- {
++ for (i = 15; i < 24; i++)
++ if (shine_huffman_table[i].linmax >= max) {
+ choice[0] = i;
+ break;
+ }
+
+- for(i=24;i<32;i++)
+- if(shine_huffman_table[i].linmax>=max)
+- {
++ for (i = 24; i < 32; i++)
++ if (shine_huffman_table[i].linmax >= max) {
+ choice[1] = i;
+ break;
+ }
+
+- sum[0] = count_bit(ix,begin,end,choice[0]);
+- sum[1] = count_bit(ix,begin,end,choice[1]);
+- if (sum[1]<sum[0])
++ sum[0] = count_bit(ix, begin, end, choice[0]);
++ sum[1] = count_bit(ix, begin, end, choice[1]);
++ if (sum[1] < sum[0])
+ choice[0] = choice[1];
+ }
+ return choice[0];
+@@ -716,17 +690,16 @@ int new_choose_table( int ix[GRANULE_SIZE], unsigned int begin, unsigned int end
+ * --------------
+ * Function: Count the number of bits necessary to code the bigvalues region.
+ */
+-int bigv_bitcount(int ix[GRANULE_SIZE], gr_info *gi)
+-{
++int bigv_bitcount(int ix[GRANULE_SIZE], gr_info *gi) {
+ int bits = 0;
+ unsigned int table;
+
+- if( (table=gi->table_select[0])) /* region0 */
+- bits += count_bit(ix, 0, gi->address1, table );
+- if( (table=gi->table_select[1])) /* region1 */
+- bits += count_bit(ix, gi->address1, gi->address2, table );
+- if( (table=gi->table_select[2])) /* region2 */
+- bits += count_bit(ix, gi->address2, gi->address3, table );
++ if ((table = gi->table_select[0])) /* region0 */
++ bits += count_bit(ix, 0, gi->address1, table);
++ if ((table = gi->table_select[1])) /* region1 */
++ bits += count_bit(ix, gi->address1, gi->address2, table);
++ if ((table = gi->table_select[2])) /* region2 */
++ bits += count_bit(ix, gi->address2, gi->address3, table);
+ return bits;
+ }
+
+@@ -735,61 +708,51 @@ int bigv_bitcount(int ix[GRANULE_SIZE], gr_info *gi)
+ * ----------
+ * Function: Count the number of bits necessary to code the subregion.
+ */
+-int count_bit(int ix[GRANULE_SIZE],
+- unsigned int start,
+- unsigned int end,
+- unsigned int table )
+-{
+- unsigned linbits, ylen;
+- register int i, sum;
+- register int x,y;
++int count_bit(int ix[GRANULE_SIZE], unsigned int start, unsigned int end,
++ unsigned int table) {
++ unsigned linbits, ylen;
++ register int i, sum;
++ register int x, y;
+ const struct huffcodetab *h;
+
+- if(!table)
++ if (!table)
+ return 0;
+
+- h = &(shine_huffman_table[table]);
++ h = &(shine_huffman_table[table]);
+ sum = 0;
+
+- ylen = h->ylen;
++ ylen = h->ylen;
+ linbits = h->linbits;
+
+- if(table>15)
+- { /* ESC-table is used */
+- for(i=start;i<end;i+=2)
+- {
++ if (table > 15) { /* ESC-table is used */
++ for (i = start; i < end; i += 2) {
+ x = ix[i];
+- y = ix[i+1];
+- if(x>14)
+- {
++ y = ix[i + 1];
++ if (x > 14) {
+ x = 15;
+ sum += linbits;
+ }
+- if(y>14)
+- {
++ if (y > 14) {
+ y = 15;
+ sum += linbits;
+ }
+
+- sum += h->hlen[(x*ylen)+y];
+- if(x)
++ sum += h->hlen[(x * ylen) + y];
++ if (x)
+ sum++;
+- if(y)
++ if (y)
+ sum++;
+ }
+- }
+- else
+- { /* No ESC-words */
+- for(i=start;i<end;i+=2)
+- {
++ } else { /* No ESC-words */
++ for (i = start; i < end; i += 2) {
+ x = ix[i];
+- y = ix[i+1];
++ y = ix[i + 1];
+
+- sum += h->hlen[(x*ylen)+y];
++ sum += h->hlen[(x * ylen) + y];
+
+- if(x!=0)
++ if (x != 0)
+ sum++;
+- if(y!=0)
++ if (y != 0)
+ sum++;
+ }
+ }
+@@ -809,20 +772,18 @@ int count_bit(int ix[GRANULE_SIZE],
+ * returns a good starting quantizerStepSize.
+ */
+ int bin_search_StepSize(int desired_rate, int ix[GRANULE_SIZE],
+- gr_info * cod_info, shine_global_config *config)
+-{
++ gr_info *cod_info, shine_global_config *config) {
+ int bit, next, count;
+
+- next = -120;
++ next = -120;
+ count = 120;
+
+ do {
+ int half = count / 2;
+
+ if (quantize(ix, next + half, config) > 8192)
+- bit = 100000; /* fail */
+- else
+- {
++ bit = 100000; /* fail */
++ else {
+ calc_runlen(ix, cod_info); /* rzero,count1,big_values */
+ bit = count1_bitcount(ix, cod_info); /* count1_table selection */
+ subdivide(cod_info, config); /* bigvalues sfb division */
+@@ -832,8 +793,7 @@ int bin_search_StepSize(int desired_rate, int ix[GRANULE_SIZE],
+
+ if (bit < desired_rate)
+ count = half;
+- else
+- {
++ else {
+ next += half;
+ count -= half;
+ }
+diff --git a/src/lib/l3loop.h b/src/lib/l3loop.h
+index 0e71a91..94ecea3 100644
+--- a/src/lib/l3loop.h
++++ b/src/lib/l3loop.h
+@@ -1,9 +1,10 @@
+ #ifndef L3LOOP_H
+ #define L3LOOP_H
+
++#include "types.h"
++
+ void shine_loop_initialise(shine_global_config *config);
+
+ void shine_iteration_loop(shine_global_config *config);
+
+ #endif
+-
+diff --git a/src/lib/l3mdct.c b/src/lib/l3mdct.c
+index 7553a54..a76b702 100644
+--- a/src/lib/l3mdct.c
++++ b/src/lib/l3mdct.c
+@@ -1,88 +1,87 @@
+ /* L3mdct */
+
+-#include "types.h"
+ #include "l3mdct.h"
+ #include "l3subband.h"
++#include "types.h"
+
+ /* This is table B.9: coefficients for aliasing reduction */
+-#define MDCT_CA(coef) (int32_t)(coef / sqrt(1.0 + (coef * coef)) * 0x7fffffff)
+-#define MDCT_CS(coef) (int32_t)(1.0 / sqrt(1.0 + (coef * coef)) * 0x7fffffff)
++#define MDCT_CA(coef) (int32_t)(coef / sqrt(1.0 + (coef * coef)) * 0x7fffffff)
++#define MDCT_CS(coef) (int32_t)(1.0 / sqrt(1.0 + (coef * coef)) * 0x7fffffff)
+
+-#define MDCT_CA0 MDCT_CA(-0.6)
+-#define MDCT_CA1 MDCT_CA(-0.535)
+-#define MDCT_CA2 MDCT_CA(-0.33)
+-#define MDCT_CA3 MDCT_CA(-0.185)
+-#define MDCT_CA4 MDCT_CA(-0.095)
+-#define MDCT_CA5 MDCT_CA(-0.041)
+-#define MDCT_CA6 MDCT_CA(-0.0142)
+-#define MDCT_CA7 MDCT_CA(-0.0037)
++#define MDCT_CA0 MDCT_CA(-0.6)
++#define MDCT_CA1 MDCT_CA(-0.535)
++#define MDCT_CA2 MDCT_CA(-0.33)
++#define MDCT_CA3 MDCT_CA(-0.185)
++#define MDCT_CA4 MDCT_CA(-0.095)
++#define MDCT_CA5 MDCT_CA(-0.041)
++#define MDCT_CA6 MDCT_CA(-0.0142)
++#define MDCT_CA7 MDCT_CA(-0.0037)
+
+-#define MDCT_CS0 MDCT_CS(-0.6)
+-#define MDCT_CS1 MDCT_CS(-0.535)
+-#define MDCT_CS2 MDCT_CS(-0.33)
+-#define MDCT_CS3 MDCT_CS(-0.185)
+-#define MDCT_CS4 MDCT_CS(-0.095)
+-#define MDCT_CS5 MDCT_CS(-0.041)
+-#define MDCT_CS6 MDCT_CS(-0.0142)
+-#define MDCT_CS7 MDCT_CS(-0.0037)
++#define MDCT_CS0 MDCT_CS(-0.6)
++#define MDCT_CS1 MDCT_CS(-0.535)
++#define MDCT_CS2 MDCT_CS(-0.33)
++#define MDCT_CS3 MDCT_CS(-0.185)
++#define MDCT_CS4 MDCT_CS(-0.095)
++#define MDCT_CS5 MDCT_CS(-0.041)
++#define MDCT_CS6 MDCT_CS(-0.0142)
++#define MDCT_CS7 MDCT_CS(-0.0037)
+
+ /*
+ * shine_mdct_initialise:
+ * -------------------
+ */
+-void shine_mdct_initialise(shine_global_config *config)
+-{
+- int m,k;
++void shine_mdct_initialise(shine_global_config *config) {
++ int m, k;
+
+ /* prepare the mdct coefficients */
+- for(m=18; m--; )
+- for(k=36; k--; )
++ for (m = 18; m--;)
++ for (k = 36; k--;)
+ /* combine window and mdct coefficients into a single table */
+ /* scale and convert to fixed point before storing */
+- config->mdct.cos_l[m][k] = (int32_t)(sin(PI36*(k+0.5))
+- * cos((PI/72)*(2*k+19)*(2*m+1)) * 0x7fffffff);
++ config->mdct.cos_l[m][k] =
++ (int32_t)(sin(PI36 * (k + 0.5)) *
++ cos((PI / 72) * (2 * k + 19) * (2 * m + 1)) * 0x7fffffff);
+ }
+
+ /*
+ * shine_mdct_sub:
+ * ------------
+ */
+-void shine_mdct_sub(shine_global_config *config, int stride)
+-{
++void shine_mdct_sub(shine_global_config *config, int stride) {
+ /* note. we wish to access the array 'config->mdct_freq[2][2][576]' as
+ * [2][2][32][18]. (32*18=576),
+ */
+- int32_t (*mdct_enc)[18];
++ int32_t(*mdct_enc)[18];
+
+- int ch,gr,band,j,k;
++ int ch, gr, band, j, k;
+ int32_t mdct_in[36];
+
+- for(ch=config->wave.channels; ch--; )
+- {
+- for(gr=0; gr<config->mpeg.granules_per_frame; gr++)
+- {
++ for (ch = config->wave.channels; ch--;) {
++ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++) {
+ /* set up pointer to the part of config->mdct_freq we're using */
+- mdct_enc = (int32_t (*)[18]) config->mdct_freq[ch][gr];
++ mdct_enc = (int32_t(*)[18])config->mdct_freq[ch][gr];
+
+ /* polyphase filtering */
+- for(k=0; k<18; k+=2)
+- {
+- shine_window_filter_subband(&config->buffer[ch], &config->l3_sb_sample[ch][gr+1][k ][0], ch, config, stride);
+- shine_window_filter_subband(&config->buffer[ch], &config->l3_sb_sample[ch][gr+1][k+1][0], ch, config, stride);
++ for (k = 0; k < 18; k += 2) {
++ shine_window_filter_subband(&config->buffer[ch],
++ &config->l3_sb_sample[ch][gr + 1][k][0], ch,
++ config, stride);
++ shine_window_filter_subband(&config->buffer[ch],
++ &config->l3_sb_sample[ch][gr + 1][k + 1][0],
++ ch, config, stride);
+ /* Compensate for inversion in the analysis filter
+ * (every odd index of band AND k)
+ */
+- for(band=1; band<32; band+=2)
+- config->l3_sb_sample[ch][gr+1][k+1][band] *= -1;
++ for (band = 1; band < 32; band += 2)
++ config->l3_sb_sample[ch][gr + 1][k + 1][band] *= -1;
+ }
+
+- /* Perform imdct of 18 previous subband samples + 18 current subband samples */
+- for(band=0; band<32; band++)
+- {
+- for(k=18; k--; )
+- {
+- mdct_in[k ] = config->l3_sb_sample[ch][gr ][k][band];
+- mdct_in[k+18] = config->l3_sb_sample[ch][gr+1][k][band];
++ /* Perform imdct of 18 previous subband samples + 18 current subband
++ * samples */
++ for (band = 0; band < 32; band++) {
++ for (k = 18; k--;) {
++ mdct_in[k] = config->l3_sb_sample[ch][gr][k][band];
++ mdct_in[k + 18] = config->l3_sb_sample[ch][gr + 1][k][band];
+ }
+
+ /* Calculation of the MDCT
+@@ -90,41 +89,61 @@ void shine_mdct_sub(shine_global_config *config, int stride)
+ * 36 coefficients in the time domain and 18 in the frequency
+ * domain.
+ */
+- for(k=18; k--; )
+- {
++ for (k = 18; k--;) {
+ int32_t vm;
++#ifdef __BORLANDC__
++ uint32_t vm_lo;
++#else
+ uint32_t vm_lo __attribute__((unused));
++#endif
+
+ mul0(vm, vm_lo, mdct_in[35], config->mdct.cos_l[k][35]);
+- for(j=35; j; j-=7) {
+- muladd(vm, vm_lo, mdct_in[j-1], config->mdct.cos_l[k][j-1]);
+- muladd(vm, vm_lo, mdct_in[j-2], config->mdct.cos_l[k][j-2]);
+- muladd(vm, vm_lo, mdct_in[j-3], config->mdct.cos_l[k][j-3]);
+- muladd(vm, vm_lo, mdct_in[j-4], config->mdct.cos_l[k][j-4]);
+- muladd(vm, vm_lo, mdct_in[j-5], config->mdct.cos_l[k][j-5]);
+- muladd(vm, vm_lo, mdct_in[j-6], config->mdct.cos_l[k][j-6]);
+- muladd(vm, vm_lo, mdct_in[j-7], config->mdct.cos_l[k][j-7]);
++ for (j = 35; j; j -= 7) {
++ muladd(vm, vm_lo, mdct_in[j - 1], config->mdct.cos_l[k][j - 1]);
++ muladd(vm, vm_lo, mdct_in[j - 2], config->mdct.cos_l[k][j - 2]);
++ muladd(vm, vm_lo, mdct_in[j - 3], config->mdct.cos_l[k][j - 3]);
++ muladd(vm, vm_lo, mdct_in[j - 4], config->mdct.cos_l[k][j - 4]);
++ muladd(vm, vm_lo, mdct_in[j - 5], config->mdct.cos_l[k][j - 5]);
++ muladd(vm, vm_lo, mdct_in[j - 6], config->mdct.cos_l[k][j - 6]);
++ muladd(vm, vm_lo, mdct_in[j - 7], config->mdct.cos_l[k][j - 7]);
+ }
+ mulz(vm, vm_lo);
+ mdct_enc[band][k] = vm;
+ }
+
+ /* Perform aliasing reduction butterfly */
+- if (band != 0)
+- {
+- cmuls(mdct_enc[band][0], mdct_enc[band-1][17-0], mdct_enc[band][0], mdct_enc[band-1][17-0], MDCT_CS0, MDCT_CA0);
+- cmuls(mdct_enc[band][1], mdct_enc[band-1][17-1], mdct_enc[band][1], mdct_enc[band-1][17-1], MDCT_CS1, MDCT_CA1);
+- cmuls(mdct_enc[band][2], mdct_enc[band-1][17-2], mdct_enc[band][2], mdct_enc[band-1][17-2], MDCT_CS2, MDCT_CA2);
+- cmuls(mdct_enc[band][3], mdct_enc[band-1][17-3], mdct_enc[band][3], mdct_enc[band-1][17-3], MDCT_CS3, MDCT_CA3);
+- cmuls(mdct_enc[band][4], mdct_enc[band-1][17-4], mdct_enc[band][4], mdct_enc[band-1][17-4], MDCT_CS4, MDCT_CA4);
+- cmuls(mdct_enc[band][5], mdct_enc[band-1][17-5], mdct_enc[band][5], mdct_enc[band-1][17-5], MDCT_CS5, MDCT_CA5);
+- cmuls(mdct_enc[band][6], mdct_enc[band-1][17-6], mdct_enc[band][6], mdct_enc[band-1][17-6], MDCT_CS6, MDCT_CA6);
+- cmuls(mdct_enc[band][7], mdct_enc[band-1][17-7], mdct_enc[band][7], mdct_enc[band-1][17-7], MDCT_CS7, MDCT_CA7);
++ if (band != 0) {
++ cmuls(mdct_enc[band][0], mdct_enc[band - 1][17 - 0],
++ mdct_enc[band][0], mdct_enc[band - 1][17 - 0], MDCT_CS0,
++ MDCT_CA0);
++ cmuls(mdct_enc[band][1], mdct_enc[band - 1][17 - 1],
++ mdct_enc[band][1], mdct_enc[band - 1][17 - 1], MDCT_CS1,
++ MDCT_CA1);
++ cmuls(mdct_enc[band][2], mdct_enc[band - 1][17 - 2],
++ mdct_enc[band][2], mdct_enc[band - 1][17 - 2], MDCT_CS2,
++ MDCT_CA2);
++ cmuls(mdct_enc[band][3], mdct_enc[band - 1][17 - 3],
++ mdct_enc[band][3], mdct_enc[band - 1][17 - 3], MDCT_CS3,
++ MDCT_CA3);
++ cmuls(mdct_enc[band][4], mdct_enc[band - 1][17 - 4],
++ mdct_enc[band][4], mdct_enc[band - 1][17 - 4], MDCT_CS4,
++ MDCT_CA4);
++ cmuls(mdct_enc[band][5], mdct_enc[band - 1][17 - 5],
++ mdct_enc[band][5], mdct_enc[band - 1][17 - 5], MDCT_CS5,
++ MDCT_CA5);
++ cmuls(mdct_enc[band][6], mdct_enc[band - 1][17 - 6],
++ mdct_enc[band][6], mdct_enc[band - 1][17 - 6], MDCT_CS6,
++ MDCT_CA6);
++ cmuls(mdct_enc[band][7], mdct_enc[band - 1][17 - 7],
++ mdct_enc[band][7], mdct_enc[band - 1][17 - 7], MDCT_CS7,
++ MDCT_CA7);
+ }
+ }
+ }
+
+ /* Save latest granule's subband samples to be used in the next mdct call */
+- memcpy(config->l3_sb_sample[ch][0], config->l3_sb_sample[ch][config->mpeg.granules_per_frame], sizeof(config->l3_sb_sample[0][0]));
++ memcpy(config->l3_sb_sample[ch][0],
++ config->l3_sb_sample[ch][config->mpeg.granules_per_frame],
++ sizeof(config->l3_sb_sample[0][0]));
+ }
+ }
+diff --git a/src/lib/l3mdct.h b/src/lib/l3mdct.h
+index 1288259..3018eb9 100644
+--- a/src/lib/l3mdct.h
++++ b/src/lib/l3mdct.h
+@@ -1,7 +1,9 @@
+ #ifndef shine_MDCT_H
+ #define shine_MDCT_H
+
+-void shine_mdct_initialise();
++#include "types.h"
++
++void shine_mdct_initialise(shine_global_config *config);
+ void shine_mdct_sub(shine_global_config *config, int stride);
+
+ #endif
+diff --git a/src/lib/l3subband.c b/src/lib/l3subband.c
+index 58abf5f..78f428e 100644
+--- a/src/lib/l3subband.c
++++ b/src/lib/l3subband.c
+@@ -1,8 +1,8 @@
+ /* L3SubBand */
+
+-#include "types.h"
+-#include "tables.h"
+ #include "l3subband.h"
++#include "tables.h"
++#include "types.h"
+
+ /*
+ * shine_subband_initialise:
+@@ -11,23 +11,21 @@
+ * 9th decimal place accuracy of the filterbank tables in the ISO
+ * document. The coefficients are stored in #filter#
+ */
+-void shine_subband_initialise(shine_global_config *config)
+-{
+- int i,j;
++void shine_subband_initialise(shine_global_config *config) {
++ int i, j;
+ double filter;
+
+- for(i=MAX_CHANNELS; i-- ; ) {
++ for (i = MAX_CHANNELS; i--;) {
+ config->subband.off[i] = 0;
+ memset(config->subband.x[i], 0, sizeof(config->subband.x[i]));
+ }
+
+- for (i=SBLIMIT; i--; )
+- for (j=64; j--; )
+- {
+- if ((filter = 1e9*cos((double)((2*i+1)*(16-j)*PI64))) >= 0)
+- modf(filter+0.5, &filter);
++ for (i = SBLIMIT; i--;)
++ for (j = 64; j--;) {
++ if ((filter = 1e9 * cos((double)((2 * i + 1) * (16 - j) * PI64))) >= 0)
++ modf(filter + 0.5, &filter);
+ else
+- modf(filter-0.5, &filter);
++ modf(filter - 0.5, &filter);
+ /* scale and convert to fixed point before storing */
+ config->subband.fl[i][j] = (int32_t)(filter * (0x7fffffff * 1e-9));
+ }
+@@ -39,58 +37,90 @@ void shine_subband_initialise(shine_global_config *config)
+ * Overlapping window on PCM samples
+ * 32 16-bit pcm samples are scaled to fractional 2's complement and
+ * concatenated to the end of the window buffer #x#. The updated window
+- * buffer #x# is then windowed by the analysis window #shine_enwindow# to produce
+- * the windowed sample #z#
+- * Calculates the analysis filter bank coefficients
+- * The windowed samples #z# is filtered by the digital filter matrix #filter#
+- * to produce the subband samples #s#. This done by first selectively
+- * picking out values from the windowed samples, and then multiplying
+- * them by the filter matrix, producing 32 subband samples.
++ * buffer #x# is then windowed by the analysis window #shine_enwindow# to
++ * produce the windowed sample #z# Calculates the analysis filter bank
++ * coefficients The windowed samples #z# is filtered by the digital filter
++ * matrix #filter# to produce the subband samples #s#. This done by first
++ * selectively picking out values from the windowed samples, and then
++ * multiplying them by the filter matrix, producing 32 subband samples.
+ */
+-void shine_window_filter_subband(int16_t **buffer, int32_t s[SBLIMIT], int ch, shine_global_config *config, int stride)
+-{
++void shine_window_filter_subband(int16_t **buffer, int32_t s[SBLIMIT], int ch,
++ shine_global_config *config, int stride) {
+ int32_t y[64];
+- int i,j;
++ int i, j;
+ int16_t *ptr = *buffer;
+
+ /* replace 32 oldest samples with 32 new samples */
+- for (i=32;i--;) {
+- config->subband.x[ch][i+config->subband.off[ch]] = ((int32_t)*ptr) << 16;
++ for (i = 32; i--;) {
++ config->subband.x[ch][i + config->subband.off[ch]] = ((int32_t)*ptr) << 16;
+ ptr += stride;
+ }
+ *buffer = ptr;
+
+- for (i=64; i--; ) {
++ for (i = 64; i--;) {
+ int32_t s_value;
++#ifdef __BORLANDC__
++ uint32_t s_value_lo;
++#else
+ uint32_t s_value_lo __attribute__((unused));
++#endif
+
+- mul0 (s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (0<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (0<<6)]);
+- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (1<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (1<<6)]);
+- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (2<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (2<<6)]);
+- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (3<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (3<<6)]);
+- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (4<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (4<<6)]);
+- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (5<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (5<<6)]);
+- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (6<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (6<<6)]);
+- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (7<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (7<<6)]);
+- mulz (s_value, s_value_lo);
++ mul0(s_value, s_value_lo,
++ config->subband
++ .x[ch][(config->subband.off[ch] + i + (0 << 6)) & (HAN_SIZE - 1)],
++ shine_enwindow[i + (0 << 6)]);
++ muladd(s_value, s_value_lo,
++ config->subband.x[ch][(config->subband.off[ch] + i + (1 << 6)) &
++ (HAN_SIZE - 1)],
++ shine_enwindow[i + (1 << 6)]);
++ muladd(s_value, s_value_lo,
++ config->subband.x[ch][(config->subband.off[ch] + i + (2 << 6)) &
++ (HAN_SIZE - 1)],
++ shine_enwindow[i + (2 << 6)]);
++ muladd(s_value, s_value_lo,
++ config->subband.x[ch][(config->subband.off[ch] + i + (3 << 6)) &
++ (HAN_SIZE - 1)],
++ shine_enwindow[i + (3 << 6)]);
++ muladd(s_value, s_value_lo,
++ config->subband.x[ch][(config->subband.off[ch] + i + (4 << 6)) &
++ (HAN_SIZE - 1)],
++ shine_enwindow[i + (4 << 6)]);
++ muladd(s_value, s_value_lo,
++ config->subband.x[ch][(config->subband.off[ch] + i + (5 << 6)) &
++ (HAN_SIZE - 1)],
++ shine_enwindow[i + (5 << 6)]);
++ muladd(s_value, s_value_lo,
++ config->subband.x[ch][(config->subband.off[ch] + i + (6 << 6)) &
++ (HAN_SIZE - 1)],
++ shine_enwindow[i + (6 << 6)]);
++ muladd(s_value, s_value_lo,
++ config->subband.x[ch][(config->subband.off[ch] + i + (7 << 6)) &
++ (HAN_SIZE - 1)],
++ shine_enwindow[i + (7 << 6)]);
++ mulz(s_value, s_value_lo);
+ y[i] = s_value;
+ }
+
+- config->subband.off[ch] = (config->subband.off[ch] + 480) & (HAN_SIZE-1); /* offset is modulo (HAN_SIZE)*/
++ config->subband.off[ch] = (config->subband.off[ch] + 480) &
++ (HAN_SIZE - 1); /* offset is modulo (HAN_SIZE)*/
+
+- for (i=SBLIMIT; i--; ) {
++ for (i = SBLIMIT; i--;) {
+ int32_t s_value;
++#ifdef __BORLANDC__
++ uint32_t s_value_lo;
++#else
+ uint32_t s_value_lo __attribute__((unused));
++#endif
+
+ mul0(s_value, s_value_lo, config->subband.fl[i][63], y[63]);
+- for (j=63; j; j-=7) {
+- muladd(s_value, s_value_lo, config->subband.fl[i][j-1], y[j-1]);
+- muladd(s_value, s_value_lo, config->subband.fl[i][j-2], y[j-2]);
+- muladd(s_value, s_value_lo, config->subband.fl[i][j-3], y[j-3]);
+- muladd(s_value, s_value_lo, config->subband.fl[i][j-4], y[j-4]);
+- muladd(s_value, s_value_lo, config->subband.fl[i][j-5], y[j-5]);
+- muladd(s_value, s_value_lo, config->subband.fl[i][j-6], y[j-6]);
+- muladd(s_value, s_value_lo, config->subband.fl[i][j-7], y[j-7]);
++ for (j = 63; j; j -= 7) {
++ muladd(s_value, s_value_lo, config->subband.fl[i][j - 1], y[j - 1]);
++ muladd(s_value, s_value_lo, config->subband.fl[i][j - 2], y[j - 2]);
++ muladd(s_value, s_value_lo, config->subband.fl[i][j - 3], y[j - 3]);
++ muladd(s_value, s_value_lo, config->subband.fl[i][j - 4], y[j - 4]);
++ muladd(s_value, s_value_lo, config->subband.fl[i][j - 5], y[j - 5]);
++ muladd(s_value, s_value_lo, config->subband.fl[i][j - 6], y[j - 6]);
++ muladd(s_value, s_value_lo, config->subband.fl[i][j - 7], y[j - 7]);
+ }
+ mulz(s_value, s_value_lo);
+ s[i] = s_value;
+diff --git a/src/lib/l3subband.h b/src/lib/l3subband.h
+index 9bfe861..5cfbef5 100644
+--- a/src/lib/l3subband.h
++++ b/src/lib/l3subband.h
+@@ -1,9 +1,11 @@
+ #ifndef L3SUBBAND_H
+ #define L3SUBBAND_H
+
++#include "types.h"
+ #include <stdint.h>
+
+-void shine_subband_initialise( shine_global_config *config );
+-void shine_window_filter_subband(int16_t **buffer, int32_t s[SBLIMIT], int k, shine_global_config *config, int stride);
++void shine_subband_initialise(shine_global_config *config);
++void shine_window_filter_subband(int16_t **buffer, int32_t s[SBLIMIT], int k,
++ shine_global_config *config, int stride);
+
+ #endif
+diff --git a/src/lib/layer3.c b/src/lib/layer3.c
+index 0b574ad..f3d1ecd 100644
+--- a/src/lib/layer3.c
++++ b/src/lib/layer3.c
+@@ -1,28 +1,27 @@
+ /* layer3.c */
+
+-#include "types.h"
+-#include "tables.h"
+ #include "layer3.h"
+-#include "l3subband.h"
+-#include "l3mdct.h"
+-#include "l3loop.h"
+ #include "bitstream.h"
+ #include "l3bitstream.h"
++#include "l3loop.h"
++#include "l3mdct.h"
++#include "l3subband.h"
++#include "tables.h"
++#include "types.h"
+
+ static int granules_per_frame[4] = {
+ 1, /* MPEG 2.5 */
+- -1, /* Reserved */
++ -1, /* Reserved */
+ 1, /* MPEG II */
+- 2 /* MPEG I */
++ 2 /* MPEG I */
+ };
+
+ /* Set default values for important vars */
+-void shine_set_config_mpeg_defaults(shine_mpeg_t *mpeg)
+-{
++void shine_set_config_mpeg_defaults(shine_mpeg_t *mpeg) {
+ mpeg->bitr = 128;
+ mpeg->emph = NONE;
+ mpeg->copyright = 0;
+- mpeg->original = 1;
++ mpeg->original = 1;
+ }
+
+ int shine_mpeg_version(int samplerate_index) {
+@@ -38,56 +37,56 @@ int shine_mpeg_version(int samplerate_index) {
+ return MPEG_25;
+ }
+
+-int shine_find_samplerate_index(int freq)
+-{
++int shine_find_samplerate_index(int freq) {
+ int i;
+
+- for(i=0;i<9;i++)
+- if(freq==samplerates[i]) return i;
++ for (i = 0; i < 9; i++)
++ if (freq == samplerates[i])
++ return i;
+
+ return -1; /* error - not a valid samplerate for encoder */
+ }
+
+-int shine_find_bitrate_index(int bitr, int mpeg_version)
+-{
++int shine_find_bitrate_index(int bitr, int mpeg_version) {
+ int i;
+
+- for(i=0;i<16;i++)
+- if(bitr==bitrates[i][mpeg_version]) return i;
++ for (i = 0; i < 16; i++)
++ if (bitr == bitrates[i][mpeg_version])
++ return i;
+
+ return -1; /* error - not a valid samplerate for encoder */
+ }
+
+-int shine_check_config(int freq, int bitr)
+-{
++int shine_check_config(int freq, int bitr) {
+ int samplerate_index, bitrate_index, mpeg_version;
+
+ samplerate_index = shine_find_samplerate_index(freq);
+- if (samplerate_index < 0) return -1;
++ if (samplerate_index < 0)
++ return -1;
+
+ mpeg_version = shine_mpeg_version(samplerate_index);
+
+ bitrate_index = shine_find_bitrate_index(bitr, mpeg_version);
+- if (bitrate_index < 0) return -1;
++ if (bitrate_index < 0)
++ return -1;
+
+ return mpeg_version;
+ }
+
+-int shine_samples_per_pass(shine_t s)
+-{
++int shine_samples_per_pass(shine_t s) {
+ return s->mpeg.granules_per_frame * GRANULE_SIZE;
+ }
+
+ /* Compute default encoding values. */
+-shine_global_config *shine_initialise(shine_config_t *pub_config)
+-{
++shine_global_config *shine_initialise(shine_config_t *pub_config) {
+ double avg_slots_per_frame;
+ shine_global_config *config;
+
+- if (shine_check_config(pub_config->wave.samplerate, pub_config->mpeg.bitr) < 0)
++ if (shine_check_config(pub_config->wave.samplerate, pub_config->mpeg.bitr) <
++ 0)
+ return NULL;
+
+- config = calloc(1,sizeof(shine_global_config));
++ config = calloc(1, sizeof(shine_global_config));
+ if (config == NULL)
+ return config;
+
+@@ -96,65 +95,71 @@ shine_global_config *shine_initialise(shine_config_t *pub_config)
+ shine_loop_initialise(config);
+
+ /* Copy public config. */
+- config->wave.channels = pub_config->wave.channels;
+- config->wave.samplerate = pub_config->wave.samplerate;
+- config->mpeg.mode = pub_config->mpeg.mode;
+- config->mpeg.bitr = pub_config->mpeg.bitr;
+- config->mpeg.emph = pub_config->mpeg.emph;
+- config->mpeg.copyright = pub_config->mpeg.copyright;
+- config->mpeg.original = pub_config->mpeg.original;
++ config->wave.channels = pub_config->wave.channels;
++ config->wave.samplerate = pub_config->wave.samplerate;
++ config->mpeg.mode = pub_config->mpeg.mode;
++ config->mpeg.bitr = pub_config->mpeg.bitr;
++ config->mpeg.emph = pub_config->mpeg.emph;
++ config->mpeg.copyright = pub_config->mpeg.copyright;
++ config->mpeg.original = pub_config->mpeg.original;
+
+ /* Set default values. */
+- config->ResvMax = 0;
+- config->ResvSize = 0;
+- config->mpeg.layer = LAYER_III;
+- config->mpeg.crc = 0;
+- config->mpeg.ext = 0;
+- config->mpeg.mode_ext = 0;
+- config->mpeg.bits_per_slot = 8;
+-
+- config->mpeg.samplerate_index = shine_find_samplerate_index(config->wave.samplerate);
+- config->mpeg.version = shine_mpeg_version(config->mpeg.samplerate_index);
+- config->mpeg.bitrate_index = shine_find_bitrate_index(config->mpeg.bitr, config->mpeg.version);
++ config->ResvMax = 0;
++ config->ResvSize = 0;
++ config->mpeg.layer = LAYER_III;
++ config->mpeg.crc = 0;
++ config->mpeg.ext = 0;
++ config->mpeg.mode_ext = 0;
++ config->mpeg.bits_per_slot = 8;
++
++ config->mpeg.samplerate_index =
++ shine_find_samplerate_index(config->wave.samplerate);
++ config->mpeg.version = shine_mpeg_version(config->mpeg.samplerate_index);
++ config->mpeg.bitrate_index =
++ shine_find_bitrate_index(config->mpeg.bitr, config->mpeg.version);
+ config->mpeg.granules_per_frame = granules_per_frame[config->mpeg.version];
+
+ /* Figure average number of 'slots' per frame. */
+- avg_slots_per_frame = ((double)config->mpeg.granules_per_frame * GRANULE_SIZE /
+- ((double)config->wave.samplerate)) *
+- (1000*(double)config->mpeg.bitr /
+- (double)config->mpeg.bits_per_slot);
++ avg_slots_per_frame =
++ ((double)config->mpeg.granules_per_frame * GRANULE_SIZE /
++ ((double)config->wave.samplerate)) *
++ (1000 * (double)config->mpeg.bitr / (double)config->mpeg.bits_per_slot);
+
+- config->mpeg.whole_slots_per_frame = (int)avg_slots_per_frame;
++ config->mpeg.whole_slots_per_frame = (int)avg_slots_per_frame;
+
+- config->mpeg.frac_slots_per_frame = avg_slots_per_frame - (double)config->mpeg.whole_slots_per_frame;
+- config->mpeg.slot_lag = -config->mpeg.frac_slots_per_frame;
++ config->mpeg.frac_slots_per_frame =
++ avg_slots_per_frame - (double)config->mpeg.whole_slots_per_frame;
++ config->mpeg.slot_lag = -config->mpeg.frac_slots_per_frame;
+
+- if(config->mpeg.frac_slots_per_frame==0)
++ if (config->mpeg.frac_slots_per_frame == 0)
+ config->mpeg.padding = 0;
+
+ shine_open_bit_stream(&config->bs, BUFFER_SIZE);
+
+- memset((char *)&config->side_info,0,sizeof(shine_side_info_t));
++ memset((char *)&config->side_info, 0, sizeof(shine_side_info_t));
+
+ /* determine the mean bitrate for main data */
+ if (config->mpeg.granules_per_frame == 2) /* MPEG 1 */
+- config->sideinfo_len = 8 * ((config->wave.channels==1) ? 4 + 17 : 4 + 32);
+- else /* MPEG 2 */
+- config->sideinfo_len = 8 * ((config->wave.channels==1) ? 4 + 9 : 4 + 17);
++ config->sideinfo_len = 8 * ((config->wave.channels == 1) ? 4 + 17 : 4 + 32);
++ else /* MPEG 2 */
++ config->sideinfo_len = 8 * ((config->wave.channels == 1) ? 4 + 9 : 4 + 17);
+
+ return config;
+ }
+
+-static unsigned char *shine_encode_buffer_internal(shine_global_config *config, int *written, int stride)
+-{
+- if(config->mpeg.frac_slots_per_frame)
+- {
+- config->mpeg.padding = (config->mpeg.slot_lag <= (config->mpeg.frac_slots_per_frame - 1.0));
+- config->mpeg.slot_lag += (config->mpeg.padding - config->mpeg.frac_slots_per_frame);
++static unsigned char *shine_encode_buffer_internal(shine_global_config *config,
++ int *written, int stride) {
++ if (config->mpeg.frac_slots_per_frame) {
++ config->mpeg.padding =
++ (config->mpeg.slot_lag <= (config->mpeg.frac_slots_per_frame - 1.0));
++ config->mpeg.slot_lag +=
++ (config->mpeg.padding - config->mpeg.frac_slots_per_frame);
+ }
+
+- config->mpeg.bits_per_frame = 8*(config->mpeg.whole_slots_per_frame + config->mpeg.padding);
+- config->mean_bits = (config->mpeg.bits_per_frame - config->sideinfo_len)/config->mpeg.granules_per_frame;
++ config->mpeg.bits_per_frame =
++ 8 * (config->mpeg.whole_slots_per_frame + config->mpeg.padding);
++ config->mean_bits = (config->mpeg.bits_per_frame - config->sideinfo_len) /
++ config->mpeg.granules_per_frame;
+
+ /* apply mdct to the polyphase output */
+ shine_mdct_sub(config, stride);
+@@ -172,8 +177,8 @@ static unsigned char *shine_encode_buffer_internal(shine_global_config *config,
+ return config->bs.data;
+ }
+
+-unsigned char *shine_encode_buffer(shine_global_config *config, int16_t **data, int *written)
+-{
++unsigned char *shine_encode_buffer(shine_global_config *config, int16_t **data,
++ int *written) {
+ config->buffer[0] = data[0];
+ if (config->wave.channels == 2)
+ config->buffer[1] = data[1];
+@@ -181,8 +186,8 @@ unsigned char *shine_encode_buffer(shine_global_config *config, int16_t **data,
+ return shine_encode_buffer_internal(config, written, 1);
+ }
+
+-unsigned char *shine_encode_buffer_interleaved(shine_global_config *config, int16_t *data, int *written)
+-{
++unsigned char *shine_encode_buffer_interleaved(shine_global_config *config,
++ int16_t *data, int *written) {
+ config->buffer[0] = data;
+ if (config->wave.channels == 2)
+ config->buffer[1] = data + 1;
+@@ -197,7 +202,6 @@ unsigned char *shine_flush(shine_global_config *config, int *written) {
+ return config->bs.data;
+ }
+
+-
+ void shine_close(shine_global_config *config) {
+ shine_close_bit_stream(&config->bs);
+ free(config);
+diff --git a/src/lib/layer3.h b/src/lib/layer3.h
+index 7fb11e0..d72b6a4 100644
+--- a/src/lib/layer3.h
++++ b/src/lib/layer3.h
+@@ -5,48 +5,31 @@
+
+ /* This is the struct used to tell the encoder about the input PCM */
+
+-enum channels {
+- PCM_MONO = 1,
+- PCM_STEREO = 2
+-};
++enum channels { PCM_MONO = 1, PCM_STEREO = 2 };
+
+-enum mpeg_versions {
+- MPEG_I = 3,
+- MPEG_II = 2,
+- MPEG_25 = 0
+-};
++enum mpeg_versions { MPEG_I = 3, MPEG_II = 2, MPEG_25 = 0 };
+
+ /* Only Layer III currently implemented. */
+-enum mpeg_layers {
+- LAYER_III = 1
+-};
++enum mpeg_layers { LAYER_III = 1 };
+
+ typedef struct {
+- enum channels channels;
+- int samplerate;
++ enum channels channels;
++ int samplerate;
+ } shine_wave_t;
+
+-/* This is the struct the encoder uses to tell the encoder about the output MP3 */
++/* This is the struct the encoder uses to tell the encoder about the output MP3
++ */
+
+-enum modes {
+- STEREO = 0,
+- JOINT_STEREO = 1,
+- DUAL_CHANNEL = 2,
+- MONO = 3
+-};
++enum modes { STEREO = 0, JOINT_STEREO = 1, DUAL_CHANNEL = 2, MONO = 3 };
+
+-enum emph {
+- NONE = 0,
+- MU50_15 = 1,
+- CITT = 3
+-};
++enum emph { NONE = 0, MU50_15 = 1, CITT = 3 };
+
+ typedef struct {
+- enum modes mode; /* Stereo mode */
+- int bitr; /* Must conform to known bitrate */
+- enum emph emph; /* De-emphasis */
+- int copyright;
+- int original;
++ enum modes mode; /* Stereo mode */
++ int bitr; /* Must conform to known bitrate */
++ enum emph emph; /* De-emphasis */
++ int copyright;
++ int original;
+ } shine_mpeg_t;
+
+ typedef struct {
+@@ -60,7 +43,7 @@ typedef struct {
+ * const int samplerates[9] = {
+ * 44100, 48000, 32000, // MPEG-I
+ * 22050, 24000, 16000, // MPEG-II
+- * 11025, 12000, 8000 // MPEG-2.5
++ * 11025, 12000, 8000 // MPEG-2.5
+ * };
+ *
+ * const int bitrates[16][4] = {
+@@ -92,37 +75,37 @@ typedef struct shine_global_flags *shine_t;
+ /* Fill in a `mpeg_t` structure with default values. */
+ void shine_set_config_mpeg_defaults(shine_mpeg_t *mpeg);
+
+-/* Check if a given bitrate is supported by the encoder (see `bitrates` above for a list
+- * of acceptable values. */
++/* Check if a given bitrate is supported by the encoder (see `bitrates` above
++ * for a list of acceptable values. */
+ int shine_find_bitrate_index(int bitr, int mpeg_version);
+
+-/* Check if a given samplerate is supported by the encoder (see `samplerates` above for a list
+- * of acceptable values. */
++/* Check if a given samplerate is supported by the encoder (see `samplerates`
++ * above for a list of acceptable values. */
+ int shine_find_samplerate_index(int freq);
+
+ /* Returns the MPEG version used for the given samplerate index. See above
+- * `mpeg_versions` for a list of possible values. */
++ * `mpeg_versions` for a list of possible values. */
+ int shine_mpeg_version(int samplerate_index);
+
+-/* Check if a given bitrate and samplerate is supported by the encoder (see `samplerates`
+- * and `bitrates` above for a list of acceptable values).
++/* Check if a given bitrate and samplerate is supported by the encoder (see
++ * `samplerates` and `bitrates` above for a list of acceptable values).
+ *
+ * Returns -1 on error, mpeg_version on success. */
+ int shine_check_config(int freq, int bitr);
+
+ /* Pass a pointer to a `config_t` structure and returns an initialized
+- * encoder.
++ * encoder.
+ *
+ * Configuration data is copied over to the encoder. It is not possible
+ * to change its values after initializing the encoder at the moment.
+ *
+- * Checking for valid configuration values is left for the application to
+- * implement. You can use the `shine_find_bitrate_index` and
+- * `shine_find_samplerate_index` functions or the `bitrates` and
+- * `samplerates` arrays above to check those parameters. Mone and stereo
++ * Checking for valid configuration values is left for the application to
++ * implement. You can use the `shine_find_bitrate_index` and
++ * `shine_find_samplerate_index` functions or the `bitrates` and
++ * `samplerates` arrays above to check those parameters. Mone and stereo
+ * mode for wave and mpeg should also be consistent with each other.
+ *
+- * This function returns NULL if it was not able to allocate memory data for
++ * This function returns NULL if it was not able to allocate memory data for
+ * the encoder. */
+ shine_t shine_initialise(shine_config_t *config);
+
+@@ -132,26 +115,28 @@ shine_t shine_initialise(shine_config_t *config);
+ /* Returns audio samples expected in each frame. */
+ int shine_samples_per_pass(shine_t s);
+
+-/* Encode audio data. Source data must have `shine_samples_per_pass(s)` audio samples per
+- * channels. Mono encoder only expect one channel.
++/* Encode audio data. Source data must have `shine_samples_per_pass(s)` audio
++ * samples per channels. Mono encoder only expect one channel.
+ *
+- * Returns a pointer to freshly encoded data while `written` contains the size of
+- * available data. This pointer's memory is handled by the library and is only valid
+- * until the next call to `shine_encode_buffer` or `shine_close` and may be NULL if no data
+- * was written. */
++ * Returns a pointer to freshly encoded data while `written` contains the size
++ * of available data. This pointer's memory is handled by the library and is
++ * only valid until the next call to `shine_encode_buffer` or `shine_close` and
++ * may be NULL if no data was written. */
+ unsigned char *shine_encode_buffer(shine_t s, int16_t **data, int *written);
+
+-/* Encode interleaved audio data. Source data must have `shine_samples_per_pass(s)` audio samples per
+- * channels. Mono encoder only expect one channel.
++/* Encode interleaved audio data. Source data must have
++ * `shine_samples_per_pass(s)` audio samples per channels. Mono encoder only
++ * expect one channel.
+ *
+- * Returns a pointer to freshly encoded data while `written` contains the size of
+- * available data. This pointer's memory is handled by the library and is only valid
+- * until the next call to `shine_encode_buffer` or `shine_close` and may be NULL if no data
+- * was written. */
+-unsigned char *shine_encode_buffer_interleaved(shine_t s, int16_t *data, int *written);
+-
+-/* Flush all data currently in the encoding buffer. Should be used before closing
+- * the encoder, to make all encoded data has been written. */
++ * Returns a pointer to freshly encoded data while `written` contains the size
++ * of available data. This pointer's memory is handled by the library and is
++ * only valid until the next call to `shine_encode_buffer` or `shine_close` and
++ * may be NULL if no data was written. */
++unsigned char *shine_encode_buffer_interleaved(shine_t s, int16_t *data,
++ int *written);
++
++/* Flush all data currently in the encoding buffer. Should be used before
++ * closing the encoder, to make all encoded data has been written. */
+ unsigned char *shine_flush(shine_t s, int *written);
+
+ /* Close an encoder, freeing all associated memory. Encoder handler is not
+diff --git a/src/lib/mult_mips_gcc.h b/src/lib/mult_mips_gcc.h
+index 092ed84..d49d215 100644
+--- a/src/lib/mult_mips_gcc.h
++++ b/src/lib/mult_mips_gcc.h
+@@ -1,51 +1,50 @@
+ #include <stdint.h>
+
+-#define mul(a,b) \
+-({ \
+- register int32_t res; \
+- __asm__ __volatile__("mult %0, %1" : : "r" (a), "r" (b)); \
+- __asm__ __volatile__("mfhi %0" : "=r" (res)); \
+- res; \
+-})
++#define mul(a, b) \
++ ({ \
++ register int32_t res; \
++ __asm__ __volatile__("mult %0, %1" : : "r"(a), "r"(b)); \
++ __asm__ __volatile__("mfhi %0" : "=r"(res)); \
++ res; \
++ })
+
+-#define mul0(hi,lo,a,b) \
+- __asm__ __volatile__("mult %0, %1" : : "r" (a), "r" (b))
++#define mul0(hi, lo, a, b) \
++ __asm__ __volatile__("mult %0, %1" : : "r"(a), "r"(b))
+
+-#define muladd(hi,lo,a,b) \
+- __asm__ __volatile__("madd %0, %1" : : "r" (a), "r" (b))
++#define muladd(hi, lo, a, b) \
++ __asm__ __volatile__("madd %0, %1" : : "r"(a), "r"(b))
+
+-#define mulsub(hi,lo,a,b) \
+- __asm__ __volatile__("msub %0, %1" : : "r" (a), "r" (b))
++#define mulsub(hi, lo, a, b) \
++ __asm__ __volatile__("msub %0, %1" : : "r"(a), "r"(b))
+
+-#define mulz(hi,lo) \
+-do { \
+- register int32_t t; \
+- __asm__ __volatile__("mfhi %0" : "=r" (t)); \
+- (hi) = t; \
+-} while (0)
++#define mulz(hi, lo) \
++ do { \
++ register int32_t t; \
++ __asm__ __volatile__("mfhi %0" : "=r"(t)); \
++ (hi) = t; \
++ } while (0)
+
+-#define cmuls(dre, dim, are, aim, bre, bim) \
+-do { \
+- register int32_t t1, t2, tre; \
+- __asm__ __volatile__("mult %0, %1" : : "r" (are), "r" (bre)); \
+- __asm__ __volatile__("msub %0, %1" : : "r" (aim), "r" (bim)); \
+- __asm__ __volatile__("mfhi %0; mflo %1" : "=r" (t1), "=r" (t2)); \
+- tre = (t1 << 1) | ((uint32_t)t2 >> 31); \
+- __asm__ __volatile__("mult %0, %1" : : "r" (are), "r" (bim)); \
+- __asm__ __volatile__("madd %0, %1" : : "r" (bre), "r" (aim)); \
+- dre = tre; \
+- __asm__ __volatile__("mfhi %0; mflo %1" : "=r" (t1), "=r" (t2)); \
+- dim = (t1 << 1) | ((uint32_t)t2 >> 31); \
+-} while (0)
++#define cmuls(dre, dim, are, aim, bre, bim) \
++ do { \
++ register int32_t t1, t2, tre; \
++ __asm__ __volatile__("mult %0, %1" : : "r"(are), "r"(bre)); \
++ __asm__ __volatile__("msub %0, %1" : : "r"(aim), "r"(bim)); \
++ __asm__ __volatile__("mfhi %0; mflo %1" : "=r"(t1), "=r"(t2)); \
++ tre = (t1 << 1) | ((uint32_t)t2 >> 31); \
++ __asm__ __volatile__("mult %0, %1" : : "r"(are), "r"(bim)); \
++ __asm__ __volatile__("madd %0, %1" : : "r"(bre), "r"(aim)); \
++ dre = tre; \
++ __asm__ __volatile__("mfhi %0; mflo %1" : "=r"(t1), "=r"(t2)); \
++ dim = (t1 << 1) | ((uint32_t)t2 >> 31); \
++ } while (0)
+
+ #if __mips_isa_rev >= 2
+-static inline uint32_t SWAB32(uint32_t x)
+-{
+- __asm__(
+- " wsbh %0, %1 \n"
+- " rotr %0, %0, 16 \n"
+- : "=r" (x) : "r" (x));
+- return x;
++static inline uint32_t SWAB32(uint32_t x) {
++ __asm__(" wsbh %0, %1 \n"
++ " rotr %0, %0, 16 \n"
++ : "=r"(x)
++ : "r"(x));
++ return x;
+ }
+ #define SWAB32 SWAB32
+ #endif
+diff --git a/src/lib/mult_noarch_gcc.h b/src/lib/mult_noarch_gcc.h
+index 516e66c..2ee207e 100644
+--- a/src/lib/mult_noarch_gcc.h
++++ b/src/lib/mult_noarch_gcc.h
+@@ -1,34 +1,40 @@
+ #include <stdint.h>
+
+ #ifndef mul
+-#define mul(a,b) (int32_t) ( ( ((int64_t) a) * ((int64_t) b) ) >>32 )
++#define mul(a, b) (int32_t)((((int64_t)a) * ((int64_t)b)) >> 32)
+ #endif
+
+ #ifndef muls
+-#define muls(a,b) (int32_t) ( ( ((int64_t) a) * ((int64_t) b) ) >>31 )
++#define muls(a, b) (int32_t)((((int64_t)a) * ((int64_t)b)) >> 31)
+ #endif
+
+ #ifndef mulr
+-#define mulr(a,b) (int32_t) ( ( ( ((int64_t) a) * ((int64_t) b)) + 0x80000000LL ) >>32 )
++#define mulr(a, b) \
++ (int32_t)(((((int64_t)a) * ((int64_t)b)) + 0x80000000LL) >> 32)
+ #endif
+
+ #ifndef mulsr
+-#define mulsr(a,b) (int32_t) ( ( ( ((int64_t) a) * ((int64_t) b)) + 0x40000000LL ) >>31 )
++#define mulsr(a, b) \
++ (int32_t)(((((int64_t)a) * ((int64_t)b)) + 0x40000000LL) >> 31)
+ #endif
+
+ #ifndef mul0
+-#define mul0(hi,lo,a,b) ((hi) = mul((a), (b)))
+-#define muladd(hi,lo,a,b) ((hi) += mul((a), (b)))
+-#define mulsub(hi,lo,a,b) ((hi) -= mul((a), (b)))
+-#define mulz(hi,lo)
++#define mul0(hi, lo, a, b) ((hi) = mul((a), (b)))
++#define muladd(hi, lo, a, b) ((hi) += mul((a), (b)))
++#define mulsub(hi, lo, a, b) ((hi) -= mul((a), (b)))
++#define mulz(hi, lo)
+ #endif
+
+ #ifndef cmuls
+-#define cmuls(dre, dim, are, aim, bre, bim) \
+-do { \
+- int32_t tre; \
+- (tre) = (int32_t) (((int64_t) (are) * (int64_t) (bre) - (int64_t) (aim) * (int64_t) (bim)) >> 31); \
+- (dim) = (int32_t) (((int64_t) (are) * (int64_t) (bim) + (int64_t) (aim) * (int64_t) (bre)) >> 31); \
+- (dre) = tre; \
+-} while (0)
++#define cmuls(dre, dim, are, aim, bre, bim) \
++ do { \
++ int32_t tre; \
++ (tre) = (int32_t)(((int64_t)(are) * (int64_t)(bre) - \
++ (int64_t)(aim) * (int64_t)(bim)) >> \
++ 31); \
++ (dim) = (int32_t)(((int64_t)(are) * (int64_t)(bim) + \
++ (int64_t)(aim) * (int64_t)(bre)) >> \
++ 31); \
++ (dre) = tre; \
++ } while (0)
+ #endif
+diff --git a/src/lib/mult_sarm_gcc.h b/src/lib/mult_sarm_gcc.h
+index d229eff..0cf8e08 100644
+--- a/src/lib/mult_sarm_gcc.h
++++ b/src/lib/mult_sarm_gcc.h
+@@ -2,108 +2,102 @@
+
+ /* Fractional multiply */
+ #if __ARM_ARCH >= 6
+-#define mul(x,y) \
+-({ \
+- register int32_t result; \
+- asm ("smmul %0, %2, %1" : "=r" (result) : "r" (x), "r" (y)); \
+- result ;\
+-})
++#define mul(x, y) \
++ ({ \
++ register int32_t result; \
++ asm("smmul %0, %2, %1" : "=r"(result) : "r"(x), "r"(y)); \
++ result; \
++ })
+ #else
+-#define mul(x,y) \
+-({ \
+- register int32_t result; \
+- asm ("smull r3, %0, %2, %1" : "=r" (result) : "r" (x), "r" (y) : "r3"); \
+- result ; \
+-})
++#define mul(x, y) \
++ ({ \
++ register int32_t result; \
++ asm("smull r3, %0, %2, %1" : "=r"(result) : "r"(x), "r"(y) : "r3"); \
++ result; \
++ })
+ #endif
+
+ /* Fractional multiply with single bit left shift. */
+-#define muls(x,y) \
+-({ \
+- register int32_t result; \
+- asm ( \
+- "smull r3, %0, %2, %1\n\t" \
+- "movs r3, r3, lsl #1\n\t" \
+- "adc %0, %0, %0" \
+- : "=r" (result) : "r" (x), "r" (y) : "r3", "cc" \
+- ); \
+- result; \
+-})
+-
++#define muls(x, y) \
++ ({ \
++ register int32_t result; \
++ asm("smull r3, %0, %2, %1\n\t" \
++ "movs r3, r3, lsl #1\n\t" \
++ "adc %0, %0, %0" \
++ : "=r"(result) \
++ : "r"(x), "r"(y) \
++ : "r3", "cc"); \
++ result; \
++ })
+
+ #if __ARM_ARCH >= 6
+-#define mulr(x,y) \
+-({ \
+- register int32_t result; \
+- asm ( \
+- "smmulr %0, %2, %1" : "=r" (result) : "r" (x), "r" (y) \
+- ); \
+- result; \
+-})
++#define mulr(x, y) \
++ ({ \
++ register int32_t result; \
++ asm("smmulr %0, %2, %1" : "=r"(result) : "r"(x), "r"(y)); \
++ result; \
++ })
+ #else
+-#define mulr(x,y) \
+-({ \
+- register int32_t result; \
+- asm ( \
+- "smull r3, %0, %2, %1\n\t" \
+- "adds r3, r3, #0x80000000\n\t" \
+- "adc %0, %0, #0" \
+- : "=r" (result) : "r" (x), "r" (y) : "r3", "cc" \
+- ); \
+- result; \
+-})
++#define mulr(x, y) \
++ ({ \
++ register int32_t result; \
++ asm("smull r3, %0, %2, %1\n\t" \
++ "adds r3, r3, #0x80000000\n\t" \
++ "adc %0, %0, #0" \
++ : "=r"(result) \
++ : "r"(x), "r"(y) \
++ : "r3", "cc"); \
++ result; \
++ })
+ #endif
+
+-#define mulsr(x,y) \
+-({ \
+- register int32_t result; \
+- asm ( \
+- "smull r3, %0, %1, %2\n\t" \
+- "movs r3, r3, lsl #1\n\t" \
+- "adc %0, %0, %0\n\t" \
+- "adds r3, r3, #0x80000000\n\t" \
+- "adc %0, %0, #0" \
+- : "=r" (result) : "r" (x), "r" (y) : "r3", "cc" \
+- ); \
+- result; \
+-})
++#define mulsr(x, y) \
++ ({ \
++ register int32_t result; \
++ asm("smull r3, %0, %1, %2\n\t" \
++ "movs r3, r3, lsl #1\n\t" \
++ "adc %0, %0, %0\n\t" \
++ "adds r3, r3, #0x80000000\n\t" \
++ "adc %0, %0, #0" \
++ : "=r"(result) \
++ : "r"(x), "r"(y) \
++ : "r3", "cc"); \
++ result; \
++ })
+
+-#define mul0(hi,lo,a,b) \
+- asm ("smull %0, %1, %2, %3" : "=r" (lo), "=r" (hi) : "r" (a), "r" (b))
++#define mul0(hi, lo, a, b) \
++ asm("smull %0, %1, %2, %3" : "=r"(lo), "=r"(hi) : "r"(a), "r"(b))
+
+-#define muladd(hi,lo,a,b) \
+- asm ("smlal %0, %1, %2, %3" : "+r" (lo), "+r" (hi) : "r" (a), "r" (b))
++#define muladd(hi, lo, a, b) \
++ asm("smlal %0, %1, %2, %3" : "+r"(lo), "+r"(hi) : "r"(a), "r"(b))
+
+-#define mulsub(hi,lo,a,b) \
+- asm ("smlal %0, %1, %2, %3" : "+r" (lo), "+r" (hi) : "r" (a), "r" (-(b)))
++#define mulsub(hi, lo, a, b) \
++ asm("smlal %0, %1, %2, %3" : "+r"(lo), "+r"(hi) : "r"(a), "r"(-(b)))
+
+-#define mulz(hi,lo)
++#define mulz(hi, lo)
+
+-#define cmuls(dre, dim, are, aim, bre, bim) \
+-do { \
+- register int32_t tre, tim; \
+- asm ( \
+- "smull r3, %0, %2, %4\n\t" \
+- "smlal r3, %0, %3, %5\n\t" \
+- "movs r3, r3, lsl #1\n\t" \
+- "adc %0, %0, %0\n\t" \
+- "smull r3, %1, %2, %6\n\t" \
+- "smlal r3, %1, %4, %3\n\t" \
+- "movs r3, r3, lsl #1\n\t" \
+- "adc %1, %1, %1\n\t" \
+- : "=&r" (tre), "=&r" (tim) \
+- : "r" (are), "r" (aim), "r" (bre), "r" (-(bim)), "r" (bim) \
+- : "r3", "cc" \
+- ); \
+- dre = tre; \
+- dim = tim; \
+-} while (0)
++#define cmuls(dre, dim, are, aim, bre, bim) \
++ do { \
++ register int32_t tre, tim; \
++ asm("smull r3, %0, %2, %4\n\t" \
++ "smlal r3, %0, %3, %5\n\t" \
++ "movs r3, r3, lsl #1\n\t" \
++ "adc %0, %0, %0\n\t" \
++ "smull r3, %1, %2, %6\n\t" \
++ "smlal r3, %1, %4, %3\n\t" \
++ "movs r3, r3, lsl #1\n\t" \
++ "adc %1, %1, %1\n\t" \
++ : "=&r"(tre), "=&r"(tim) \
++ : "r"(are), "r"(aim), "r"(bre), "r"(-(bim)), "r"(bim) \
++ : "r3", "cc"); \
++ dre = tre; \
++ dim = tim; \
++ } while (0)
+
+ #if __ARM_ARCH >= 6
+-static inline uint32_t SWAB32(uint32_t x)
+-{
+- asm ("rev %0, %1" : "=r" (x) : "r" (x));
+- return x;
++static inline uint32_t SWAB32(uint32_t x) {
++ asm("rev %0, %1" : "=r"(x) : "r"(x));
++ return x;
+ }
+ #define SWAB32 SWAB32
+ #endif
+diff --git a/src/lib/reservoir.c b/src/lib/reservoir.c
+index ca84f3d..cea0a9b 100644
+--- a/src/lib/reservoir.c
++++ b/src/lib/reservoir.c
+@@ -2,13 +2,13 @@
+ * Layer3 bit reservoir: Described in C.1.5.4.2.2 of the IS
+ */
+
+-#include "types.h"
+-#include "layer3.h"
+-#include "l3loop.h"
+-#include "huffman.h"
++#include "reservoir.h"
+ #include "bitstream.h"
++#include "huffman.h"
+ #include "l3bitstream.h"
+-#include "reservoir.h"
++#include "l3loop.h"
++#include "layer3.h"
++#include "types.h"
+
+ /*
+ * shine_max_reservoir_bits:
+@@ -17,36 +17,34 @@
+ * allowance for the current granule based on reservoir size
+ * and perceptual entropy.
+ */
+-int shine_max_reservoir_bits (double *pe, shine_global_config *config )
+-{
++int shine_max_reservoir_bits(double *pe, shine_global_config *config) {
+ int more_bits, max_bits, add_bits, over_bits;
+ int mean_bits = config->mean_bits;
+
+ mean_bits /= config->wave.channels;
+ max_bits = mean_bits;
+
+- if(max_bits>4095)
++ if (max_bits > 4095)
+ max_bits = 4095;
+- if(!config->ResvMax)
++ if (!config->ResvMax)
+ return max_bits;
+
+ more_bits = *pe * 3.1 - mean_bits;
+ add_bits = 0;
+- if(more_bits>100)
+- {
++ if (more_bits > 100) {
+ int frac = (config->ResvSize * 6) / 10;
+
+- if(frac<more_bits)
++ if (frac < more_bits)
+ add_bits = frac;
+ else
+ add_bits = more_bits;
+ }
+- over_bits = config->ResvSize - ((config->ResvMax <<3) / 10) - add_bits;
+- if (over_bits>0)
++ over_bits = config->ResvSize - ((config->ResvMax << 3) / 10) - add_bits;
++ if (over_bits > 0)
+ add_bits += over_bits;
+
+ max_bits += add_bits;
+- if(max_bits>4095)
++ if (max_bits > 4095)
+ max_bits = 4095;
+ return max_bits;
+ }
+@@ -57,9 +55,9 @@ int shine_max_reservoir_bits (double *pe, shine_global_config *config )
+ * Called after a granule's bit allocation. Readjusts the size of
+ * the reservoir to reflect the granule's usage.
+ */
+-void shine_ResvAdjust(gr_info *gi, shine_global_config *config )
+-{
+- config->ResvSize += (config->mean_bits / config->wave.channels) - gi->part2_3_length;
++void shine_ResvAdjust(gr_info *gi, shine_global_config *config) {
++ config->ResvSize +=
++ (config->mean_bits / config->wave.channels) - gi->part2_3_length;
+ }
+
+ /*
+@@ -71,8 +69,7 @@ void shine_ResvAdjust(gr_info *gi, shine_global_config *config )
+ * part2_3_length. The bitstream formatter will detect this and write the
+ * appropriate stuffing bits to the bitstream.
+ */
+-void shine_ResvFrameEnd(shine_global_config *config )
+-{
++void shine_ResvFrameEnd(shine_global_config *config) {
+ gr_info *gi;
+ int gr, ch, ancillary_pad, stuffingBits;
+ int over_bits;
+@@ -81,42 +78,38 @@ void shine_ResvFrameEnd(shine_global_config *config )
+ ancillary_pad = 0;
+
+ /* just in case mean_bits is odd, this is necessary... */
+- if((config->wave.channels==2) && (config->mean_bits & 1))
++ if ((config->wave.channels == 2) && (config->mean_bits & 1))
+ config->ResvSize += 1;
+
+ over_bits = config->ResvSize - config->ResvMax;
+- if(over_bits<0)
++ if (over_bits < 0)
+ over_bits = 0;
+
+ config->ResvSize -= over_bits;
+ stuffingBits = over_bits + ancillary_pad;
+
+ /* we must be byte aligned */
+- if((over_bits = config->ResvSize % 8))
+- {
++ if ((over_bits = config->ResvSize % 8)) {
+ stuffingBits += over_bits;
+ config->ResvSize -= over_bits;
+ }
+
+- if(stuffingBits)
+- {
++ if (stuffingBits) {
+ /*
+ * plan a: put all into the first granule
+ * This was preferred by someone designing a
+ * real-time decoder...
+ */
+- gi = (gr_info *) &(l3_side->gr[0].ch[0]);
++ gi = (gr_info *)&(l3_side->gr[0].ch[0]);
+
+- if ( gi->part2_3_length + stuffingBits < 4095 )
++ if (gi->part2_3_length + stuffingBits < 4095)
+ gi->part2_3_length += stuffingBits;
+- else
+- {
++ else {
+ /* plan b: distribute throughout the granules */
+- for (gr = 0; gr < config->mpeg.granules_per_frame; gr++ )
+- for (ch = 0; ch < config->wave.channels; ch++ )
+- {
++ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++)
++ for (ch = 0; ch < config->wave.channels; ch++) {
+ int extraBits, bitsThisGr;
+- gr_info *gi = (gr_info *) &(l3_side->gr[gr].ch[ch]);
++ gr_info *gi = (gr_info *)&(l3_side->gr[gr].ch[ch]);
+ if (!stuffingBits)
+ break;
+ extraBits = 4095 - gi->part2_3_length;
+@@ -133,5 +126,3 @@ void shine_ResvFrameEnd(shine_global_config *config )
+ }
+ }
+ }
+-
+-
+diff --git a/src/lib/reservoir.h b/src/lib/reservoir.h
+index 2f1ffa5..2245778 100644
+--- a/src/lib/reservoir.h
++++ b/src/lib/reservoir.h
+@@ -1,9 +1,11 @@
+ #ifndef RESERVOIR_H
+ #define RESERVOIR_H
+
++#include "types.h"
++
+ void shine_ResvFrameBegin(int frameLength, shine_global_config *config);
+-int shine_max_reservoir_bits (double *pe, shine_global_config *config);
+-void shine_ResvAdjust (gr_info *gi, shine_global_config *config );
+-void shine_ResvFrameEnd (shine_global_config *config );
++int shine_max_reservoir_bits(double *pe, shine_global_config *config);
++void shine_ResvAdjust(gr_info *gi, shine_global_config *config);
++void shine_ResvFrameEnd(shine_global_config *config);
+
+ #endif
+diff --git a/src/lib/tables.c b/src/lib/tables.c
+index ff7e374..3c63b4f 100644
+--- a/src/lib/tables.c
++++ b/src/lib/tables.c
+@@ -7,120 +7,171 @@
+
+ #include "tables.h"
+
+-const int shine_slen1_tab[16] = { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 };
+-const int shine_slen2_tab[16] = { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 };
++const int shine_slen1_tab[16] = {0, 0, 0, 0, 3, 1, 1, 1,
++ 2, 2, 2, 3, 3, 3, 4, 4};
++const int shine_slen2_tab[16] = {0, 1, 2, 3, 0, 1, 2, 3,
++ 1, 2, 3, 1, 2, 3, 2, 3};
+
+ /* Valid samplerates and bitrates. */
+ const int samplerates[9] = {
+- 44100, 48000, 32000, /* MPEG-I */
+- 22050, 24000, 16000, /* MPEG-II */
+- 11025, 12000, 8000 /* MPEG-2.5 */
++ 44100, 48000, 32000, /* MPEG-I */
++ 22050, 24000, 16000, /* MPEG-II */
++ 11025, 12000, 8000 /* MPEG-2.5 */
+ };
+
+ const int bitrates[16][4] = {
+- /* MPEG version:
+- * 2.5, reserved, II, I */
+- { -1, -1, -1, -1},
+- { 8, -1, 8, 32},
+- { 16, -1, 16, 40},
+- { 24, -1, 24, 48},
+- { 32, -1, 32, 56},
+- { 40, -1, 40, 64},
+- { 48, -1, 48, 80},
+- { 56, -1, 56, 96},
+- { 64, -1, 64, 112},
+- { -1, -1, 80, 128},
+- { -1, -1, 96, 160},
+- { -1, -1, 112, 192},
+- { -1, -1, 128, 224},
+- { -1, -1, 144, 256},
+- { -1, -1, 160, 320},
+- { -1, -1, -1, -1}
+-};
++ /* MPEG version:
++ * 2.5, reserved, II, I */
++ {-1, -1, -1, -1}, {8, -1, 8, 32}, {16, -1, 16, 40},
++ {24, -1, 24, 48}, {32, -1, 32, 56}, {40, -1, 40, 64},
++ {48, -1, 48, 80}, {56, -1, 56, 96}, {64, -1, 64, 112},
++ {-1, -1, 80, 128}, {-1, -1, 96, 160}, {-1, -1, 112, 192},
++ {-1, -1, 128, 224}, {-1, -1, 144, 256}, {-1, -1, 160, 320},
++ {-1, -1, -1, -1}};
+
+-const int shine_scale_fact_band_index[9][23] =
+-{
+- /* MPEG-I */
++const int shine_scale_fact_band_index[9][23] = {
++ /* MPEG-I */
+ /* Table B.8.b: 44.1 kHz */
+- {0,4,8,12,16,20,24,30,36,44,52,62,74,90,110,134,162,196,238,288,342,418,576},
++ {0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62,
++ 74, 90, 110, 134, 162, 196, 238, 288, 342, 418, 576},
+ /* Table B.8.c: 48 kHz */
+- {0,4,8,12,16,20,24,30,36,42,50,60,72,88,106,128,156,190,230,276,330,384,576},
++ {0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60,
++ 72, 88, 106, 128, 156, 190, 230, 276, 330, 384, 576},
+ /* Table B.8.a: 32 kHz */
+- {0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576},
+- /* MPEG-II */
++ {0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66,
++ 82, 102, 126, 156, 194, 240, 296, 364, 448, 550, 576},
++ /* MPEG-II */
+ /* Table B.2.b: 22.05 kHz */
+- {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576},
++ {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,
++ 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576},
+ /* Table B.2.c: 24 kHz */
+- {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,330,394,464,540,576},
++ {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,
++ 114, 136, 162, 194, 232, 278, 330, 394, 464, 540, 576},
+ /* Table B.2.a: 16 kHz */
+- {0,6,12,18,24,30,36,44,45,66,80,96,116,140,168,200,238,248,336,396,464,522,576},
++ {0, 6, 12, 18, 24, 30, 36, 44, 45, 66, 80, 96,
++ 116, 140, 168, 200, 238, 248, 336, 396, 464, 522, 576},
+
+- /* MPEG-2.5 */
++ /* MPEG-2.5 */
+ /* 11.025 kHz */
+- {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576},
++ {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,
++ 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576},
+ /* 12 kHz */
+- {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576},
++ {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,
++ 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576},
+ /* MPEG-2.5 8 kHz */
+- {0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576},
++ {0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192,
++ 232, 280, 336, 400, 476, 566, 568, 570, 572, 574, 576},
+ };
+
+ /* note. 0.035781 is shine_enwindow maximum value */
+ /* scale and convert to fixed point before storing */
+-#define SHINE_EW(x) (int32_t)((double)(x) * 0x7fffffff)
+-#define SHINE_EW2(a,b) SHINE_EW(a), SHINE_EW(b)
+-#define SHINE_EW10(a,b,c,d,e,f,g,h,i,j) SHINE_EW2(a,b), SHINE_EW2(c,d), SHINE_EW2(e,f), SHINE_EW2(g,h), SHINE_EW2(i,j)
++#define SHINE_EW(x) (int32_t)((double)(x)*0x7fffffff)
++#define SHINE_EW2(a, b) SHINE_EW(a), SHINE_EW(b)
++#define SHINE_EW10(a, b, c, d, e, f, g, h, i, j) \
++ SHINE_EW2(a, b), SHINE_EW2(c, d), SHINE_EW2(e, f), SHINE_EW2(g, h), \
++ SHINE_EW2(i, j)
+
+ const int32_t shine_enwindow[] = {
+-SHINE_EW10( 0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000001, -0.000001, -0.000001),
+-SHINE_EW10( -0.000001, -0.000001, -0.000001, -0.000002, -0.000002, -0.000002, -0.000002, -0.000003, -0.000003, -0.000003),
+-SHINE_EW10( -0.000004, -0.000004, -0.000005, -0.000005, -0.000006, -0.000007, -0.000008, -0.000008, -0.000009, -0.000010),
+-SHINE_EW10( -0.000011, -0.000012, -0.000014, -0.000015, -0.000017, -0.000018, -0.000020, -0.000021, -0.000023, -0.000025),
+-SHINE_EW10( -0.000028, -0.000030, -0.000032, -0.000035, -0.000038, -0.000041, -0.000043, -0.000046, -0.000050, -0.000053),
+-SHINE_EW10( -0.000056, -0.000060, -0.000063, -0.000066, -0.000070, -0.000073, -0.000077, -0.000081, -0.000084, -0.000087),
+-SHINE_EW10( -0.000091, -0.000093, -0.000096, -0.000099, 0.000102, 0.000104, 0.000106, 0.000107, 0.000108, 0.000109),
+-SHINE_EW10( 0.000109, 0.000108, 0.000107, 0.000105, 0.000103, 0.000099, 0.000095, 0.000090, 0.000084, 0.000078),
+-SHINE_EW10( 0.000070, 0.000061, 0.000051, 0.000040, 0.000027, 0.000014, -0.000001, -0.000017, -0.000034, -0.000053),
+-SHINE_EW10( -0.000073, -0.000094, -0.000116, -0.000140, -0.000165, -0.000191, -0.000219, -0.000247, -0.000277, -0.000308),
+-SHINE_EW10( -0.000339, -0.000371, -0.000404, -0.000438, -0.000473, -0.000507, -0.000542, -0.000577, -0.000612, -0.000647),
+-SHINE_EW10( -0.000681, -0.000714, -0.000747, -0.000779, -0.000810, -0.000839, -0.000866, -0.000892, -0.000915, -0.000936),
+-SHINE_EW10( -0.000954, -0.000969, -0.000981, -0.000989, -0.000994, -0.000995, -0.000992, -0.000984, 0.000971, 0.000954),
+-SHINE_EW10( 0.000931, 0.000903, 0.000869, 0.000829, 0.000784, 0.000732, 0.000674, 0.000610, 0.000539, 0.000463),
+-SHINE_EW10( 0.000379, 0.000288, 0.000192, 0.000088, -0.000021, -0.000137, -0.000260, -0.000388, -0.000522, -0.000662),
+-SHINE_EW10( -0.000807, -0.000957, -0.001111, -0.001270, -0.001432, -0.001598, -0.001767, -0.001937, -0.002110, -0.002283),
+-SHINE_EW10( -0.002457, -0.002631, -0.002803, -0.002974, -0.003142, -0.003307, -0.003467, -0.003623, -0.003772, -0.003914),
+-SHINE_EW10( -0.004049, -0.004175, -0.004291, -0.004396, -0.004490, -0.004570, -0.004638, -0.004691, -0.004728, -0.004749),
+-SHINE_EW10( -0.004752, -0.004737, -0.004703, -0.004649, -0.004574, -0.004477, -0.004358, -0.004215, -0.004049, -0.003859),
+-SHINE_EW10( -0.003643, -0.003402, 0.003135, 0.002841, 0.002522, 0.002175, 0.001801, 0.001400, 0.000971, 0.000516),
+-SHINE_EW10( 0.000033, -0.000476, -0.001012, -0.001574, -0.002162, -0.002774, -0.003411, -0.004072, -0.004756, -0.005462),
+-SHINE_EW10( -0.006189, -0.006937, -0.007703, -0.008487, -0.009288, -0.010104, -0.010933, -0.011775, -0.012628, -0.013489),
+-SHINE_EW10( -0.014359, -0.015234, -0.016113, -0.016994, -0.017876, -0.018757, -0.019634, -0.020507, -0.021372, -0.022229),
+-SHINE_EW10( -0.023074, -0.023907, -0.024725, -0.025527, -0.026311, -0.027074, -0.027815, -0.028533, -0.029225, -0.029890),
+-SHINE_EW10( -0.030527, -0.031133, -0.031707, -0.032248, -0.032755, -0.033226, -0.033660, -0.034056, -0.034413, -0.034730),
+-SHINE_EW10( -0.035007, -0.035242, -0.035435, -0.035586, -0.035694, -0.035759, 0.035781, 0.035759, 0.035694, 0.035586),
+-SHINE_EW10( 0.035435, 0.035242, 0.035007, 0.034730, 0.034413, 0.034056, 0.033660, 0.033226, 0.032755, 0.032248),
+-SHINE_EW10( 0.031707, 0.031133, 0.030527, 0.029890, 0.029225, 0.028533, 0.027815, 0.027074, 0.026311, 0.025527),
+-SHINE_EW10( 0.024725, 0.023907, 0.023074, 0.022229, 0.021372, 0.020507, 0.019634, 0.018757, 0.017876, 0.016994),
+-SHINE_EW10( 0.016113, 0.015234, 0.014359, 0.013489, 0.012628, 0.011775, 0.010933, 0.010104, 0.009288, 0.008487),
+-SHINE_EW10( 0.007703, 0.006937, 0.006189, 0.005462, 0.004756, 0.004072, 0.003411, 0.002774, 0.002162, 0.001574),
+-SHINE_EW10( 0.001012, 0.000476, -0.000033, -0.000516, -0.000971, -0.001400, -0.001801, -0.002175, -0.002522, -0.002841),
+-SHINE_EW10( 0.003135, 0.003402, 0.003643, 0.003859, 0.004049, 0.004215, 0.004358, 0.004477, 0.004574, 0.004649),
+-SHINE_EW10( 0.004703, 0.004737, 0.004752, 0.004749, 0.004728, 0.004691, 0.004638, 0.004570, 0.004490, 0.004396),
+-SHINE_EW10( 0.004291, 0.004175, 0.004049, 0.003914, 0.003772, 0.003623, 0.003467, 0.003307, 0.003142, 0.002974),
+-SHINE_EW10( 0.002803, 0.002631, 0.002457, 0.002283, 0.002110, 0.001937, 0.001767, 0.001598, 0.001432, 0.001270),
+-SHINE_EW10( 0.001111, 0.000957, 0.000807, 0.000662, 0.000522, 0.000388, 0.000260, 0.000137, 0.000021, -0.000088),
+-SHINE_EW10( -0.000192, -0.000288, -0.000379, -0.000463, -0.000539, -0.000610, -0.000674, -0.000732, -0.000784, -0.000829),
+-SHINE_EW10( -0.000869, -0.000903, -0.000931, -0.000954, 0.000971, 0.000984, 0.000992, 0.000995, 0.000994, 0.000989),
+-SHINE_EW10( 0.000981, 0.000969, 0.000954, 0.000936, 0.000915, 0.000892, 0.000866, 0.000839, 0.000810, 0.000779),
+-SHINE_EW10( 0.000747, 0.000714, 0.000681, 0.000647, 0.000612, 0.000577, 0.000542, 0.000507, 0.000473, 0.000438),
+-SHINE_EW10( 0.000404, 0.000371, 0.000339, 0.000308, 0.000277, 0.000247, 0.000219, 0.000191, 0.000165, 0.000140),
+-SHINE_EW10( 0.000116, 0.000094, 0.000073, 0.000053, 0.000034, 0.000017, 0.000001, -0.000014, -0.000027, -0.000040),
+-SHINE_EW10( -0.000051, -0.000061, -0.000070, -0.000078, -0.000084, -0.000090, -0.000095, -0.000099, -0.000103, -0.000105),
+-SHINE_EW10( -0.000107, -0.000108, -0.000109, -0.000109, -0.000108, -0.000107, -0.000106, -0.000104, 0.000102, 0.000099),
+-SHINE_EW10( 0.000096, 0.000093, 0.000091, 0.000087, 0.000084, 0.000081, 0.000077, 0.000073, 0.000070, 0.000066),
+-SHINE_EW10( 0.000063, 0.000060, 0.000056, 0.000053, 0.000050, 0.000046, 0.000043, 0.000041, 0.000038, 0.000035),
+-SHINE_EW10( 0.000032, 0.000030, 0.000028, 0.000025, 0.000023, 0.000021, 0.000020, 0.000018, 0.000017, 0.000015),
+-SHINE_EW10( 0.000014, 0.000012, 0.000011, 0.000010, 0.000009, 0.000008, 0.000008, 0.000007, 0.000006, 0.000005),
+-SHINE_EW10( 0.000005, 0.000004, 0.000004, 0.000003, 0.000003, 0.000003, 0.000002, 0.000002, 0.000002, 0.000002),
+-SHINE_EW10( 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000),
+-SHINE_EW2 ( 0.000000, 0.000000)
+-};
++ SHINE_EW10(0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000000,
++ -0.000000, -0.000001, -0.000001, -0.000001),
++ SHINE_EW10(-0.000001, -0.000001, -0.000001, -0.000002, -0.000002, -0.000002,
++ -0.000002, -0.000003, -0.000003, -0.000003),
++ SHINE_EW10(-0.000004, -0.000004, -0.000005, -0.000005, -0.000006, -0.000007,
++ -0.000008, -0.000008, -0.000009, -0.000010),
++ SHINE_EW10(-0.000011, -0.000012, -0.000014, -0.000015, -0.000017, -0.000018,
++ -0.000020, -0.000021, -0.000023, -0.000025),
++ SHINE_EW10(-0.000028, -0.000030, -0.000032, -0.000035, -0.000038, -0.000041,
++ -0.000043, -0.000046, -0.000050, -0.000053),
++ SHINE_EW10(-0.000056, -0.000060, -0.000063, -0.000066, -0.000070, -0.000073,
++ -0.000077, -0.000081, -0.000084, -0.000087),
++ SHINE_EW10(-0.000091, -0.000093, -0.000096, -0.000099, 0.000102, 0.000104,
++ 0.000106, 0.000107, 0.000108, 0.000109),
++ SHINE_EW10(0.000109, 0.000108, 0.000107, 0.000105, 0.000103, 0.000099,
++ 0.000095, 0.000090, 0.000084, 0.000078),
++ SHINE_EW10(0.000070, 0.000061, 0.000051, 0.000040, 0.000027, 0.000014,
++ -0.000001, -0.000017, -0.000034, -0.000053),
++ SHINE_EW10(-0.000073, -0.000094, -0.000116, -0.000140, -0.000165, -0.000191,
++ -0.000219, -0.000247, -0.000277, -0.000308),
++ SHINE_EW10(-0.000339, -0.000371, -0.000404, -0.000438, -0.000473, -0.000507,
++ -0.000542, -0.000577, -0.000612, -0.000647),
++ SHINE_EW10(-0.000681, -0.000714, -0.000747, -0.000779, -0.000810, -0.000839,
++ -0.000866, -0.000892, -0.000915, -0.000936),
++ SHINE_EW10(-0.000954, -0.000969, -0.000981, -0.000989, -0.000994, -0.000995,
++ -0.000992, -0.000984, 0.000971, 0.000954),
++ SHINE_EW10(0.000931, 0.000903, 0.000869, 0.000829, 0.000784, 0.000732,
++ 0.000674, 0.000610, 0.000539, 0.000463),
++ SHINE_EW10(0.000379, 0.000288, 0.000192, 0.000088, -0.000021, -0.000137,
++ -0.000260, -0.000388, -0.000522, -0.000662),
++ SHINE_EW10(-0.000807, -0.000957, -0.001111, -0.001270, -0.001432, -0.001598,
++ -0.001767, -0.001937, -0.002110, -0.002283),
++ SHINE_EW10(-0.002457, -0.002631, -0.002803, -0.002974, -0.003142, -0.003307,
++ -0.003467, -0.003623, -0.003772, -0.003914),
++ SHINE_EW10(-0.004049, -0.004175, -0.004291, -0.004396, -0.004490, -0.004570,
++ -0.004638, -0.004691, -0.004728, -0.004749),
++ SHINE_EW10(-0.004752, -0.004737, -0.004703, -0.004649, -0.004574, -0.004477,
++ -0.004358, -0.004215, -0.004049, -0.003859),
++ SHINE_EW10(-0.003643, -0.003402, 0.003135, 0.002841, 0.002522, 0.002175,
++ 0.001801, 0.001400, 0.000971, 0.000516),
++ SHINE_EW10(0.000033, -0.000476, -0.001012, -0.001574, -0.002162, -0.002774,
++ -0.003411, -0.004072, -0.004756, -0.005462),
++ SHINE_EW10(-0.006189, -0.006937, -0.007703, -0.008487, -0.009288, -0.010104,
++ -0.010933, -0.011775, -0.012628, -0.013489),
++ SHINE_EW10(-0.014359, -0.015234, -0.016113, -0.016994, -0.017876, -0.018757,
++ -0.019634, -0.020507, -0.021372, -0.022229),
++ SHINE_EW10(-0.023074, -0.023907, -0.024725, -0.025527, -0.026311, -0.027074,
++ -0.027815, -0.028533, -0.029225, -0.029890),
++ SHINE_EW10(-0.030527, -0.031133, -0.031707, -0.032248, -0.032755, -0.033226,
++ -0.033660, -0.034056, -0.034413, -0.034730),
++ SHINE_EW10(-0.035007, -0.035242, -0.035435, -0.035586, -0.035694, -0.035759,
++ 0.035781, 0.035759, 0.035694, 0.035586),
++ SHINE_EW10(0.035435, 0.035242, 0.035007, 0.034730, 0.034413, 0.034056,
++ 0.033660, 0.033226, 0.032755, 0.032248),
++ SHINE_EW10(0.031707, 0.031133, 0.030527, 0.029890, 0.029225, 0.028533,
++ 0.027815, 0.027074, 0.026311, 0.025527),
++ SHINE_EW10(0.024725, 0.023907, 0.023074, 0.022229, 0.021372, 0.020507,
++ 0.019634, 0.018757, 0.017876, 0.016994),
++ SHINE_EW10(0.016113, 0.015234, 0.014359, 0.013489, 0.012628, 0.011775,
++ 0.010933, 0.010104, 0.009288, 0.008487),
++ SHINE_EW10(0.007703, 0.006937, 0.006189, 0.005462, 0.004756, 0.004072,
++ 0.003411, 0.002774, 0.002162, 0.001574),
++ SHINE_EW10(0.001012, 0.000476, -0.000033, -0.000516, -0.000971, -0.001400,
++ -0.001801, -0.002175, -0.002522, -0.002841),
++ SHINE_EW10(0.003135, 0.003402, 0.003643, 0.003859, 0.004049, 0.004215,
++ 0.004358, 0.004477, 0.004574, 0.004649),
++ SHINE_EW10(0.004703, 0.004737, 0.004752, 0.004749, 0.004728, 0.004691,
++ 0.004638, 0.004570, 0.004490, 0.004396),
++ SHINE_EW10(0.004291, 0.004175, 0.004049, 0.003914, 0.003772, 0.003623,
++ 0.003467, 0.003307, 0.003142, 0.002974),
++ SHINE_EW10(0.002803, 0.002631, 0.002457, 0.002283, 0.002110, 0.001937,
++ 0.001767, 0.001598, 0.001432, 0.001270),
++ SHINE_EW10(0.001111, 0.000957, 0.000807, 0.000662, 0.000522, 0.000388,
++ 0.000260, 0.000137, 0.000021, -0.000088),
++ SHINE_EW10(-0.000192, -0.000288, -0.000379, -0.000463, -0.000539, -0.000610,
++ -0.000674, -0.000732, -0.000784, -0.000829),
++ SHINE_EW10(-0.000869, -0.000903, -0.000931, -0.000954, 0.000971, 0.000984,
++ 0.000992, 0.000995, 0.000994, 0.000989),
++ SHINE_EW10(0.000981, 0.000969, 0.000954, 0.000936, 0.000915, 0.000892,
++ 0.000866, 0.000839, 0.000810, 0.000779),
++ SHINE_EW10(0.000747, 0.000714, 0.000681, 0.000647, 0.000612, 0.000577,
++ 0.000542, 0.000507, 0.000473, 0.000438),
++ SHINE_EW10(0.000404, 0.000371, 0.000339, 0.000308, 0.000277, 0.000247,
++ 0.000219, 0.000191, 0.000165, 0.000140),
++ SHINE_EW10(0.000116, 0.000094, 0.000073, 0.000053, 0.000034, 0.000017,
++ 0.000001, -0.000014, -0.000027, -0.000040),
++ SHINE_EW10(-0.000051, -0.000061, -0.000070, -0.000078, -0.000084, -0.000090,
++ -0.000095, -0.000099, -0.000103, -0.000105),
++ SHINE_EW10(-0.000107, -0.000108, -0.000109, -0.000109, -0.000108, -0.000107,
++ -0.000106, -0.000104, 0.000102, 0.000099),
++ SHINE_EW10(0.000096, 0.000093, 0.000091, 0.000087, 0.000084, 0.000081,
++ 0.000077, 0.000073, 0.000070, 0.000066),
++ SHINE_EW10(0.000063, 0.000060, 0.000056, 0.000053, 0.000050, 0.000046,
++ 0.000043, 0.000041, 0.000038, 0.000035),
++ SHINE_EW10(0.000032, 0.000030, 0.000028, 0.000025, 0.000023, 0.000021,
++ 0.000020, 0.000018, 0.000017, 0.000015),
++ SHINE_EW10(0.000014, 0.000012, 0.000011, 0.000010, 0.000009, 0.000008,
++ 0.000008, 0.000007, 0.000006, 0.000005),
++ SHINE_EW10(0.000005, 0.000004, 0.000004, 0.000003, 0.000003, 0.000003,
++ 0.000002, 0.000002, 0.000002, 0.000002),
++ SHINE_EW10(0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001,
++ 0.000000, 0.000000, 0.000000, 0.000000),
++ SHINE_EW2(0.000000, 0.000000)};
+diff --git a/src/lib/tables.h b/src/lib/tables.h
+index 5c94228..fe06502 100644
+--- a/src/lib/tables.h
++++ b/src/lib/tables.h
+@@ -9,8 +9,7 @@ extern const int shine_slen2_tab[16];
+ extern const int samplerates[9];
+ extern const int bitrates[16][4];
+
+-extern const int shine_scale_fact_band_index[9][23];
++extern const int shine_scale_fact_band_index[9][23];
+ extern const int32_t shine_enwindow[];
+
+ #endif
+-
+diff --git a/src/lib/types.h b/src/lib/types.h
+index f3def1a..11a05fc 100644
+--- a/src/lib/types.h
++++ b/src/lib/types.h
+@@ -2,18 +2,18 @@
+ #define PRIV_TYPES_H
+
+ #include <stdio.h>
+-#include <string.h>
+ #include <stdlib.h>
++#include <string.h>
+
+ #include <math.h>
+
+-#define GRANULE_SIZE 576
++#define GRANULE_SIZE 576
+
+ #include "bitstream.h"
+
+ /* Include arch-specific instructions,
+ * when defined. */
+-#if defined(__mips__) && (__mips != 64)
++#if defined(__mips__) && (__mips == 32)
+ #include "mult_mips_gcc.h"
+ #elif defined(__arm__) && !defined(__thumb__)
+ #include "mult_sarm_gcc.h"
+@@ -24,29 +24,32 @@
+ #include "mult_noarch_gcc.h"
+
+ #ifndef SWAB32
+-#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
+-#define SWAB32(x) __builtin_bswap32(x)
++#if defined(__GNUC__) && \
++ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
++#define SWAB32(x) __builtin_bswap32(x)
+ #else
+-#define SWAB32(x) (((unsigned int)(x) >> 24) | (((unsigned int)(x) >> 8) & 0xff00) | (((unsigned int)(x) & 0xff00) << 8) | ((unsigned int)(x) << 24))
++#define SWAB32(x) \
++ (((unsigned int)(x) >> 24) | (((unsigned int)(x) >> 8) & 0xff00) | \
++ (((unsigned int)(x)&0xff00) << 8) | ((unsigned int)(x) << 24))
+ #endif
+ #endif
+
+ /* #define DEBUG if you want the library to dump info to stdout */
+
+-#define PI 3.14159265358979
+-#define PI4 0.78539816339745
+-#define PI12 0.26179938779915
+-#define PI36 0.087266462599717
+-#define PI64 0.049087385212
+-#define SQRT2 1.41421356237
+-#define LN2 0.69314718
++#define PI 3.14159265358979
++#define PI4 0.78539816339745
++#define PI12 0.26179938779915
++#define PI36 0.087266462599717
++#define PI64 0.049087385212
++#define SQRT2 1.41421356237
++#define LN2 0.69314718
+ #define LN_TO_LOG10 0.2302585093
+-#define BLKSIZE 1024
+-#define HAN_SIZE 512 /* for loop unrolling, require that HAN_SIZE%8==0 */
++#define BLKSIZE 1024
++#define HAN_SIZE 512 /* for loop unrolling, require that HAN_SIZE%8==0 */
+ #define SCALE_BLOCK 12
+ #define SCALE_RANGE 64
+-#define SCALE 32768
+-#define SBLIMIT 32
++#define SCALE 32768
++#define SBLIMIT 32
+
+ #ifndef MAX_CHANNELS
+ #define MAX_CHANNELS 2
+@@ -57,44 +60,44 @@
+ #endif
+
+ typedef struct {
+- int channels;
+- int samplerate;
++ int channels;
++ int samplerate;
+ } priv_shine_wave_t;
+
+ typedef struct {
+- int version;
+- int layer;
+- int granules_per_frame;
+- int mode; /* + */ /* Stereo mode */
+- int bitr; /* + */ /* Must conform to known bitrate - see Main.c */
+- int emph; /* + */ /* De-emphasis */
+- int padding;
+- int bits_per_frame;
+- int bits_per_slot;
+- double frac_slots_per_frame;
+- double slot_lag;
+- int whole_slots_per_frame;
+- int bitrate_index; /* + */ /* See Main.c and Layer3.c */
+- int samplerate_index; /* + */ /* See Main.c and Layer3.c */
+- int crc;
+- int ext;
+- int mode_ext;
+- int copyright; /* + */
+- int original; /* + */
++ int version;
++ int layer;
++ int granules_per_frame;
++ int mode; /* + */ /* Stereo mode */
++ int bitr; /* + */ /* Must conform to known bitrate - see Main.c */
++ int emph; /* + */ /* De-emphasis */
++ int padding;
++ int bits_per_frame;
++ int bits_per_slot;
++ double frac_slots_per_frame;
++ double slot_lag;
++ int whole_slots_per_frame;
++ int bitrate_index; /* + */ /* See Main.c and Layer3.c */
++ int samplerate_index; /* + */ /* See Main.c and Layer3.c */
++ int crc;
++ int ext;
++ int mode_ext;
++ int copyright; /* + */
++ int original; /* + */
+ } priv_shine_mpeg_t;
+
+ typedef struct {
+- int32_t *xr; /* magnitudes of the spectral values */
+- int32_t xrsq[GRANULE_SIZE]; /* xr squared */
+- int32_t xrabs[GRANULE_SIZE]; /* xr absolute */
+- int32_t xrmax; /* maximum of xrabs array */
+- int32_t en_tot[MAX_GRANULES]; /* gr */
++ int32_t *xr; /* magnitudes of the spectral values */
++ int32_t xrsq[GRANULE_SIZE]; /* xr squared */
++ int32_t xrabs[GRANULE_SIZE]; /* xr absolute */
++ int32_t xrmax; /* maximum of xrabs array */
++ int32_t en_tot[MAX_GRANULES]; /* gr */
+ int32_t en[MAX_GRANULES][21];
+ int32_t xm[MAX_GRANULES][21];
+ int32_t xrmaxl[MAX_GRANULES];
+- double steptab[128]; /* 2**(-x/4) for x = -127..0 */
+- int32_t steptabi[128]; /* 2**(-x/4) for x = -127..0 */
+- int int2idx[10000]; /* x**(3/4) for x = 0..9999 */
++ double steptab[128]; /* 2**(-x/4) for x = -127..0 */
++ int32_t steptabi[128]; /* 2**(-x/4) for x = -127..0 */
++ int int2idx[10000]; /* x**(3/4) for x = 0..9999 */
+ } l3loop_t;
+
+ typedef struct {
+@@ -105,7 +108,7 @@ typedef struct {
+ int off[MAX_CHANNELS];
+ int32_t fl[SBLIMIT][64];
+ int32_t x[MAX_CHANNELS][HAN_SIZE];
+-} subband_t;
++} subband_t;
+
+ /* Side information */
+ typedef struct {
+@@ -130,49 +133,48 @@ typedef struct {
+ } gr_info;
+
+ typedef struct {
+- unsigned private_bits;
+- int resvDrain;
+- unsigned scfsi[MAX_CHANNELS][4];
++ unsigned private_bits;
++ int resvDrain;
++ unsigned scfsi[MAX_CHANNELS][4];
++ struct {
+ struct {
+- struct {
+- gr_info tt;
+- } ch[MAX_CHANNELS];
+- } gr[MAX_GRANULES];
++ gr_info tt;
++ } ch[MAX_CHANNELS];
++ } gr[MAX_GRANULES];
+ } shine_side_info_t;
+
+ typedef struct {
+- double l[MAX_GRANULES][MAX_CHANNELS][21];
++ double l[MAX_GRANULES][MAX_CHANNELS][21];
+ } shine_psy_ratio_t;
+
+ typedef struct {
+- double l[MAX_GRANULES][MAX_CHANNELS][21];
++ double l[MAX_GRANULES][MAX_CHANNELS][21];
+ } shine_psy_xmin_t;
+
+ typedef struct {
+- int32_t l[MAX_GRANULES][MAX_CHANNELS][22]; /* [cb] */
+- int32_t s[MAX_GRANULES][MAX_CHANNELS][13][3]; /* [window][cb] */
++ int32_t l[MAX_GRANULES][MAX_CHANNELS][22]; /* [cb] */
++ int32_t s[MAX_GRANULES][MAX_CHANNELS][13][3]; /* [window][cb] */
+ } shine_scalefac_t;
+
+-
+-typedef struct shine_global_flags {
+- priv_shine_wave_t wave;
+- priv_shine_mpeg_t mpeg;
+- bitstream_t bs;
++typedef struct shine_global_flags {
++ priv_shine_wave_t wave;
++ priv_shine_mpeg_t mpeg;
++ bitstream_t bs;
+ shine_side_info_t side_info;
+- int sideinfo_len;
+- int mean_bits;
++ int sideinfo_len;
++ int mean_bits;
+ shine_psy_ratio_t ratio;
+- shine_scalefac_t scalefactor;
+- int16_t *buffer[MAX_CHANNELS];
+- double pe[MAX_CHANNELS][MAX_GRANULES];
+- int l3_enc[MAX_CHANNELS][MAX_GRANULES][GRANULE_SIZE];
+- int32_t l3_sb_sample[MAX_CHANNELS][MAX_GRANULES+1][18][SBLIMIT];
+- int32_t mdct_freq[MAX_CHANNELS][MAX_GRANULES][GRANULE_SIZE];
+- int ResvSize;
+- int ResvMax;
+- l3loop_t l3loop;
+- mdct_t mdct;
+- subband_t subband;
++ shine_scalefac_t scalefactor;
++ int16_t *buffer[MAX_CHANNELS];
++ double pe[MAX_CHANNELS][MAX_GRANULES];
++ int l3_enc[MAX_CHANNELS][MAX_GRANULES][GRANULE_SIZE];
++ int32_t l3_sb_sample[MAX_CHANNELS][MAX_GRANULES + 1][18][SBLIMIT];
++ int32_t mdct_freq[MAX_CHANNELS][MAX_GRANULES][GRANULE_SIZE];
++ int ResvSize;
++ int ResvMax;
++ l3loop_t l3loop;
++ mdct_t mdct;
++ subband_t subband;
+ } shine_global_config;
+
+ #endif
diff --git a/multimedia/shine/shine.SlackBuild b/multimedia/shine/shine.SlackBuild
new file mode 100644
index 0000000000..81d701d8f3
--- /dev/null
+++ b/multimedia/shine/shine.SlackBuild
@@ -0,0 +1,111 @@
+#!/bin/bash
+
+# Slackware build script for shine
+
+# Copyright 2022-2024 Vijay Marcel
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=shine
+VERSION=${VERSION:-3.1.1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-march=i586 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-march=i686 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-march=x86-64 -mtune=generic -pipe -O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+patch -p1 --verbose --unified < $CWD/fix-bugs.patch
+
+./bootstrap
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --build=$ARCH-slackware-linux
+
+make
+make install DESTDIR=$PKG
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded --remove-section=.comment --remove-section=.note 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a README.md COPYING ChangeLog $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/shine/shine.info b/multimedia/shine/shine.info
new file mode 100644
index 0000000000..401505a283
--- /dev/null
+++ b/multimedia/shine/shine.info
@@ -0,0 +1,10 @@
+PRGNAM="shine"
+VERSION="3.1.1"
+HOMEPAGE="https://github.com/toots/shine"
+DOWNLOAD="https://github.com/toots/shine/archive/3.1.1/shine-3.1.1.tar.gz"
+MD5SUM="ff41cb139c25470f2d9c9acc9f97cc8d"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/shine/slack-desc b/multimedia/shine/slack-desc
new file mode 100644
index 0000000000..157b9346fb
--- /dev/null
+++ b/multimedia/shine/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+shine: shine (Fixed Point MP3 Encoder)
+shine:
+shine: shine is a fast MP3 Encoding library implemented in
+shine: fixed point arithmetic.It can be used to perform super
+shine: fast MP3 encoding on architectures without FPU.
+shine:
+shine: Homepage:https://github.com/toots/shine
+shine:
+shine:
+shine:
+shine:
diff --git a/multimedia/shotcut/shotcut.SlackBuild b/multimedia/shotcut/shotcut.SlackBuild
index 82e3e9e479..7b7a27f02c 100644
--- a/multimedia/shotcut/shotcut.SlackBuild
+++ b/multimedia/shotcut/shotcut.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Slackware build script for shotcut.
#
@@ -23,10 +23,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=shotcut
-VERSION=${VERSION:-18.11.18}
+VERSION=${VERSION:-21.12.24}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -75,6 +85,7 @@ find -L . \
# Fix libpng warning.
# [Warning] <> libpng warning: iCCP: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG
+rm -fR packaging/windows/Microsoft* # avoids find's choking
for i in $(find . -name "*\.png"); do
mv $i ${i}.old.png
convert $i.old.png $i
@@ -82,15 +93,22 @@ for i in $(find . -name "*\.png"); do
rm $i.old.png
done
-qmake-qt5 PREFIX="/usr" QMAKE_CFLAGS+="$SLKCFLAGS" QMAKE_CXXFLAGS+="$SLKCFLAGS" \
- CONFIG+=release SHOTCUT_VERSION="$VERSION" $PRGNAM.pro
-
+mkdir -p build
+cd build
+qmake PREFIX="/usr" QMAKE_CFLAGS+="$SLKCFLAGS" QMAKE_CXXFLAGS+="$SLKCFLAGS" \
+ CONFIG+=release SHOTCUT_VERSION="$VERSION" DEFINES+=SHOTCUT_NOUPGRADE ..
make
+lrelease ../translations/*.ts
make install INSTALL_ROOT=$PKG
+cd ..
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+mv $PKG/usr/share/man $PKG/usr/man
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
find $PKG/usr/share/$PRGNAM -type f -exec chmod 0644 '{}' \;
mkdir -p $PKG/usr/share/applications
@@ -105,4 +123,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/shotcut/shotcut.info b/multimedia/shotcut/shotcut.info
index fbb3253048..1cf57d99db 100644
--- a/multimedia/shotcut/shotcut.info
+++ b/multimedia/shotcut/shotcut.info
@@ -1,10 +1,10 @@
PRGNAM="shotcut"
-VERSION="18.11.18"
+VERSION="21.12.24"
HOMEPAGE="https://www.shotcut.org/"
-DOWNLOAD="https://github.com/mltframework/shotcut/archive/v18.11.18/shotcut-18.11.18.tar.gz"
-MD5SUM="60c7329716f3ac4b170a17073917a939"
+DOWNLOAD="https://github.com/mltframework/shotcut/archive/v21.12.24/shotcut-21.12.24.tar.gz"
+MD5SUM="4aa9c69e35b45d33c924376ea518f469"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="qt5-webkit jack x264 lame frei0r ladspa_sdk mlt SDL2"
+REQUIRES="jack x264 ladspa_sdk"
MAINTAINER="Larry Hajali"
EMAIL="larryhaja[at]gmail[dot]com"
diff --git a/multimedia/sickchill/README b/multimedia/sickchill/README
new file mode 100644
index 0000000000..bd6ad6e1f8
--- /dev/null
+++ b/multimedia/sickchill/README
@@ -0,0 +1,32 @@
+sickchill (Less rage, more chill.)
+
+Automatic Video Library Manager for TV Shows. It watches for new
+episodes of your favorite shows, and when they are posted it does its
+magic.
+
+NOTE: Requires sickchill user and group.
+ groupadd -g 377 sickchill
+ useradd -u 377 -g sickchill -d /var/lib/sickchill -s /bin/false sickchill
+
+If you previously had sickrage installed, please change the user and
+group with the following:
+
+ groupmod -n sickchill sickrage
+ usermod -l sickchill -g sickchill -d /var/lib/sickchill sickrage
+
+To have this start up with Slackware, please add the following to your
+/etc/rc.d/rc.local:
+
+# Start sickrage
+if [ -x /etc/rc.d/rc.sickrage ]; then
+ /etc/rc.d/rc.sickrage start
+fi
+
+If you want it to shut down properly when Slackware restarts or shuts
+down, please add the following to your /etc/rc.d/rc.local_shutdown
+(it may need to be created):
+
+# Stop sickrage
+if [ -x /etc/rc.d/rc.sickrage ]; then
+ /etc/rc.d/rc.sickrage stop
+fi
diff --git a/multimedia/sickchill/config.ini b/multimedia/sickchill/config.ini
new file mode 100644
index 0000000000..b2e8361381
--- /dev/null
+++ b/multimedia/sickchill/config.ini
@@ -0,0 +1,3 @@
+[General]
+log_dir = /var/log/sickchill
+version_notify = 0
diff --git a/multimedia/mediatomb/doinst.sh b/multimedia/sickchill/doinst.sh
index adc456f74f..26340579ec 100644
--- a/multimedia/mediatomb/doinst.sh
+++ b/multimedia/sickchill/doinst.sh
@@ -22,8 +22,6 @@ preserve_perms() {
config $NEW
}
-# Prepare the new configuration files
-config etc/mediatomb/config.xml.new
-config etc/rc.d/rc.mediatomb.conf.new
-preserve_perms etc/rc.d/rc.mediatomb.new
-
+preserve_perms etc/rc.d/rc.sickchill.new
+config etc/sickchill.conf.new
+config var/lib/sickchill/config.ini.new
diff --git a/multimedia/sickchill/rc.sickchill b/multimedia/sickchill/rc.sickchill
new file mode 100644
index 0000000000..f36eb79604
--- /dev/null
+++ b/multimedia/sickchill/rc.sickchill
@@ -0,0 +1,171 @@
+#!/bin/bash
+
+# Start/stop/restart sickchill.
+
+# Originally created for sickrage in 2016
+# Updated to sickchill in 2023
+
+# Copyright 2016-2024 Jeremy Hansen <jebrhansen+SBo@gmail.com>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+# Set program name in case you want to run sick{beard|rage|gear|etc}
+PROG=${PROG:-sickchill}
+
+# If you want to have multiple instances of sickchill running, set
+# the suffix here.
+SUFFIX=
+
+# Set the full program name for folders
+if [ -n "$SUFFIX" ]; then
+ FULLPROG="$PROG-$SUFFIX"
+# Just use $PROG if there isn't a suffix set
+else
+ FULLPROG="$PROG"
+fi
+
+# Source SickRage configuration
+if [ -f /etc/"$FULLPROG".conf ]; then
+ . /etc/"$FULLPROG".conf
+fi
+
+# Ensure all required variables are set in conf file
+# Edit conf file in /etc/$PROG-$SUFFIX.conf for any changes
+MISSING=0
+for var in USERNAME HOMEDIR DATADIR PIDFILE PORT; do
+ if [ -z "${!var}" ]; then
+ ((MISSING++))
+ VAR="$var $VAR"
+ fi
+done
+if [ $MISSING -gt 0 ]; then
+ echo "/etc/$FULLPROG.conf is missing some or all required variables ($VAR)."
+ echo "Please check the file and try again."
+fi
+
+# Check if the program is running and pid file exists
+check()
+{
+ if pgrep "$PROG" > /dev/null; then
+ # Check if the pidfile matches the running pid
+ if [ -e "$PIDFILE" ] && pgrep -f "$PIDFILE" > /dev/null; then
+ STATUS=running
+ else
+ # Check if the program is running without the pid file matching
+ if pgrep -f "$FULLPROG.*$PORT" > /dev/null; then
+ STATUS=broken
+ echo "WARNING: $FULLPROG is running without the correct pid file."
+ echo "Did you start it without using the rc.$FULLPROG?"
+ else
+ STATUS=stopped
+ fi
+ fi
+ else
+ STATUS=stopped
+ fi
+}
+
+status()
+{
+ if [ $STATUS == "running" ]; then
+ echo "$FULLPROG currently running."
+ elif [ $STATUS == "stopped" ]; then
+ echo "$FULLPROG not running."
+ elif [ $STATUS == "broken" ]; then
+ echo "Please fix the issue before attempting to run $(basename "$0") again."
+ else
+ echo "Status unknown."
+ fi
+}
+
+start()
+{
+ if [ $STATUS == "stopped" ]; then
+ echo -n "Starting $PROG: "
+ if su "$USERNAME" -s /bin/sh -c "/usr/bin/${PROG} --daemon --pidfile=${PIDFILE} --datadir=${DATADIR} --port=${PORT} &> /dev/null"; then
+ echo "Startup Successful"
+ else
+ su "$USERNAME" -s /bin/sh -c "/usr/bin/${PROG} --daemon --pidfile=${PIDFILE} --datadir=${DATADIR} --port=${PORT}"
+ echo "Startup Failed. The following command is what produced the failure:"
+ echo "su $USERNAME -s /bin/sh -c \"/usr/bin/${PROG} --daemon --pidfile=${PIDFILE} --datadir=${DATADIR} --port=${PORT}\""
+ fi
+ else
+ status
+ fi
+}
+
+stop()
+{
+ if [ $STATUS == "stopped" ]; then
+ echo "$PROG doesn't seem to be running. Please try running"
+ echo "$0 start"
+ elif [ $STATUS == "broken" ]; then
+ echo "Cannot stop. Please correct issue and try again."
+ else
+ if [ "$EUID" -ne 0 ];then
+ echo "Please run as root"
+ exit 1
+ fi
+ # sickchill can take some time to properly shut down.
+ # It takes more than 10 seconds on my system top properly close.
+ # If it doesn't close by the timeout, force close it.
+ TIMEOUT=15
+ echo -n $"Giving $PROG $TIMEOUT seconds to shut down: "
+ curl -s http://localhost:"$PORT"/home/shutdown/?pid="$(cat "$PIDFILE")" | grep -q "shutting down"
+ for (( COUNT=0; COUNT <= TIMEOUT; COUNT++ )); do
+ if pgrep -f "$FULLPROG.*$PORT" > /dev/null; then
+ SHUTDOWN=success
+ break
+ fi
+ sleep 1
+ done
+ if [ "$SHUTDOWN" == "success" ]; then
+ echo "Shutdown successful."
+ else
+ echo "Normal Shutdown Failed - Attempting to kill the process."
+ sleep 7
+ pkill -9 -F "$PIDFILE"
+ fi
+ fi
+}
+
+case "$1" in
+ start)
+ check
+ start
+ ;;
+ stop)
+ check
+ stop
+ ;;
+ restart)
+ check
+ stop
+ sleep 1
+ check
+ start
+ ;;
+ status)
+ check
+ status
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|status}"
+ exit 1
+esac
diff --git a/multimedia/sickchill/sickchill.SlackBuild b/multimedia/sickchill/sickchill.SlackBuild
new file mode 100644
index 0000000000..13d212ef23
--- /dev/null
+++ b/multimedia/sickchill/sickchill.SlackBuild
@@ -0,0 +1,138 @@
+#!/bin/bash
+
+# Slackware build script for sickchill
+
+# Copyright 2023-2024 Jeremy Hansen jebrhansen+SBo@gmail.com
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=sickchill
+VERSION=${VERSION:-2024.3.1}
+BUILD=${BUILD:-3}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+SICKUSER=${SICKUSER:-sickchill}
+SICKGROUP=${SICKGROUP:-sickchill}
+
+# The user and group accounts need to be created manually.
+# For slackbuilds.org, assigned sickchill uid/gid are 377/377
+# See http://slackbuilds.org/uid_gid.txt
+if ! grep -q ^$SICKGROUP: /etc/group > /dev/null; then
+ # Handle older versions of sickrage
+ if grep -q ^sickrage: /etc/group; then
+ echo " +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ echo " You seem to have sickrage previously installed..."
+ echo " If you want to switch to sickchill, change the group using:"
+ echo " # groupmod -n sickchill sickrage"
+ echo " Otherwise..."
+ echo " +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ fi
+ echo " You must have a \"$SICKGROUP\" group to run this script."
+ echo " # groupadd -g 377 $SICKGROUP"
+ exit 1
+elif ! grep -q ^$SICKUSER: /etc/passwd ; then
+ # Handle older versions of sickrage
+ if grep -q ^sickrage: /etc/passwd; then
+ echo " +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ echo " You seem to have sickrage previously installed..."
+ echo " If you want to switch to sickchill, change the user using:"
+ echo " # groupmod -n sickchill sickrage"
+ echo " Otherwise..."
+ echo " +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ fi
+ echo " You must have a \"$SICKUSER\" user to run this script."
+ echo " # useradd -u 377 -g $SICKGROUP -d /var/lib/sickchill -s /bin/false $SICKUSER"
+ echo " If you previously had sickrage installed, change the user using"
+ echo " # usermod -l sickchill -g sickchill -d /var/lib/sickchill sickrage"
+ exit 1
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# Correct python module names and remove version requirements
+sed -i 's|kodipydent-alt.*|kodipydent = "\*"|' pyproject.toml
+sed -i 's|new-rtorrent-python.*|rtorrent-python = "\*"|' pyproject.toml
+sed -i 's|python-twitter.*|twitter = "\*"|' pyproject.toml
+
+# Remove ipaddress module requirement as it's been included in python since 3.3
+sed -i '/ipaddress.*/d' pyproject.toml
+
+# Remove win-inet-pton requirement as it is for Windows
+sed -i '/win-inet-pton.*/d' pyproject.toml
+
+# Remove unnecessary validators version requirement
+sed -i 's|validators.*|validators = "\*"|' pyproject.toml
+
+python3 -m build --wheel --no-isolation
+python3 -m installer --destdir=$PKG dist/*.whl
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ COPYING.txt LICENSE.md README.md SECURITY.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/etc/rc.d/
+install -m 0644 $CWD/rc.sickchill $PKG/etc/rc.d/rc.sickchill.new
+install -m 0644 $CWD/sickchill.conf $PKG/etc/sickchill.conf.new
+install -dm 0755 --owner=$SICKUSER $PKG/var/lib/sickchill/
+install -m 0644 --owner=$SICKUSER $CWD/config.ini $PKG/var/lib/sickchill/config.ini.new
+install -dm 0755 --owner=$SICKUSER $PKG/var/log/sickchill/
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/sickchill/sickchill.conf b/multimedia/sickchill/sickchill.conf
new file mode 100644
index 0000000000..e63d927d91
--- /dev/null
+++ b/multimedia/sickchill/sickchill.conf
@@ -0,0 +1,6 @@
+USERNAME=sickchill
+HOMEDIR=/usr/share/sickchill
+DATADIR=/var/lib/sickchill
+PIDFILE=${DATADIR}/sickchill.pid
+PORT=8081
+LOGDIR=/var/log/sickchill \ No newline at end of file
diff --git a/multimedia/sickchill/sickchill.info b/multimedia/sickchill/sickchill.info
new file mode 100644
index 0000000000..66d5282dee
--- /dev/null
+++ b/multimedia/sickchill/sickchill.info
@@ -0,0 +1,10 @@
+PRGNAM="sickchill"
+VERSION="2024.3.1"
+HOMEPAGE="https://sickchill.github.io/"
+DOWNLOAD="https://github.com/SickChill/sickchill/archive/refs/tags/2024.3.1/sickchill-2024.3.1.tar.gz"
+MD5SUM="ed4ac0ad41142a5eef0443cb008d92a7"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="python3-PyGithub python3-ifaddr python3-cacheyou python3-tornado Unidecode python-gntp python3-kodipydent python3-cinemagoer python3-validators python-jsonrpclib python3-markdown2 subliminal twitter requests-oauthlib configobj imagesize python3-tvdbsimple python3-fanart python3-tmdbsimple python3-slugify send2trash pyOpenSSL pymediainfo python3-putio.py python3-pynma python3-deluge-client python3-qbittorrent-api python3-new-rtorrent python3-timeago python3-profilehooks"
+MAINTAINER="Jeremy Hansen"
+EMAIL="jebrhansen+SBo@gmail.com"
diff --git a/multimedia/sickchill/slack-desc b/multimedia/sickchill/slack-desc
new file mode 100644
index 0000000000..af844946bf
--- /dev/null
+++ b/multimedia/sickchill/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+sickchill: sickchill (Less rage, more chill.)
+sickchill:
+sickchill: Automatic Video Library Manager for TV Shows. It watches for new
+sickchill: episodes of your favorite shows, and when they are posted it does
+sickchill: its magic.
+sickchill:
+sickchill: HOMEPAGE: https://sickchill.github.io/
+sickchill:
+sickchill:
+sickchill:
+sickchill:
diff --git a/multimedia/simpleburn/README b/multimedia/simpleburn/README
deleted file mode 100644
index 1710f8df3c..0000000000
--- a/multimedia/simpleburn/README
+++ /dev/null
@@ -1,16 +0,0 @@
-SimpleBurn: a CD / DVD burning and extraction tool
-
-SimpleBurn is a minimalistic application for burning and extracting CDs
-and DVDs. It basically is a Cdrtools frontend and is designed in two
-parts: the GUI (GTK) and a BASH script that handles the requested
-actions.
-
-Features are:
- - CD/DVD ISO image extraction and burning
- - audio CD extraction and burning
- - data directory burning on CD/DVD
- - rewritable CD/DVD blanking
- - video DVD ripping
- - languages: cs, de, en, es, fr, hu, it, pl, sv, ru
-
-http://simpleburn.tuxfamily.org
diff --git a/multimedia/simpleburn/simpleburn.SlackBuild b/multimedia/simpleburn/simpleburn.SlackBuild
deleted file mode 100644
index 74c97a38f2..0000000000
--- a/multimedia/simpleburn/simpleburn.SlackBuild
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/bin/sh
-#
-# Slackware build script for simpleburn
-#
-# Copyright 2017 Marek Srejma (sam_web@yahoo.de)
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
-
-# Updated 2017-08-08 by Marek Srejma
-
-PRGNAM=simpleburn
-VERSION=${VERSION:-1.8.3.1}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-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 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-cmake -DCMAKE_INSTALL_PREFIX=/usr [-DGTK3=ON] .
-make
-make install DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/simpleburn/simpleburn.info b/multimedia/simpleburn/simpleburn.info
deleted file mode 100644
index 63bd3d5b3f..0000000000
--- a/multimedia/simpleburn/simpleburn.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="simpleburn"
-VERSION="1.8.3.1"
-HOMEPAGE="http://simpleburn.tuxfamily.org/"
-DOWNLOAD="http://simpleburn.tuxfamily.org/IMG/gz/simpleburn-1.8.3.1.tar.gz"
-MD5SUM="b13d5d5a7f78c53d626cf04e2be815f4"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Marek Srejma"
-EMAIL="sam_web@yahoo.de"
diff --git a/multimedia/sinthgunt/sinthgunt.SlackBuild b/multimedia/sinthgunt/sinthgunt.SlackBuild
index 8d6d63fe85..a55e0778a5 100644
--- a/multimedia/sinthgunt/sinthgunt.SlackBuild
+++ b/multimedia/sinthgunt/sinthgunt.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for sinthgunt
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=sinthgunt
VERSION=${VERSION:-2.1.0}
BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -87,4 +97,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/sinthgunt/sinthgunt.info b/multimedia/sinthgunt/sinthgunt.info
index 7ed2cc12ce..e64c34d9d6 100644
--- a/multimedia/sinthgunt/sinthgunt.info
+++ b/multimedia/sinthgunt/sinthgunt.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://storage.googleapis.com/google-code-archive-downloads/v2/code.g
MD5SUM="a7f18b5d490dad16d99eb24ee8ba22d7"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg"
+REQUIRES=""
MAINTAINER="Chernov"
EMAIL="manbornofwoman@gmail.com"
diff --git a/multimedia/smpeg/README b/multimedia/smpeg/README
index 01f87e1454..dd1154d662 100644
--- a/multimedia/smpeg/README
+++ b/multimedia/smpeg/README
@@ -1,4 +1,5 @@
-SMPEG is a free MPEG1 video player library with sound support. Video playback
-is based on the ubiquitous Berkeley MPEG player, mpeg_play v2.2. Audio is
-played through a slightly modified mpegsound library, part of Splay v0.8.2.
-SMPEG supports MPEG audio (MP3), MPEG-1 video, and MPEG system streams.
+SMPEG is a free MPEG1 video player library with sound support. Video
+playback is based on the ubiquitous Berkeley MPEG player, mpeg_play
+v2.2. Audio is played through a slightly modified mpegsound library,
+part of Splay v0.8.2. SMPEG supports MPEG audio (MP3), MPEG-1 video,
+and MPEG system streams.
diff --git a/multimedia/smpeg/smpeg.SlackBuild b/multimedia/smpeg/smpeg.SlackBuild
index 19a3a4f6c6..e4c48fd6b6 100644
--- a/multimedia/smpeg/smpeg.SlackBuild
+++ b/multimedia/smpeg/smpeg.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for smpeg
-# Copyright 2007-2010 Heinz Wiesinger, Amsterdam, The Netherlands
+# Copyright 2007-2021 Heinz Wiesinger, Amsterdam, The Netherlands
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -11,21 +11,24 @@
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=smpeg
VERSION=${VERSION:-r389}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -69,9 +79,11 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+sed -i "s|^gtv_LDADD.*|gtv_LDADD = @GTK_LIBS@ libsmpeg.la -lX11|" Makefile.am
+
./autogen.sh
-CFLAGS="$SLKCFLAGS" \
+CFLAGS="$SLKCFLAGS -Wno-error=narrowing" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
@@ -85,6 +97,10 @@ CXXFLAGS="$SLKCFLAGS" \
make
make install-strip DESTDIR=$PKG
+# Don't ship .la/.a files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.a
+
( cd $PKG/usr/man
find . -type f -exec gzip -9 {} \;
for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
@@ -99,4 +115,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/smpeg/smpeg.info b/multimedia/smpeg/smpeg.info
index 4065e2509f..7fd3ac6d2a 100644
--- a/multimedia/smpeg/smpeg.info
+++ b/multimedia/smpeg/smpeg.info
@@ -1,10 +1,10 @@
PRGNAM="smpeg"
VERSION="r389"
HOMEPAGE="http://icculus.org/smpeg/"
-DOWNLOAD="http://www.liwjatan.at/files/src/smpeg-r389.tar.xz"
+DOWNLOAD="https://sources.liwjatan.org/smpeg-r389.tar.xz"
MD5SUM="a6d31e1dcd7a92ea33716d8b9efb67e1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Heinz Wiesinger"
-EMAIL="pprkut@liwjatan.at"
+EMAIL="pprkut@slackbuilds.org"
diff --git a/multimedia/smplayer/README b/multimedia/smplayer/README
index 4ac145df3a..74de41b10f 100644
--- a/multimedia/smplayer/README
+++ b/multimedia/smplayer/README
@@ -14,8 +14,3 @@ settings of all files you play. So you start to watch a movie but you
have to leave... don't worry, when you open that movie again it will
be resumed at the same point you left it, and with the same settings:
audio track, subtitles, volume.
-
-If you prefer to build SMPlayer against Qt5 rather than Qt4, install
-qt5 (available from SlackBuilds.org) and run the script like that:
-
- USE_QT5=yes ./smplayer.SlackBuild
diff --git a/multimedia/smplayer/smplayer.SlackBuild b/multimedia/smplayer/smplayer.SlackBuild
index 101e0f1f6d..360ff5590d 100644
--- a/multimedia/smplayer/smplayer.SlackBuild
+++ b/multimedia/smplayer/smplayer.SlackBuild
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for SMPlayer
+# Copyright 2023 Andrzej Telszewski, Koszalin
# Copyright 2011-2015 Fridrich von Stauffenberg <cancellor2@gmail.com>
-# Copyright 2019 Andrzej Telszewski, Szczecin
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,13 +23,16 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=smplayer
-VERSION=${VERSION:-19.10.2}
+VERSION=${VERSION:-23.12.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
-THEMES=${THEMES:-18.6.0}
-SKINS=${SKINS:-15.2.0}
+THEMES=${THEMES:-20.11.0}
+SKINS=${SKINS:-20.11.0}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -39,7 +42,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -58,35 +65,28 @@ else
LIBDIRSUFFIX=""
fi
-set -e
+set -eu
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
+
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION
+
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+chmod -R a-st,u+rwX,go-w+rX .
+
+# Disable -Werror (helps building with newer GCC).
+
+sed -i "s|-W\ -Wall\ -Werror|-W -Wall|" webserver/Makefile
# Fix man page path.
-sed -i "s/share\/man/man/g" Makefile
-if [ ${USE_QT5:-no} = yes ]; then
- QMAKE=qmake-qt5
- LRELEASE=lrelease-qt5
-else
- QMAKE=qmake
- LRELEASE=lrelease
-fi
+sed -i "s/share\/man/man/g" Makefile
make \
- QMAKE=$QMAKE \
- LRELEASE=$LRELEASE \
PREFIX=/usr \
DOC_PATH="\\\"/usr/doc/$PRGNAM-$VERSION/\\\"" \
QMAKE_OPTS="QMAKE_CXXFLAGS=\"$SLKCFLAGS\""
@@ -100,54 +100,42 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a *.txt Changelog $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a *.txt $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
cd $TMP
rm -rf $PRGNAM-themes-$THEMES
tar xvf $CWD/$PRGNAM-themes-$THEMES.tar.bz2
+
cd $PRGNAM-themes-$THEMES
+
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-if [ ${USE_QT5:-no} = yes ]; then
- sed -i "s/rcc -binary/rcc-qt5 -binary/g" themes/Makefile
-fi
+chmod -R a-st,u+rwX,go-w+rX .
make
make install PREFIX=/usr DESTDIR=$PKG
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/themes
-cp -a *.txt Changelog $PKG/usr/doc/$PRGNAM-$VERSION/themes
+cp -a *.txt $PKG/usr/doc/$PRGNAM-$VERSION/themes
cd $TMP
rm -rf $PRGNAM-skins-$SKINS
tar xvf $CWD/$PRGNAM-skins-$SKINS.tar.bz2
+
cd $PRGNAM-skins-$SKINS
+
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-if [ ${USE_QT5:-no} = yes ]; then
- sed -i "s/rcc -binary/rcc-qt5 -binary/g" themes/Makefile
-fi
+chmod -R a-st,u+rwX,go-w+rX .
make
make install PREFIX=/usr DESTDIR=$PKG
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/skins
-cp -a *.txt Changelog $PKG/usr/doc/$PRGNAM-$VERSION/skins
+cp -a *.txt $PKG/usr/doc/$PRGNAM-$VERSION/skins
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/smplayer/smplayer.info b/multimedia/smplayer/smplayer.info
index 5392930d88..33be7ac117 100644
--- a/multimedia/smplayer/smplayer.info
+++ b/multimedia/smplayer/smplayer.info
@@ -1,14 +1,14 @@
PRGNAM="smplayer"
-VERSION="19.10.2"
+VERSION="23.12.0"
HOMEPAGE="https://www.smplayer.info/"
-DOWNLOAD="https://downloads.sourceforge.net/smplayer/smplayer-19.10.2.tar.bz2 \
- https://downloads.sourceforge.net/smplayer/smplayer-themes-18.6.0.tar.bz2 \
- https://downloads.sourceforge.net/smplayer/smplayer-skins-15.2.0.tar.bz2"
-MD5SUM="9440bce02118e4599302a050e6eea41a \
- 8fe83cd59189291ca0d3beea1991e50b \
- 57e165cf9a95808fafd179e5322b7f15"
+DOWNLOAD="https://github.com/smplayer-dev/smplayer/releases/download/v23.12.0/smplayer-23.12.0.tar.bz2 \
+ https://downloads.sourceforge.net/smplayer/smplayer-themes-20.11.0.tar.bz2 \
+ https://downloads.sourceforge.net/smplayer/smplayer-skins-20.11.0.tar.bz2"
+MD5SUM="17faf9208a75fd7b60dbf9e21d1e9f59 \
+ 3d7b307487da5d97e0bc197f7f3f37f6 \
+ 0b2e6aabf497c1248c60c382827d9ba0"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Andrzej Telszewski"
-EMAIL="atelszewski@gmail.com"
+EMAIL="andrzej@telszewski.com"
diff --git a/multimedia/smtube/README b/multimedia/smtube/README
index 5b45f3a55f..055314735a 100644
--- a/multimedia/smtube/README
+++ b/multimedia/smtube/README
@@ -1,9 +1,3 @@
SMTube is an application that allows to browse, search and play YouTube
videos. Videos are played back with a media player (by default SMPlayer)
-instead of a flash player, this allows better performance, particularly
-with HD content.
-
-If you prefer to build SMTube against Qt5 rather than Qt4, install qt5 and
-qt5-webkit (both available from SlackBuilds.org) and run the script like that:
-
- USE_QT5=yes ./smplayer.SlackBuild
+instead of an HTML player.
diff --git a/multimedia/smtube/slack-desc b/multimedia/smtube/slack-desc
index 096443c539..6b2c42874d 100644
--- a/multimedia/smtube/slack-desc
+++ b/multimedia/smtube/slack-desc
@@ -10,10 +10,10 @@ smtube: smtube (small YouTube videos browser)
smtube:
smtube: SMTube is an application that allows to browse, search and play
smtube: YouTube videos. Videos are played back with a media player instead
-smtube: of a flash player, this allows better performance, particularly
-smtube: with HD content.
+smtube: of an HTML player.
smtube:
smtube: Homepage: https://www.smtube.org/
smtube:
smtube:
smtube:
+smtube:
diff --git a/multimedia/smtube/smtube.SlackBuild b/multimedia/smtube/smtube.SlackBuild
index 456e59ecd4..7822d62c84 100644
--- a/multimedia/smtube/smtube.SlackBuild
+++ b/multimedia/smtube/smtube.SlackBuild
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for SMTube
+# Copyright 2022 Andrzej Telszewski, Koszalin
# Copyright 2012-2015 Fridrich von Stauffenberg <cancellor2@gmail.com>
-# Copyright 2019 Andrzej Telszewski, Szczecin
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,10 +23,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=smtube
-VERSION=${VERSION:-19.6.0}
+VERSION=${VERSION:-21.10.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -55,32 +62,22 @@ else
LIBDIRSUFFIX=""
fi
-set -e
+set -eu
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
+
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION
+
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-if [ ${USE_QT5:-no} = yes ]; then
- QMAKE=qmake-qt5
- LRELEASE=lrelease-qt5
-else
- QMAKE=qmake
- LRELEASE=lrelease
-fi
+chmod -R a-st,u+rwX,go-w+rX .
make \
- QMAKE=$QMAKE \
- LRELEASE=$LRELEASE \
+ QMAKE=qmake-qt5 \
+ LRELEASE=lrelease-qt5 \
PREFIX=/usr \
DOC_PATH="\\\"/usr/doc/$PRGNAM-$VERSION/\\\"" \
QMAKE_OPTS="QMAKE_CXXFLAGS=\"$SLKCFLAGS\""
@@ -100,4 +97,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/smtube/smtube.info b/multimedia/smtube/smtube.info
index de3a89c1ac..4f9b7b97fe 100644
--- a/multimedia/smtube/smtube.info
+++ b/multimedia/smtube/smtube.info
@@ -1,10 +1,10 @@
PRGNAM="smtube"
-VERSION="19.6.0"
+VERSION="21.10.0"
HOMEPAGE="https://www.smtube.org/"
-DOWNLOAD="https://download.sourceforge.net/project/smtube/SMTube/19.6.0/smtube-19.6.0.tar.bz2"
-MD5SUM="355dec97781b6973af3e244099b7e541"
+DOWNLOAD="https://download.sourceforge.net/project/smtube/SMTube/21.10.0/smtube-21.10.0.tar.bz2"
+MD5SUM="93383ae9220614d7e9fc5fbbbb8f060b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Andrzej Telszewski"
-EMAIL="atelszewski@gmail.com"
+EMAIL="andrzej@telszewski.com"
diff --git a/multimedia/spek/README b/multimedia/spek/README
index f47273527a..b01c784b6b 100644
--- a/multimedia/spek/README
+++ b/multimedia/spek/README
@@ -1,6 +1,6 @@
spek (Acoustic Spectrum Analyser)
-spek is an acoustic spectrum analyser written in C and C++.
-It uses FFmpeg spek: libraries for audio decoding and wxWidgets for the GUI.
+spek is an acoustic spectrum analyser written in C and C++. It uses
+FFmpeg libraries for audio decoding and wxWidgets for the GUI.
Spek is available on *BSD, GNU/Linux, Windows and Mac OS X.
diff --git a/multimedia/spek/doinst.sh b/multimedia/spek/doinst.sh
index 5fb28930db..65c7e2eeb9 100644
--- a/multimedia/spek/doinst.sh
+++ b/multimedia/spek/doinst.sh
@@ -1,3 +1,9 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/spek/spek.SlackBuild b/multimedia/spek/spek.SlackBuild
index 95bf344500..fdaf7a19ce 100644
--- a/multimedia/spek/spek.SlackBuild
+++ b/multimedia/spek/spek.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for Spek
# Written by Eric Fernandes Ferreira <candelabrus@gmail.com>
@@ -24,11 +24,17 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230627 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - add gtk-update-icon-cache to doinst.sh.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=spek
VERSION=${VERSION:-0.8.3_07c13da27d}
GITVER=${GITVER:-07c13da27d9c2acfc713c63c21d123cae4b5ce65}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -38,7 +44,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -68,9 +78,9 @@ cd $PRGNAM-$GITVER
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} + -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
./autogen.sh
CFLAGS="$SLKCFLAGS" \
@@ -104,4 +114,4 @@ cat $CWD/doinst.sh > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/spek/spek.info b/multimedia/spek/spek.info
index 1a8e8fe888..6b4fe90afb 100644
--- a/multimedia/spek/spek.info
+++ b/multimedia/spek/spek.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/alexkay/spek/archive/07c13da27d9c2acfc713c63c21d123
MD5SUM="01d2fedeb747602d9da9bba2480bb220"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="wxGTK3 ffmpeg"
+REQUIRES="wxGTK3"
MAINTAINER="Eric Fernandes Ferreira"
EMAIL="candelabrus@gmail.com"
diff --git a/multimedia/spot/README b/multimedia/spot/README
new file mode 100644
index 0000000000..c488c93de7
--- /dev/null
+++ b/multimedia/spot/README
@@ -0,0 +1,3 @@
+spot is a Gtk/Rust native Spotify client for the GNOME
+desktop. Only works with premium accounts!
+Based on librespot.
diff --git a/multimedia/spot/doinst.sh b/multimedia/spot/doinst.sh
new file mode 100644
index 0000000000..401d987795
--- /dev/null
+++ b/multimedia/spot/doinst.sh
@@ -0,0 +1,15 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+
+if [ -e usr/share/glib-2.0/schemas ]; then
+ if [ -x /usr/bin/glib-compile-schemas ]; then
+ /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/spot/slack-desc b/multimedia/spot/slack-desc
new file mode 100644
index 0000000000..559ec28671
--- /dev/null
+++ b/multimedia/spot/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+spot: spot (spotify player)
+spot:
+spot: Gtk/Rust native Spotify client for the GNOME desktop.
+spot: Only works with premium accounts!
+spot:
+spot:
+spot:
+spot:
+spot:
+spot:
+spot: https://github.com/xou816/spot
diff --git a/multimedia/spot/spot.SlackBuild b/multimedia/spot/spot.SlackBuild
new file mode 100644
index 0000000000..3149a1c5d8
--- /dev/null
+++ b/multimedia/spot/spot.SlackBuild
@@ -0,0 +1,159 @@
+#!/bin/bash
+
+# Slackware build script for spot
+
+# Copyright 2022 Julian Grinblat <julian@dotcore.co.il>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=spot
+VERSION=${VERSION:-0.3.3}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+
+# build offline
+# configuration tells cargo to use the configured directory
+# for dependencies instead of downloading from crates.io
+mkdir .cargo
+cat << EOF >> .cargo/config
+[source.crates-io]
+registry = 'https://github.com/rust-lang/crates.io-index'
+replace-with = 'vendored-sources'
+
+[source.vendored-sources]
+directory = '$(pwd)/vendor'
+EOF
+
+# deps and versions come from Cargo.lock
+mkdir vendor
+(
+ cd vendor
+
+ grep -h -A 3 "\[\[package\]\]" $(find ../ -maxdepth 1 -mindepth 1 -name Cargo.lock | tr '\n' ' ') | \
+ sed 's/[[:space:]]*=[[:space:]]*/=/g;s/^--//;s/^\[\[/--\n[[/' | \
+ awk 'BEGIN { RS = "--\n" ; FS="\n" } { print $2, $3, $4 }' | sed 's/"//g;s/name=//;s/ version=/=/' | \
+ grep crates\.io-index | sed 's/ source=.*$//' | sort -u | while read -r dep ; do
+
+ ver="$(printf "%s\n" "$dep" | cut -d= -f2)"
+ dep="$(printf "%s\n" "$dep" | cut -d= -f1)"
+
+ tar xvf $CWD/$dep-$ver.crate
+
+ touch $dep-$ver/.cargo-ok
+
+ # generate checksum
+ {
+ printf "{\n"
+ printf ' "files": {\n'
+
+ (
+ cd $dep-$ver
+ find . -type f -print0 | xargs -0 sha256sum | sed -n '/\.cargo-checksum\.json/!p' | sed 's/\.\///;s/^\([^ ]*\)[[:space:]][[:space:]]*\(.*\)$/"\2":"\1",/'
+ ) | sed '$ s/,$//'
+
+ printf " },\n"
+ printf ' "package": "'
+
+ sha256sum "$CWD/$dep-$ver.crate" | cut -f1 -d' ' | sed 's/$/"/'
+
+ printf "}\n"
+ } > $dep-$ver/.cargo-checksum.json
+ done
+)
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir build
+cd build
+ CARGO_HOME=.cargo \
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --prefix=/usr \
+ --strip \
+ -Doffline=false
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ README.md \
+ ARTISTS \
+ AUTHORS \
+ LICENSE \
+ TRANSLATORS \
+ doc/doc.pdf \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/spot/spot.info b/multimedia/spot/spot.info
new file mode 100644
index 0000000000..8cc72d3ca2
--- /dev/null
+++ b/multimedia/spot/spot.info
@@ -0,0 +1,702 @@
+PRGNAM="spot"
+VERSION="0.3.3"
+HOMEPAGE="https://github.com/xou816/spot"
+DOWNLOAD="https://github.com/xou816/spot/archive/refs/tags/0.3.3/spot-0.3.3.tar.gz \
+ https://static.crates.io/crates/kernel32-sys/kernel32-sys-0.2.2.crate \
+ https://static.crates.io/crates/aes/aes-0.6.0.crate \
+ https://static.crates.io/crates/aes-ctr/aes-ctr-0.6.0.crate \
+ https://static.crates.io/crates/aes-soft/aes-soft-0.6.4.crate \
+ https://static.crates.io/crates/aesni/aesni-0.10.0.crate \
+ https://static.crates.io/crates/aho-corasick/aho-corasick-0.7.18.crate \
+ https://static.crates.io/crates/alsa/alsa-0.5.0.crate \
+ https://static.crates.io/crates/alsa/alsa-0.6.0.crate \
+ https://static.crates.io/crates/alsa-sys/alsa-sys-0.3.1.crate \
+ https://static.crates.io/crates/anyhow/anyhow-1.0.53.crate \
+ https://static.crates.io/crates/async-broadcast/async-broadcast-0.3.4.crate \
+ https://static.crates.io/crates/async-channel/async-channel-1.6.1.crate \
+ https://static.crates.io/crates/async-executor/async-executor-1.4.1.crate \
+ https://static.crates.io/crates/async-global-executor/async-global-executor-2.0.2.crate \
+ https://static.crates.io/crates/async-io/async-io-1.6.0.crate \
+ https://static.crates.io/crates/async-lock/async-lock-2.4.0.crate \
+ https://static.crates.io/crates/async-mutex/async-mutex-1.4.0.crate \
+ https://static.crates.io/crates/async-recursion/async-recursion-0.3.2.crate \
+ https://static.crates.io/crates/async-std/async-std-1.10.0.crate \
+ https://static.crates.io/crates/async-task/async-task-4.1.0.crate \
+ https://static.crates.io/crates/async-trait/async-trait-0.1.52.crate \
+ https://static.crates.io/crates/atomic-waker/atomic-waker-1.0.0.crate \
+ https://static.crates.io/crates/atty/atty-0.2.14.crate \
+ https://static.crates.io/crates/autocfg/autocfg-1.1.0.crate \
+ https://static.crates.io/crates/base64/base64-0.13.0.crate \
+ https://static.crates.io/crates/bindgen/bindgen-0.56.0.crate \
+ https://static.crates.io/crates/bitflags/bitflags-1.3.2.crate \
+ https://static.crates.io/crates/block/block-0.1.6.crate \
+ https://static.crates.io/crates/block-buffer/block-buffer-0.9.0.crate \
+ https://static.crates.io/crates/block-modes/block-modes-0.7.0.crate \
+ https://static.crates.io/crates/block-padding/block-padding-0.2.1.crate \
+ https://static.crates.io/crates/blocking/blocking-1.1.0.crate \
+ https://static.crates.io/crates/bumpalo/bumpalo-3.9.1.crate \
+ https://static.crates.io/crates/byteorder/byteorder-1.4.3.crate \
+ https://static.crates.io/crates/bytes/bytes-1.1.0.crate \
+ https://static.crates.io/crates/cache-padded/cache-padded-1.2.0.crate \
+ https://static.crates.io/crates/cairo-rs/cairo-rs-0.15.1.crate \
+ https://static.crates.io/crates/cairo-sys-rs/cairo-sys-rs-0.15.1.crate \
+ https://static.crates.io/crates/castaway/castaway-0.1.2.crate \
+ https://static.crates.io/crates/cc/cc-1.0.72.crate \
+ https://static.crates.io/crates/cesu8/cesu8-1.1.0.crate \
+ https://static.crates.io/crates/cexpr/cexpr-0.4.0.crate \
+ https://static.crates.io/crates/cfg-expr/cfg-expr-0.9.1.crate \
+ https://static.crates.io/crates/cfg-if/cfg-if-0.1.10.crate \
+ https://static.crates.io/crates/cfg-if/cfg-if-1.0.0.crate \
+ https://static.crates.io/crates/chrono/chrono-0.4.19.crate \
+ https://static.crates.io/crates/cipher/cipher-0.2.5.crate \
+ https://static.crates.io/crates/clang-sys/clang-sys-1.3.1.crate \
+ https://static.crates.io/crates/combine/combine-4.6.3.crate \
+ https://static.crates.io/crates/concurrent-queue/concurrent-queue-1.2.2.crate \
+ https://static.crates.io/crates/core-foundation-sys/core-foundation-sys-0.8.3.crate \
+ https://static.crates.io/crates/coreaudio-rs/coreaudio-rs-0.10.0.crate \
+ https://static.crates.io/crates/coreaudio-sys/coreaudio-sys-0.2.9.crate \
+ https://static.crates.io/crates/cpal/cpal-0.13.5.crate \
+ https://static.crates.io/crates/cpufeatures/cpufeatures-0.2.1.crate \
+ https://static.crates.io/crates/crossbeam-utils/crossbeam-utils-0.8.7.crate \
+ https://static.crates.io/crates/crypto-mac/crypto-mac-0.10.1.crate \
+ https://static.crates.io/crates/crypto-mac/crypto-mac-0.11.1.crate \
+ https://static.crates.io/crates/ctor/ctor-0.1.21.crate \
+ https://static.crates.io/crates/ctr/ctr-0.6.0.crate \
+ https://static.crates.io/crates/curl/curl-0.4.42.crate \
+ https://static.crates.io/crates/curl-sys/curl-sys-0.4.52+curl-7.81.0.crate \
+ https://static.crates.io/crates/darling/darling-0.13.1.crate \
+ https://static.crates.io/crates/darling_core/darling_core-0.13.1.crate \
+ https://static.crates.io/crates/darling_macro/darling_macro-0.13.1.crate \
+ https://static.crates.io/crates/derivative/derivative-2.2.0.crate \
+ https://static.crates.io/crates/digest/digest-0.9.0.crate \
+ https://static.crates.io/crates/easy-parallel/easy-parallel-3.2.0.crate \
+ https://static.crates.io/crates/encoding_rs/encoding_rs-0.8.30.crate \
+ https://static.crates.io/crates/enumflags2/enumflags2-0.6.4.crate \
+ https://static.crates.io/crates/enumflags2/enumflags2-0.7.3.crate \
+ https://static.crates.io/crates/enumflags2_derive/enumflags2_derive-0.6.4.crate \
+ https://static.crates.io/crates/enumflags2_derive/enumflags2_derive-0.7.3.crate \
+ https://static.crates.io/crates/env_logger/env_logger-0.8.4.crate \
+ https://static.crates.io/crates/env_logger/env_logger-0.9.0.crate \
+ https://static.crates.io/crates/event-listener/event-listener-2.5.2.crate \
+ https://static.crates.io/crates/fastrand/fastrand-1.7.0.crate \
+ https://static.crates.io/crates/field-offset/field-offset-0.3.4.crate \
+ https://static.crates.io/crates/fnv/fnv-1.0.7.crate \
+ https://static.crates.io/crates/form_urlencoded/form_urlencoded-1.0.1.crate \
+ https://static.crates.io/crates/futures/futures-0.3.21.crate \
+ https://static.crates.io/crates/futures-channel/futures-channel-0.3.21.crate \
+ https://static.crates.io/crates/futures-core/futures-core-0.3.21.crate \
+ https://static.crates.io/crates/futures-executor/futures-executor-0.3.21.crate \
+ https://static.crates.io/crates/futures-io/futures-io-0.3.21.crate \
+ https://static.crates.io/crates/futures-lite/futures-lite-1.12.0.crate \
+ https://static.crates.io/crates/futures-macro/futures-macro-0.3.21.crate \
+ https://static.crates.io/crates/futures-sink/futures-sink-0.3.21.crate \
+ https://static.crates.io/crates/futures-task/futures-task-0.3.21.crate \
+ https://static.crates.io/crates/futures-util/futures-util-0.3.21.crate \
+ https://static.crates.io/crates/gdk-pixbuf/gdk-pixbuf-0.15.6.crate \
+ https://static.crates.io/crates/gdk-pixbuf-sys/gdk-pixbuf-sys-0.15.1.crate \
+ https://static.crates.io/crates/gdk4/gdk4-0.4.6.crate \
+ https://static.crates.io/crates/gdk4-sys/gdk4-sys-0.4.2.crate \
+ https://static.crates.io/crates/generic-array/generic-array-0.14.5.crate \
+ https://static.crates.io/crates/getopts/getopts-0.2.21.crate \
+ https://static.crates.io/crates/getrandom/getrandom-0.2.4.crate \
+ https://static.crates.io/crates/gettext-rs/gettext-rs-0.7.0.crate \
+ https://static.crates.io/crates/gettext-sys/gettext-sys-0.21.2.crate \
+ https://static.crates.io/crates/gio/gio-0.15.7.crate \
+ https://static.crates.io/crates/gio-sys/gio-sys-0.15.5.crate \
+ https://static.crates.io/crates/glib/glib-0.15.9.crate \
+ https://static.crates.io/crates/glib-macros/glib-macros-0.15.3.crate \
+ https://static.crates.io/crates/glib-sys/glib-sys-0.15.5.crate \
+ https://static.crates.io/crates/glob/glob-0.3.0.crate \
+ https://static.crates.io/crates/gloo-timers/gloo-timers-0.2.3.crate \
+ https://static.crates.io/crates/gobject-sys/gobject-sys-0.15.5.crate \
+ https://static.crates.io/crates/graphene-rs/graphene-rs-0.15.1.crate \
+ https://static.crates.io/crates/graphene-sys/graphene-sys-0.15.1.crate \
+ https://static.crates.io/crates/gsk4/gsk4-0.4.6.crate \
+ https://static.crates.io/crates/gsk4-sys/gsk4-sys-0.4.2.crate \
+ https://static.crates.io/crates/gtk4/gtk4-0.4.6.crate \
+ https://static.crates.io/crates/gtk4-macros/gtk4-macros-0.4.3.crate \
+ https://static.crates.io/crates/gtk4-sys/gtk4-sys-0.4.5.crate \
+ https://static.crates.io/crates/hashbrown/hashbrown-0.11.2.crate \
+ https://static.crates.io/crates/headers/headers-0.3.6.crate \
+ https://static.crates.io/crates/headers-core/headers-core-0.2.0.crate \
+ https://static.crates.io/crates/heck/heck-0.4.0.crate \
+ https://static.crates.io/crates/hermit-abi/hermit-abi-0.1.19.crate \
+ https://static.crates.io/crates/hex/hex-0.4.3.crate \
+ https://static.crates.io/crates/hkdf/hkdf-0.10.0.crate \
+ https://static.crates.io/crates/hmac/hmac-0.10.1.crate \
+ https://static.crates.io/crates/hmac/hmac-0.11.0.crate \
+ https://static.crates.io/crates/hostname/hostname-0.3.1.crate \
+ https://static.crates.io/crates/http/http-0.2.6.crate \
+ https://static.crates.io/crates/http-body/http-body-0.4.4.crate \
+ https://static.crates.io/crates/httparse/httparse-1.5.1.crate \
+ https://static.crates.io/crates/httpdate/httpdate-1.0.2.crate \
+ https://static.crates.io/crates/humantime/humantime-2.1.0.crate \
+ https://static.crates.io/crates/hyper/hyper-0.14.16.crate \
+ https://static.crates.io/crates/hyper-proxy/hyper-proxy-0.9.1.crate \
+ https://static.crates.io/crates/ident_case/ident_case-1.0.1.crate \
+ https://static.crates.io/crates/idna/idna-0.2.3.crate \
+ https://static.crates.io/crates/if-addrs/if-addrs-0.6.7.crate \
+ https://static.crates.io/crates/if-addrs-sys/if-addrs-sys-0.3.2.crate \
+ https://static.crates.io/crates/indexmap/indexmap-1.8.0.crate \
+ https://static.crates.io/crates/instant/instant-0.1.12.crate \
+ https://static.crates.io/crates/isahc/isahc-1.7.0.crate \
+ https://static.crates.io/crates/itoa/itoa-0.4.8.crate \
+ https://static.crates.io/crates/itoa/itoa-1.0.1.crate \
+ https://static.crates.io/crates/jni/jni-0.19.0.crate \
+ https://static.crates.io/crates/jni-sys/jni-sys-0.3.0.crate \
+ https://static.crates.io/crates/jobserver/jobserver-0.1.24.crate \
+ https://static.crates.io/crates/js-sys/js-sys-0.3.56.crate \
+ https://static.crates.io/crates/kv-log-macro/kv-log-macro-1.0.7.crate \
+ https://static.crates.io/crates/lazy_static/lazy_static-1.4.0.crate \
+ https://static.crates.io/crates/lazycell/lazycell-1.3.0.crate \
+ https://static.crates.io/crates/lewton/lewton-0.10.2.crate \
+ https://static.crates.io/crates/libadwaita/libadwaita-0.1.0.crate \
+ https://static.crates.io/crates/libadwaita-sys/libadwaita-sys-0.1.0.crate \
+ https://static.crates.io/crates/libc/libc-0.2.117.crate \
+ https://static.crates.io/crates/libloading/libloading-0.7.3.crate \
+ https://static.crates.io/crates/libm/libm-0.2.2.crate \
+ https://static.crates.io/crates/libmdns/libmdns-0.6.2.crate \
+ https://static.crates.io/crates/libnghttp2-sys/libnghttp2-sys-0.1.7+1.45.0.crate \
+ https://static.crates.io/crates/libpulse-binding/libpulse-binding-2.26.0.crate \
+ https://static.crates.io/crates/libpulse-simple-binding/libpulse-simple-binding-2.25.0.crate \
+ https://static.crates.io/crates/libpulse-simple-sys/libpulse-simple-sys-1.19.2.crate \
+ https://static.crates.io/crates/libpulse-sys/libpulse-sys-1.19.3.crate \
+ https://static.crates.io/crates/librespot/librespot-0.3.1.crate \
+ https://static.crates.io/crates/librespot-audio/librespot-audio-0.3.1.crate \
+ https://static.crates.io/crates/librespot-connect/librespot-connect-0.3.1.crate \
+ https://static.crates.io/crates/librespot-core/librespot-core-0.3.1.crate \
+ https://static.crates.io/crates/librespot-discovery/librespot-discovery-0.3.1.crate \
+ https://static.crates.io/crates/librespot-metadata/librespot-metadata-0.3.1.crate \
+ https://static.crates.io/crates/librespot-playback/librespot-playback-0.3.1.crate \
+ https://static.crates.io/crates/librespot-protocol/librespot-protocol-0.3.1.crate \
+ https://static.crates.io/crates/libz-sys/libz-sys-1.1.3.crate \
+ https://static.crates.io/crates/locale_config/locale_config-0.3.0.crate \
+ https://static.crates.io/crates/lock_api/lock_api-0.4.6.crate \
+ https://static.crates.io/crates/log/log-0.4.14.crate \
+ https://static.crates.io/crates/mach/mach-0.3.2.crate \
+ https://static.crates.io/crates/malloc_buf/malloc_buf-0.0.6.crate \
+ https://static.crates.io/crates/match_cfg/match_cfg-0.1.0.crate \
+ https://static.crates.io/crates/matches/matches-0.1.9.crate \
+ https://static.crates.io/crates/memchr/memchr-2.4.1.crate \
+ https://static.crates.io/crates/memoffset/memoffset-0.6.5.crate \
+ https://static.crates.io/crates/mime/mime-0.3.16.crate \
+ https://static.crates.io/crates/mio/mio-0.8.0.crate \
+ https://static.crates.io/crates/miow/miow-0.3.7.crate \
+ https://static.crates.io/crates/multimap/multimap-0.8.3.crate \
+ https://static.crates.io/crates/nb-connect/nb-connect-1.2.0.crate \
+ https://static.crates.io/crates/ndk/ndk-0.6.0.crate \
+ https://static.crates.io/crates/ndk-glue/ndk-glue-0.6.0.crate \
+ https://static.crates.io/crates/ndk-macro/ndk-macro-0.3.0.crate \
+ https://static.crates.io/crates/ndk-sys/ndk-sys-0.3.0.crate \
+ https://static.crates.io/crates/nix/nix-0.17.0.crate \
+ https://static.crates.io/crates/nix/nix-0.20.0.crate \
+ https://static.crates.io/crates/nix/nix-0.23.1.crate \
+ https://static.crates.io/crates/nom/nom-5.1.2.crate \
+ https://static.crates.io/crates/ntapi/ntapi-0.3.6.crate \
+ https://static.crates.io/crates/num/num-0.3.1.crate \
+ https://static.crates.io/crates/num-bigint/num-bigint-0.3.3.crate \
+ https://static.crates.io/crates/num-bigint/num-bigint-0.4.3.crate \
+ https://static.crates.io/crates/num-complex/num-complex-0.3.1.crate \
+ https://static.crates.io/crates/num-derive/num-derive-0.3.3.crate \
+ https://static.crates.io/crates/num-integer/num-integer-0.1.44.crate \
+ https://static.crates.io/crates/num-iter/num-iter-0.1.42.crate \
+ https://static.crates.io/crates/num-rational/num-rational-0.3.2.crate \
+ https://static.crates.io/crates/num-traits/num-traits-0.2.14.crate \
+ https://static.crates.io/crates/num_cpus/num_cpus-1.13.1.crate \
+ https://static.crates.io/crates/num_enum/num_enum-0.5.6.crate \
+ https://static.crates.io/crates/num_enum_derive/num_enum_derive-0.5.6.crate \
+ https://static.crates.io/crates/objc/objc-0.2.7.crate \
+ https://static.crates.io/crates/objc-foundation/objc-foundation-0.1.1.crate \
+ https://static.crates.io/crates/objc_id/objc_id-0.1.1.crate \
+ https://static.crates.io/crates/oboe/oboe-0.4.5.crate \
+ https://static.crates.io/crates/oboe-sys/oboe-sys-0.4.5.crate \
+ https://static.crates.io/crates/ogg/ogg-0.8.0.crate \
+ https://static.crates.io/crates/once_cell/once_cell-1.9.0.crate \
+ https://static.crates.io/crates/opaque-debug/opaque-debug-0.3.0.crate \
+ https://static.crates.io/crates/openssl-probe/openssl-probe-0.1.5.crate \
+ https://static.crates.io/crates/openssl-sys/openssl-sys-0.9.72.crate \
+ https://static.crates.io/crates/ordered-stream/ordered-stream-0.0.1.crate \
+ https://static.crates.io/crates/pango/pango-0.15.2.crate \
+ https://static.crates.io/crates/pango-sys/pango-sys-0.15.1.crate \
+ https://static.crates.io/crates/parking/parking-2.0.0.crate \
+ https://static.crates.io/crates/parking_lot/parking_lot-0.11.2.crate \
+ https://static.crates.io/crates/parking_lot_core/parking_lot_core-0.8.5.crate \
+ https://static.crates.io/crates/pbkdf2/pbkdf2-0.8.0.crate \
+ https://static.crates.io/crates/peeking_take_while/peeking_take_while-0.1.2.crate \
+ https://static.crates.io/crates/percent-encoding/percent-encoding-2.1.0.crate \
+ https://static.crates.io/crates/pest/pest-2.1.3.crate \
+ https://static.crates.io/crates/pin-project/pin-project-1.0.10.crate \
+ https://static.crates.io/crates/pin-project-internal/pin-project-internal-1.0.10.crate \
+ https://static.crates.io/crates/pin-project-lite/pin-project-lite-0.2.8.crate \
+ https://static.crates.io/crates/pin-utils/pin-utils-0.1.0.crate \
+ https://static.crates.io/crates/pkg-config/pkg-config-0.3.24.crate \
+ https://static.crates.io/crates/polling/polling-2.2.0.crate \
+ https://static.crates.io/crates/ppv-lite86/ppv-lite86-0.2.16.crate \
+ https://static.crates.io/crates/priority-queue/priority-queue-1.2.1.crate \
+ https://static.crates.io/crates/proc-macro-crate/proc-macro-crate-0.1.5.crate \
+ https://static.crates.io/crates/proc-macro-crate/proc-macro-crate-1.1.0.crate \
+ https://static.crates.io/crates/proc-macro-error/proc-macro-error-1.0.4.crate \
+ https://static.crates.io/crates/proc-macro-error-attr/proc-macro-error-attr-1.0.4.crate \
+ https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.36.crate \
+ https://static.crates.io/crates/protobuf/protobuf-2.27.1.crate \
+ https://static.crates.io/crates/protobuf-codegen/protobuf-codegen-2.27.1.crate \
+ https://static.crates.io/crates/protobuf-codegen-pure/protobuf-codegen-pure-2.27.1.crate \
+ https://static.crates.io/crates/quote/quote-1.0.15.crate \
+ https://static.crates.io/crates/rand/rand-0.8.5.crate \
+ https://static.crates.io/crates/rand_chacha/rand_chacha-0.3.1.crate \
+ https://static.crates.io/crates/rand_core/rand_core-0.6.3.crate \
+ https://static.crates.io/crates/rand_distr/rand_distr-0.4.3.crate \
+ https://static.crates.io/crates/redox_syscall/redox_syscall-0.2.10.crate \
+ https://static.crates.io/crates/ref_filter_map/ref_filter_map-1.0.1.crate \
+ https://static.crates.io/crates/regex/regex-1.5.5.crate \
+ https://static.crates.io/crates/regex-syntax/regex-syntax-0.6.25.crate \
+ https://static.crates.io/crates/remove_dir_all/remove_dir_all-0.5.3.crate \
+ https://static.crates.io/crates/rodio/rodio-0.14.0.crate \
+ https://static.crates.io/crates/rpassword/rpassword-5.0.1.crate \
+ https://static.crates.io/crates/rustc-hash/rustc-hash-1.1.0.crate \
+ https://static.crates.io/crates/rustc_version/rustc_version-0.3.3.crate \
+ https://static.crates.io/crates/rustc_version/rustc_version-0.4.0.crate \
+ https://static.crates.io/crates/ryu/ryu-1.0.9.crate \
+ https://static.crates.io/crates/same-file/same-file-1.0.6.crate \
+ https://static.crates.io/crates/schannel/schannel-0.1.19.crate \
+ https://static.crates.io/crates/scoped-tls/scoped-tls-1.0.0.crate \
+ https://static.crates.io/crates/scopeguard/scopeguard-1.1.0.crate \
+ https://static.crates.io/crates/secret-service/secret-service-2.0.1.crate \
+ https://static.crates.io/crates/semver/semver-0.11.0.crate \
+ https://static.crates.io/crates/semver/semver-1.0.5.crate \
+ https://static.crates.io/crates/semver-parser/semver-parser-0.10.2.crate \
+ https://static.crates.io/crates/serde/serde-1.0.136.crate \
+ https://static.crates.io/crates/serde_derive/serde_derive-1.0.136.crate \
+ https://static.crates.io/crates/serde_json/serde_json-1.0.79.crate \
+ https://static.crates.io/crates/serde_repr/serde_repr-0.1.7.crate \
+ https://static.crates.io/crates/sha-1/sha-1-0.9.8.crate \
+ https://static.crates.io/crates/sha1/sha1-0.6.1.crate \
+ https://static.crates.io/crates/sha1_smol/sha1_smol-1.0.0.crate \
+ https://static.crates.io/crates/sha2/sha2-0.9.9.crate \
+ https://static.crates.io/crates/shannon/shannon-0.2.0.crate \
+ https://static.crates.io/crates/shell-words/shell-words-1.1.0.crate \
+ https://static.crates.io/crates/shlex/shlex-0.1.1.crate \
+ https://static.crates.io/crates/signal-hook-registry/signal-hook-registry-1.4.0.crate \
+ https://static.crates.io/crates/slab/slab-0.4.5.crate \
+ https://static.crates.io/crates/sluice/sluice-0.5.5.crate \
+ https://static.crates.io/crates/smallvec/smallvec-1.8.0.crate \
+ https://static.crates.io/crates/socket2/socket2-0.4.4.crate \
+ https://static.crates.io/crates/static_assertions/static_assertions-1.1.0.crate \
+ https://static.crates.io/crates/stdweb/stdweb-0.1.3.crate \
+ https://static.crates.io/crates/strsim/strsim-0.10.0.crate \
+ https://static.crates.io/crates/subtle/subtle-2.4.1.crate \
+ https://static.crates.io/crates/syn/syn-1.0.86.crate \
+ https://static.crates.io/crates/synstructure/synstructure-0.12.6.crate \
+ https://static.crates.io/crates/system-deps/system-deps-6.0.1.crate \
+ https://static.crates.io/crates/temp-dir/temp-dir-0.1.11.crate \
+ https://static.crates.io/crates/tempfile/tempfile-3.3.0.crate \
+ https://static.crates.io/crates/termcolor/termcolor-1.1.2.crate \
+ https://static.crates.io/crates/thiserror/thiserror-1.0.30.crate \
+ https://static.crates.io/crates/thiserror-impl/thiserror-impl-1.0.30.crate \
+ https://static.crates.io/crates/time/time-0.1.43.crate \
+ https://static.crates.io/crates/tinyvec/tinyvec-1.5.1.crate \
+ https://static.crates.io/crates/tinyvec_macros/tinyvec_macros-0.1.0.crate \
+ https://static.crates.io/crates/tokio/tokio-1.17.0.crate \
+ https://static.crates.io/crates/tokio-macros/tokio-macros-1.7.0.crate \
+ https://static.crates.io/crates/tokio-stream/tokio-stream-0.1.8.crate \
+ https://static.crates.io/crates/tokio-util/tokio-util-0.6.9.crate \
+ https://static.crates.io/crates/toml/toml-0.5.8.crate \
+ https://static.crates.io/crates/tower-service/tower-service-0.3.1.crate \
+ https://static.crates.io/crates/tracing/tracing-0.1.30.crate \
+ https://static.crates.io/crates/tracing-attributes/tracing-attributes-0.1.19.crate \
+ https://static.crates.io/crates/tracing-core/tracing-core-0.1.22.crate \
+ https://static.crates.io/crates/tracing-futures/tracing-futures-0.2.5.crate \
+ https://static.crates.io/crates/try-lock/try-lock-0.2.3.crate \
+ https://static.crates.io/crates/typenum/typenum-1.15.0.crate \
+ https://static.crates.io/crates/ucd-trie/ucd-trie-0.1.3.crate \
+ https://static.crates.io/crates/unicode-bidi/unicode-bidi-0.3.7.crate \
+ https://static.crates.io/crates/unicode-normalization/unicode-normalization-0.1.19.crate \
+ https://static.crates.io/crates/unicode-width/unicode-width-0.1.9.crate \
+ https://static.crates.io/crates/unicode-xid/unicode-xid-0.2.2.crate \
+ https://static.crates.io/crates/url/url-2.2.2.crate \
+ https://static.crates.io/crates/uuid/uuid-0.8.2.crate \
+ https://static.crates.io/crates/value-bag/value-bag-1.0.0-alpha.8.crate \
+ https://static.crates.io/crates/vcpkg/vcpkg-0.2.15.crate \
+ https://static.crates.io/crates/vergen/vergen-3.2.0.crate \
+ https://static.crates.io/crates/version-compare/version-compare-0.1.0.crate \
+ https://static.crates.io/crates/version_check/version_check-0.9.4.crate \
+ https://static.crates.io/crates/void/void-1.0.2.crate \
+ https://static.crates.io/crates/waker-fn/waker-fn-1.1.0.crate \
+ https://static.crates.io/crates/walkdir/walkdir-2.3.2.crate \
+ https://static.crates.io/crates/want/want-0.3.0.crate \
+ https://static.crates.io/crates/wasi/wasi-0.10.2+wasi-snapshot-preview1.crate \
+ https://static.crates.io/crates/wasm-bindgen/wasm-bindgen-0.2.79.crate \
+ https://static.crates.io/crates/wasm-bindgen-backend/wasm-bindgen-backend-0.2.79.crate \
+ https://static.crates.io/crates/wasm-bindgen-futures/wasm-bindgen-futures-0.4.29.crate \
+ https://static.crates.io/crates/wasm-bindgen-macro/wasm-bindgen-macro-0.2.79.crate \
+ https://static.crates.io/crates/wasm-bindgen-macro-support/wasm-bindgen-macro-support-0.2.79.crate \
+ https://static.crates.io/crates/wasm-bindgen-shared/wasm-bindgen-shared-0.2.79.crate \
+ https://static.crates.io/crates/web-sys/web-sys-0.3.56.crate \
+ https://static.crates.io/crates/wepoll-ffi/wepoll-ffi-0.1.2.crate \
+ https://static.crates.io/crates/winapi/winapi-0.3.9.crate \
+ https://static.crates.io/crates/winapi-i686-pc-windows-gnu/winapi-i686-pc-windows-gnu-0.4.0.crate \
+ https://static.crates.io/crates/winapi-util/winapi-util-0.1.5.crate \
+ https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/winapi-x86_64-pc-windows-gnu-0.4.0.crate \
+ https://static.crates.io/crates/zbus/zbus-1.9.1.crate \
+ https://static.crates.io/crates/zbus/zbus-2.1.1.crate \
+ https://static.crates.io/crates/zbus_macros/zbus_macros-1.9.1.crate \
+ https://static.crates.io/crates/zbus_macros/zbus_macros-2.1.1.crate \
+ https://static.crates.io/crates/zbus_names/zbus_names-2.1.0.crate \
+ https://static.crates.io/crates/zerocopy/zerocopy-0.3.0.crate \
+ https://static.crates.io/crates/zerocopy-derive/zerocopy-derive-0.2.0.crate \
+ https://static.crates.io/crates/zvariant/zvariant-2.10.0.crate \
+ https://static.crates.io/crates/zvariant/zvariant-3.1.2.crate \
+ https://static.crates.io/crates/zvariant_derive/zvariant_derive-2.10.0.crate \
+ https://static.crates.io/crates/zvariant_derive/zvariant_derive-3.1.2.crate"
+MD5SUM="1ab5f9d3e76d2e99691c6337c2657d7e \
+ 9d033cc2daa6924420a4a89e6705773f \
+ bd53a9f0ec43690f84e8c96bba8e538d \
+ db6f9a586bda62de931be1b2bce9cd34 \
+ b14b12cd0e866930de1993132c85705b \
+ 58a6326364dbe6f5168f3f3a341f360e \
+ 425b8fdf70df59998d9b7c89083e48d1 \
+ fce951b34a5c1b8edb8c104987637fd3 \
+ bd278d96770173a5298bea9ebdba03f7 \
+ 730ff1a5c2f3becc07743810ad47e66e \
+ 7814be2d45d822ba919dc9e6b70ac44e \
+ b2733911430dec241671728239f8924e \
+ 218d9b779b991e39e2e3fd2f299a9864 \
+ 50806ccba0af9b3fdd3e37c6b651059c \
+ 44dc698c2ff129b4592c402dd9a4501a \
+ 8588bed0c242a7e964ac4cf236dbccd2 \
+ ae1a5d749e1a8af706a5c9104bb0923b \
+ 6a5fb43167d44652c51e3ceb9c2b8c23 \
+ c33a5eb809e9f42be5388d47c80f6eeb \
+ 8b03718de9cf7106f0b77b87e1bda5fb \
+ f8e2c3f07b084e1aece1741f58ec28d1 \
+ f3bf7f61aeafc26eea205f0e05f1beea \
+ 6a2f7b82f00aaf8f9124cbae817980ac \
+ 142cb4b9a653e56e56311f0c883b8582 \
+ 05d77ef52e90ad161fdd41b252420467 \
+ 80a2c27647a6acb1890a3a7de8fded72 \
+ bbc1b4852c4eb23effe97764def8d1ce \
+ a295edb6953237ebbdfa8e731229f9a3 \
+ ea2d23ceb9f98853a7dffc6c02884464 \
+ c7fbaf61245dc847237ab7c72b3ee9ea \
+ 25bcf8d84152a1c93f2767715c250779 \
+ 3518756a1af12a80e9c872091cdec5d5 \
+ b56e5ae6b74252e4d9b89a06adf510c5 \
+ 79173170388e20507a241b355ef521e3 \
+ 1e704be5ddde9d6b5383ef1035309f91 \
+ df3ac16302a9dd29508eda92aa402a9b \
+ ca7e295f50617a33e02283d3ef93ff99 \
+ 6d0a8ceae87853ef8947455469cefda9 \
+ 4b84cfa4a4822e326a5dcd8d1bdfd030 \
+ 6473ba7813c7756738489dbc0b6203b9 \
+ 00cc3eeabff68c61e5aacdb5ea9d16ac \
+ 267fc4a374516caa7ab495f0c607c1b4 \
+ dcb58f182347515cab229f836dd8e6d1 \
+ 76d8f58004ba41bc3cd6bcfa48cb229b \
+ 882dbbc613a93f64c3709b0a2bd0d6dc \
+ 74634128440dbc3766bda76fdf0aaa05 \
+ 1581b390d17f6e73a43ffc8a7b009e57 \
+ 5184822d3fd9f30dfa4bc922ffa4143c \
+ ad93a9f51606d9d5eba5c8c057a14f14 \
+ 457e008da6d6f7863eb8b037d61ec5c2 \
+ f637bf20fac185ee2687bb2a08325e59 \
+ d05cbf26ed52299487a802688a1d22cb \
+ 092c01b71d220e9e742d1ce83040f9ba \
+ adb22c60d90fc92bce0e9e0cad12eab8 \
+ 5c0b974591c88858125a1bb4e64d7bdc \
+ 70afc41079e42a402066ce556552a478 \
+ 26a9ff1052f12176f2d168f1e41b339e \
+ f77fc9fd7b24926d6cfc9881cc0efab8 \
+ ed0342f94ffebe96d5650f55c23b12a1 \
+ 10c9ec124683092e8fc0cb93ce0de640 \
+ cf52970ee52905ad114b93571dd9c6c6 \
+ 603aaa62874e458ebecb55bd8b249edb \
+ 8a4686ec3b3d644f70e6780462a755b1 \
+ 3391bb3a172bd8aab0c0dc61b31c459c \
+ d39ccc2276d4c0b11ee46aa82d31acb5 \
+ 4c5c5dd84fee3aa2dc530702bddc85e8 \
+ 59978ef7bcea7bc55e24d06a2d32a32c \
+ 493a2f042d86baa5c6bac75202c64554 \
+ baac29564e83e3957b1976f3a1d92ba6 \
+ a6242be0e2040974cb83dc7c4c67b761 \
+ 8c1bba1510c915f915a9eca6fa95f476 \
+ 19070d2b1f030565e3d994df2fd9cb6c \
+ 3d2977b047e366303274ab03ebef1c2b \
+ 9f40837910054385d663c557f735b03a \
+ 3fa75bcd254d37247ec3e97bad1dd445 \
+ 33ee4fa20d181488961006de02740b50 \
+ 782fd3cac41045c0d89d69b90012d8b7 \
+ e08921c68133df2e254fe723b368bae3 \
+ 52f1c0adc1d0fb68e8608b8c4faa3c71 \
+ 8dab3b3ec00dc56cffde0b0c410d47b5 \
+ 7ee8703970c3fa6a2e37893de742824b \
+ bece18dd831ac2ce1e26e92271e6d832 \
+ 5d404b52af03b999e7fb74fbe16d3bd0 \
+ 8aa040d9c661f68ebb67d5b71813473b \
+ 1e0ad6e5cdab371cabd218748fee9b6d \
+ 74d9ab54981e8f02e7eb683ac0a8a6b9 \
+ 3763e6c936b1accbd2e9a7c8118793e0 \
+ 750ca4b374c5cd501a612a841f7362a9 \
+ a46bd303e3155f7975b167af12435e5e \
+ 1ab2952ce15d2f9cfe279821274133eb \
+ 8071e8e030bee77619611dbb4e508864 \
+ 32c8f5f8523fd26925e2a6495604bb93 \
+ 53c91805e78e1ab2a34282be3aecbe94 \
+ 324bb5f02dba12add6dc16c10bfbce6c \
+ e62727696767b6ef195e3b50e42817c1 \
+ 4824dbe307f1d20e74a4ebad2b7e4d6e \
+ c3ec5977ecc0f6244ef3be87f5325e72 \
+ d3f5e27649cc6184d1bca2d065d2a092 \
+ bb072f15d5e4067bea6933a4fbeb9c0a \
+ 92f23eb502ec2add616257ca9ea8823e \
+ 27e0b5429881ec07a10c75803f572312 \
+ 7bfceacb0504ab8f7cc961f0c81bb844 \
+ 60134448c463c3e2645353f8de19f669 \
+ fe5d62a5aa97e780833348f5d9a6ec9b \
+ 3d41dae1c09c54f19d224f58e98e5a89 \
+ e7c07242a95ee1df865efe9534e10a34 \
+ 8d0a78969cbc0ceb1787bcd02430cefd \
+ 6d39e92a8d9bac6e8613eae79b4ac637 \
+ 97a0c8bef92ca2df111b6067deea1630 \
+ 8dbc13bf4848e7a0f39572be8c9c319c \
+ 5af6733a9e5107b2df46a32fa1e1ef7b \
+ dd838e84196263901190504f44053a5f \
+ 474ea5fc0ec36be109eba41e9ff92595 \
+ 799f84552a7a943a492fb3f27f1d6b1e \
+ 8488e9acd924b1baf4f97cbb3ca418f6 \
+ 62b3edf8c2db7fccb1a6a41134b84e62 \
+ d84097823667ed4c3f938da04a13992c \
+ 0372a8de508e57da4d4869f058bcb630 \
+ 4fd75413081a400a1c230f0700732611 \
+ 0b7994d1256215201bdfb810a357ffa2 \
+ 1d3e530a3410fc95a6987d70f84a6332 \
+ ff7c38e023578064f54c98f7b0f7d2c2 \
+ b57599fc2bb8cfd76567e656070d0d72 \
+ 656eb112c9634812796a81803b04a3e6 \
+ d15066ccf2d33bbd8afdb9036ba47da5 \
+ df09b038f991ff902161d83159d4871a \
+ e685b43c1f198999c125bc7bbe084ab3 \
+ e40d2efcee31e346fbc82277683422ea \
+ 4918da28fbc2f6888ad71c159996a9b5 \
+ c01022fe0357c10ca1d48b16187f81bd \
+ 8e87a3c1697ca04a19ebde7187f15156 \
+ 31667fab2083c342c85bb51c2cba6d58 \
+ fe77a3f609b6fd8d5b08f3b2ef14d2ad \
+ f50aaf5171cbc0327f8d18a4ec7405fb \
+ c3fe94727289a0f8f47b149810022900 \
+ df401fb6d6fe40c02ecea514716ee96a \
+ bd04a204662b00e7d773d0a753bd0928 \
+ 5f153f7135dceb02f88266121c836b4e \
+ 057d52b1e2b951597cc4a82876e7646b \
+ 06e7dbde9932c6a9bac63d9288670678 \
+ 5c98b89b530b563b6e5f6e1b631c4b35 \
+ b30ef1414dde99d96e89aeea2b3fc094 \
+ 73272fe4aadb91d550dca8fc7ead8bf7 \
+ 3aefa31e8413112958290a6ca004b096 \
+ 60bcdfbbaca59d4c147f4fa11c592c68 \
+ e155c3d45440413eec6db44f68a21b69 \
+ fba3b040a55c01be7376d3dd5c4d4920 \
+ 23cc9e52c52465f5b225e62ab7cc3457 \
+ d3d110551104b00b42c9920958939391 \
+ 03f9ff96b48b1a661e6804fe63d7d6a2 \
+ c34dcfcdcf62d89900e94a6a7b1ed0d7 \
+ 7077d380579b979cd864756ac90e3f9c \
+ a087f8a5947ecf4e734ac9cfe695469c \
+ 0764d84de2302fda8d1d72b95f31a0b8 \
+ cc9ba5bc2cc1f60765c57f5d6cc10042 \
+ a63fa50b0954c349c74980347253f06e \
+ a2db9e4d802b919606c596d7d95ef251 \
+ d07af7d3cab8ed749a8310a89be6b1ff \
+ 4ba60e706b5e69a88192ff773b27a229 \
+ 58d0064087bc800cf6ee10d667651491 \
+ 84a3537d01f17e0e19f28000bb445c6b \
+ 2721e88844fd0335095f7e99df1ebbb9 \
+ 0bedbc5d1b29e4d6a7fbae0e6d1e146a \
+ e85f829193ea1afa080dcff7f77cf945 \
+ c6acde76d0fbb62b7eda3857d8a73436 \
+ 9e3ea187f6e3f01e3c9590782c744b3e \
+ c000dfa6a77a58ede02be41418056bf3 \
+ 9e0bf233b47424b8449a928bd31a1470 \
+ 9160664d20c024783323f5b90ca74d2d \
+ 6fa7c4b0da26b511570845e41527bc8f \
+ 825ecc659b700477535aa5c7dea95a82 \
+ 40e508baeee8cdccbc471489b0f449ff \
+ 7b3195612bc6090f0fa759e747a9e91c \
+ 7c81e7a61ec172a229d6fdbc553e883d \
+ ccc5ff9ff4a431e36c0b6dd9f640ab58 \
+ 5ac809692422b722eaded90be3c4d9c2 \
+ d75b1c734f85b007c55ca84217df4201 \
+ 76124c2327f642cddf19a4aa50cbcb7d \
+ a362e890dd0dfe51ecd95a4a1be6e28c \
+ b0a7859b81eeead5a15800d489e07347 \
+ 4604959975c2154a14f6b5e97444e2c8 \
+ 5a4f0e9922683867565531089e3c417f \
+ 4917ff4eaed099a21ff16b96f0df49cb \
+ 1a6e77e2f6f916ef7a5a9481ed426b76 \
+ e01c75ca9113d2af67ae903fa39e14be \
+ 97b832ecaac0eee2b644fd42f2931160 \
+ b235f97b3139681d61419166e7c00e3c \
+ c45800f4dfb888a928c772b081065214 \
+ 2e504fc2b79dc46f983c960e30be1702 \
+ 675fcfdbc94cd10b26b71965d3c3807b \
+ bd9b057de16e5b299bcda0894cfd823e \
+ 420f93a43fa603c1253213bdf28983df \
+ ebe381c6ee4281c78701e79a2cf90bc8 \
+ 0ce3cb22636a6b7992a2cd5b106f54ea \
+ 9c414752deabb69c93aa3911422a960c \
+ 4b8c01a755ea55d3344d9ccb07c093ca \
+ 56c34619687723fa3fc23213471e8545 \
+ a8ec1126ef06244ac1e3773981a005f1 \
+ 4b9ee6818517941de3ad6d645b77af3a \
+ d631c116041b5f68abc8680fa82feedf \
+ c0e036fd990d0c9cae11b5876a5cb572 \
+ c5e50e299295e662ad19c58428d6e085 \
+ a8bd18783d4b87808a6dad6814f297b6 \
+ 2493cc854d9a4fb0a1ed78595a5b667a \
+ b4dcac855af5df71f3383d86c4a96b78 \
+ aecd889de42c8168e1bc97a6f2720d8f \
+ fd9aa273ad560dedd00ddcf3dbe808ce \
+ 0b06dd6bef5cc7724c3daf6c900d38d0 \
+ af692853d165edb9c5df23627b2f8e04 \
+ e460418ee4f5508bc53c97e809331882 \
+ 9e544fc057bf6032dd55b02f87b8dbf4 \
+ 653e04baa68a4484b3b839c19221e474 \
+ 907244c0d3791f3f981c7cc8e4cad0a3 \
+ 50bcf9c0d46f49e8fdbbe9ffa1a73c56 \
+ 7e12f02e9742f49de13bbeacfe2906b8 \
+ f1adbc335ff6dd6692959688dedd9484 \
+ af00c723f5d3b3e4e6e388e98d6bf7f1 \
+ 205459def23510e8815562e73a65c898 \
+ 12e4ba5909e1f30b9142932571eaa4da \
+ 233dee08f26c9cbe78f29b66c0c20ccd \
+ cf2f0435bd5b5111fea46e8d9dc6522d \
+ 7e264bc8f23a45ad680668cb5e57d9fd \
+ f490982aceabdbd515348f63e638a782 \
+ 37cf6acd1c3259eefeba636e4cc9b365 \
+ 228eb40a277a6dda01626b6e9287ee66 \
+ 8ff78776b6140283bd558ad74554cb16 \
+ 5e9fce0f8489727426f9b155cd08d8e3 \
+ 07c75fec267864bcbb800ca7709ceae2 \
+ 42b88767a9db3d9fe6e59b5dff52abf5 \
+ 1d827ececfe381f71248b88ec399f359 \
+ ae91c97885d67994a342820cf7d59fb2 \
+ d6291d0e18f55b8364b36a7f5e1af699 \
+ 5ecf56203dda9419751b532d99c3601d \
+ 0baac9bed3d6065b6128aa8a888e5eb9 \
+ 6a32bab57772c3a1146d599b65ffb0cb \
+ 7d76a523677de261dda1b65d29a93c4e \
+ 5af0856196b1bb934f25a66b082c4131 \
+ 256e8677308aa17acc8c82b54d8a4fae \
+ 1810d970f84683a419d7b9aa6740f8a6 \
+ aca51d2a40262bfd8e69fbf6b2b01ed2 \
+ 418d3ebc9610905ab514667dad302f56 \
+ ee7a5f842c39bc47c474196e83b0df5f \
+ e30085994bbeb4b7f4895d48216d5476 \
+ ae5dab3db7dc317e16bb6f9e7eb15d14 \
+ a661e92ffd6cb9f0893126e3cde3fffc \
+ 4a80ab58144fc731cd12abc6d5139d7f \
+ d1e5569ab3528bea44f2a7ebb1ec0a35 \
+ 6b5c7401117316735435311bf551515b \
+ 82401c70623ccc1bfc0bcb5c3b0ac8b7 \
+ 0538d1da369f3e3f0412aa4d735c1b61 \
+ 4ac453abdecd6346f92989b4f789ac84 \
+ 1e585d25db7b5bb009b060befc74e9fe \
+ 7b1261ea730a9314bc9bcdf4a379bf98 \
+ 93aeba00993f0ed8c474864e455cf584 \
+ fdf3aa5e1f6c33e4f68b0f7b08e1e94e \
+ 7fe15f165a1812b23e5b1980aa364de2 \
+ 2d8d8b377d144f5e32b4f65a69eb0b24 \
+ f505a218806e44b2369671089d65e839 \
+ fc60e4ecd18db5e582b9e7dd19dd62e4 \
+ b4a0a98a54439a5a37952c8879187ee3 \
+ f916271c81cfe339d66df629e3828392 \
+ d2cc4e584ed64165fc56d2c9081eb3ee \
+ 461fc1209ec16fb35a70adebd0f3c09f \
+ 42408be0352a76b14f1e77a6b8858a77 \
+ c8ae0dd2469d51f273abdbfb24adceac \
+ 7c532e05dc3b2bd295136a297260c4dc \
+ c8f9eb4d5f0173b70647e559b03e85fb \
+ e3932c56e06c7d1e780242ca5feba32f \
+ 82078b82ed1c52aac9552a39ead691a0 \
+ ff221db0109795b44f92352780cd1901 \
+ 74d8afce717ff89fb2cb5141f121782b \
+ 9420cc533b8572ae0d04750421127f80 \
+ 31bc883e6f9b36925f55460401197274 \
+ ce622fdb8d18cd1c13ed8fadc5400c10 \
+ e4e7efe2ab7921499d5c247a349e9e1f \
+ 21b43d5721b3a9c16059acb691f4314d \
+ 2fcf5fe983975bbcea43129c9fb31923 \
+ 06ed54fefb2e737e18d586bfa7ad44fe \
+ 6249245cf12427da0a4f37bc3d294ff4 \
+ f8839491f88f7a15ac8a5bdd787de442 \
+ c9defe80406280bcfce4ecf31c0200b3 \
+ 43661dc16a38eb42bd49a11b9f00d6f4 \
+ 82d98dc87dc8503400aa095f5aa70f13 \
+ 8e053c23f1d36fbf3f276fbf501e3e35 \
+ 67def8e3d7d4b26b803a2d0799ef31b9 \
+ 8f6b6cc71be0473b79c65abfea592c07 \
+ 10e133f0f33f0f41bc7fdad56e85a35b \
+ 73ff8cffc66d065488dcf50e3b8c0c1f \
+ f29a1bb1b5f3f29cedb36f40f720d765 \
+ ebdff467249aa3dca005a441dc824236 \
+ cc180843b3b626ede01ebd9a0d9fbdaa \
+ 3e61457993a6e3fdaaf2fbe82bd7dff3 \
+ 9d66208e00715217a8c1f2e40efe4a0c \
+ 90a6772f747261b181e3801bf51d9379 \
+ 7bfcad253aff26bc26c5e3521f3ba891 \
+ 4625feab41aceeb81e268cf272a8cb43 \
+ 64c940cf10c49b34761e1a4dbf2b023f \
+ 97aab350fb2614818580f00d1fb284ad \
+ 3b23aa9eb619cbfd68d96719db904597 \
+ db6fe956ec67f88412df3a627158a7ba \
+ 519bfbdd19531f1d7b775bfa7ce4ee80 \
+ 6a50f7029b3a8cc76f5f50ef9ee0b4aa \
+ 610bf72284e8f22d831d2f4ab3b87809 \
+ b7bf9803f61dcdcfc0bc07dfe5c6c249 \
+ f601f89fde92362c93611ef2358e1bc1 \
+ e876964c7b83db85fb7897bee7ad0f45 \
+ 7b38b145ae3f6d7d09a1a7a98396f1a2 \
+ 6cae4969689ecc3b4b4c31a9fb9539a6 \
+ dfbd8371187d9453f7461825972272bb \
+ 10291d9a0022076bc0827250816d3476 \
+ a42cc2834b2150027d7b427558a87803 \
+ 087bfc476e9d73628cebd265590f11f7 \
+ eb721c4d9e5dba8f93e9de0a80036ec3 \
+ 43f743c17293ad2404a9a4967f4e570b \
+ c9bde3bd6ba907b5319657c3b65e1191 \
+ e900a384ac7dbb320fe6a7279fbfef89 \
+ c4769705079e88d68739e6089e8769a3 \
+ f15c7457b6f2e06ee2037472d2f9a0fd \
+ d18d362345c4fe512ef67b738b239fb8 \
+ 689203efc084fc0f1d1f74f5d354ae75 \
+ 274f9bcda1e4afd4a290329eff9267ad \
+ 580dd7d12690c726da7d5075f3442a74 \
+ e334c03160b1e0989c2a71ca55f631fc \
+ a061ad1db3e0d839725b037ff8be84e7 \
+ 89f443c919328fcc7b985e262823f0ab \
+ a4dca633705dd04abd9a35e0b794d3d4 \
+ e5e5a1190e8e84eda279934d60ec4d48 \
+ 5909d8a50e0749f6aa8cfea853f161f0 \
+ 37869fac434114d80ef4af359f0a6a12 \
+ 4b9f324ed896f7e327f561e2341ac9ea \
+ 812034252008acfa704cbc65c505bdf2 \
+ 20cfa8aba7521c8767344b06c39479f7 \
+ 0498c4a11448bfc35dc7bb2caa64c753 \
+ db96b50050277bf05a3c68534bbb9586 \
+ b9e37d5fc4ad28b612b78ad37816684d \
+ 09de9d01e7331ff3da11f58be8bef0df \
+ 57b0fdc06f3330e9cafafe88af48c0cf \
+ 1736946acda05e1e94b814f3e3c0145a \
+ 803148006d757487c3767bcdfffd8eb1 \
+ 0fa82df5a92ae7acde1f67130935c17b \
+ 53fc83d016a4a5c3d69a099eb3d10e1d \
+ 7a5233ce3372d0ac3adc2c85f616e3ad \
+ 338a919a7f8b6a7b1eb23272a2b7a237 \
+ 0137ff709b7fe58cc99d835bb01a84bf \
+ 71835a55bbab1c98313163f2fe78138e \
+ 9196c9f6e81d7775d63a9444b4fdfd3d \
+ 9a3b018157fc6d55b895dd429e54bcc2"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="libadwaita"
+MAINTAINER="Julian Grinblat"
+EMAIL="julian@dotcore.co.il"
diff --git a/multimedia/spotify/doinst.sh b/multimedia/spotify/doinst.sh
index 5fb28930db..15897e058c 100644
--- a/multimedia/spotify/doinst.sh
+++ b/multimedia/spotify/doinst.sh
@@ -1,3 +1,10 @@
+chmod 4755 usr/share/spotify/*.so*
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/spotify/spotify.SlackBuild b/multimedia/spotify/spotify.SlackBuild
index 2d03814176..8dfd752e93 100644
--- a/multimedia/spotify/spotify.SlackBuild
+++ b/multimedia/spotify/spotify.SlackBuild
@@ -1,18 +1,20 @@
-#!/bin/sh
-
-# Slackware build script for spotify
-
+#!/bin/bash
+#
+# Slackware build script for spotify.
+#
# Copyright 2017 Dhaby Xiloj <slack.dhabyx@gmail.com>
-
+# Copyright 2022-2023 Edinaldo P. Silva, Rio de Janeiro, Brazil
+# Copyright 2023 Reza Talebi, Shahin Shahr, Iran.
+#
# Based on Ryan's SlackBuild:
# Ryan P.C. McQuen | Everett, WA | ryanpcmcquen@member.fsf.org
-
+#
# 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, with the following exception:
# the text of the GPL license may be omitted.
-
+#
# 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. Compiling,
@@ -20,26 +22,35 @@
# may result in lapses of consciousness and/or very being, up to and
# including the end of all existence and the Universe as we know it.
# See the GNU General Public License for more details.
-
+#
# You may have received a copy of the GNU General Public License along
# with this program (most likely, a file named COPYING). If not, see
# <https://www.gnu.org/licenses/>.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=spotify
SRCNAM=spotify-client
-VERSION=${VERSION:-1.1.10}
-VERSION32=${VERSION32:-1.0.72}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-1.2.31.1205}
+RELVER=${RELVER:-g4d59ad7c}
+VERSION32=${VERSION32:-1.0.72.117}
+RELVER32=${RELVER32:-g6bd7cc73-35}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
# Modified since Spotify has diferent versions for each architecture
case "$(uname -m)" in
- i?86) VERSION=${VERSION32}; DEBARCH="*-*_i386" ; LIBDIRSUFFIX="" ; ARCH=i386 ;;
- x86_64) DEBARCH="*-*_amd64" ; LIBDIRSUFFIX="64" ; ARCH=x86_64 ;;
+ i?86) VERSION=${VERSION32}; RELVER=${RELVER32}; DEBARCH="_i386" ; ARCH=i586 ;;
+ x86_64) DEBARCH="_amd64" ; ARCH=x86_64 ;;
*) echo "Package for $(uname -m) architecture is not available." ; exit 1 ;;
esac
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -49,7 +60,7 @@ set -eu
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $PKG
-ar -p $CWD/${SRCNAM}_${VERSION}${DEBARCH}.deb data.tar.gz | tar zxv
+ar -p $CWD/${SRCNAM}_${VERSION}.${RELVER}${DEBARCH}.deb data.tar.gz | tar zxv
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -57,45 +68,29 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-## create our opt/ directory
-mkdir -p $PKG/opt/$PRGNAM/
-
-## move usr/ to opt/ to avoid
-## collisions
-mv usr/ $PKG/opt/$PRGNAM/
-
-## rebuild some directories
-mkdir -p $PKG/usr/{bin,doc}/
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+# directories.
+mkdir -p $PKG/usr/{bin,doc/${PRGNAM}-$VERSION,share/applications}
-## we make our own launcher
-cat <<EOT > $PKG/usr/bin/$PRGNAM
-#!/bin/sh
-/opt/$PRGNAM/usr/bin/$PRGNAM "\$@"
-EOT
+# application launcher.
+mv $PKG/usr/share/$PRGNAM/$PRGNAM.desktop $PKG/usr/share/applications/$SRCNAM.desktop
+ln -sf /usr/share/$PRGNAM/$PRGNAM $PKG/usr/bin/$PRGNAM
-chmod 755 $PKG/usr/bin/$PRGNAM
+# icons.
+for res in 16 22 24 32 48 64 128 256 512; do
+ install -Dm644 "$PKG/usr/share/$PRGNAM/icons/spotify-linux-${res}.png" \
+"$PKG/usr/share/icons/hicolor/${res}x${res}/apps/$SRCNAM.png"
+done
-## install all icon sizes, thanks to Dhaby
-(
- cd $PKG/opt/$PRGNAM/usr/share/$PRGNAM/icons
- for IMG in $PRGNAM-linux-*.png; do
- SIZE=${IMG##*$PRGNAM-linux-}
- DIRNAME=${SIZE%.png}x${SIZE%.png}
- install -D $IMG $PKG/usr/share/icons/hicolor/$DIRNAME/apps/$SRCNAM.png
- done
-)
-
-mkdir -p $PKG/usr/share/applications/
-mv $PKG/opt/$PRGNAM/usr/share/$PRGNAM/$PRGNAM.desktop \
- $PKG/usr/share/applications/$SRCNAM.desktop
-
-mv $PKG/opt/$PRGNAM/usr/share/doc/$SRCNAM/* $PKG/usr/doc/$PRGNAM-$VERSION
+# docs.
+gzip -dc $PKG/usr/share/doc/$SRCNAM/changelog.gz > $PKG/usr/doc/$PRGNAM-$VERSION/ChangeLog
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+# remove dirs.
+rm -rf $PKG/usr/share/{doc,spotify/apt-keys}
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-${VERSION}-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/spotify/spotify.info b/multimedia/spotify/spotify.info
index a09c3ce6bf..6f0220567a 100644
--- a/multimedia/spotify/spotify.info
+++ b/multimedia/spotify/spotify.info
@@ -1,10 +1,10 @@
PRGNAM="spotify"
-VERSION="1.1.10"
+VERSION="1.2.31.1205"
HOMEPAGE="https://www.spotify.com"
DOWNLOAD="http://repository.spotify.com/pool/non-free/s/spotify-client/spotify-client_1.0.72.117.g6bd7cc73-35_i386.deb"
MD5SUM="c8e54d60452bda40f6de23f11c909b2d"
-DOWNLOAD_x86_64="http://repository.spotify.com/pool/non-free/s/spotify-client/spotify-client_1.1.10.546.ge08ef575-19_amd64.deb"
-MD5SUM_x86_64="ab544e7d35789b6cfddcb61dfe4bd1d9"
-REQUIRES=""
-MAINTAINER="DhabyX"
-EMAIL="slack.dhabyx@gmail.com"
+DOWNLOAD_x86_64="http://repository.spotify.com/pool/non-free/s/spotify-client/spotify-client_1.2.31.1205.g4d59ad7c_amd64.deb"
+MD5SUM_x86_64="1537cfa045f0948f84c8eddce44c64d3"
+REQUIRES="libcurl-gnutls libayatana-appindicator"
+MAINTAINER="Reza Talebi"
+EMAIL="reza.talebi.73@outlook.com"
diff --git a/multimedia/srt-to-vtt-cl/README b/multimedia/srt-to-vtt-cl/README
new file mode 100644
index 0000000000..31ade96dde
--- /dev/null
+++ b/multimedia/srt-to-vtt-cl/README
@@ -0,0 +1,2 @@
+A command line tool that converts subtitle files from SubRib (.srt)
+format to WebVTT (.vtt) format.
diff --git a/multimedia/podcastparser/slack-desc b/multimedia/srt-to-vtt-cl/slack-desc
index 6c634dd29b..5ee4085a49 100644
--- a/multimedia/podcastparser/slack-desc
+++ b/multimedia/srt-to-vtt-cl/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-podcastparser: podcastparser (Python RSS feed parser)
-podcastparser:
-podcastparser: podcastparser is a podcast parser written in Python.
-podcastparser:
-podcastparser:
-podcastparser: Homepage: http://gpodder.org/podcastparser/
-podcastparser:
-podcastparser:
-podcastparser:
-podcastparser:
-podcastparser:
+srt-to-vtt-cl: srt-to-vtt-cl (convert srt files to webtvv)
+srt-to-vtt-cl:
+srt-to-vtt-cl: A command line tool that converts subtitle files from
+srt-to-vtt-cl: SubRib (.srt) format to WebVTT (.vtt) format.
+srt-to-vtt-cl:
+srt-to-vtt-cl:
+srt-to-vtt-cl:
+srt-to-vtt-cl:
+srt-to-vtt-cl:
+srt-to-vtt-cl:
+srt-to-vtt-cl:
diff --git a/multimedia/farstream/farstream.SlackBuild b/multimedia/srt-to-vtt-cl/srt-to-vtt-cl.SlackBuild
index 3535d165f8..61393386d5 100644
--- a/multimedia/farstream/farstream.SlackBuild
+++ b/multimedia/srt-to-vtt-cl/srt-to-vtt-cl.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for farstream
+# Slackware build script for <srt-to-vtt-cl>
-# Copyright 2015-2017 Thorn Inurcide USA
+# Copyright 2021, Michales Michaloudes (clavisound), Greece
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=farstream
-VERSION=${VERSION:-0.2.8}
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=srt-to-vtt-cl
+VERSION=${VERSION:-1.2.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,8 +38,15 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -61,7 +71,7 @@ mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+cd $PRGNAM-$VERSION/SRT\ to\ VTT\ Converter/
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -69,33 +79,25 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# Check for valgrind
-pkg-config --exists valgrind && VALGRIND="--enable-valgrind"
-
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --enable-introspection="yes" \
- --enable-glib-asserts="auto" \
- --enable-gobject-cast-checks="auto" \
- ${VALGRIND:-"--disable-valgrind"} \
- --build=$ARCH-slackware-linux
-
make
-make install DESTDIR=$PKG
+
+mkdir -p $PKG/usr/bin
+cp ../bin/Linux/*/srt-vtt $PKG/usr/bin/
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+cd $TMP/$PRGNAM-$VERSION
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS ChangeLog* COPYING NEWS README* $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ LICENSE.txt README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/srt-to-vtt-cl/srt-to-vtt-cl.info b/multimedia/srt-to-vtt-cl/srt-to-vtt-cl.info
new file mode 100644
index 0000000000..3535d68d13
--- /dev/null
+++ b/multimedia/srt-to-vtt-cl/srt-to-vtt-cl.info
@@ -0,0 +1,10 @@
+PRGNAM="srt-to-vtt-cl"
+VERSION="1.2.0"
+HOMEPAGE="https://github.com/nwoltman/srt-to-vtt-cl"
+DOWNLOAD="https://github.com/nwoltman/srt-to-vtt-cl/archive/v1.2.0/srt-to-vtt-cl-1.2.0.tar.gz"
+MD5SUM="613910cce5cf1c865ca89fa3c4a608e6"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Michales Michaloudes"
+EMAIL="korgie@gmail.com"
diff --git a/multimedia/stills2dv/stills2dv.SlackBuild b/multimedia/stills2dv/stills2dv.SlackBuild
index 431a56fbae..c098071b13 100644
--- a/multimedia/stills2dv/stills2dv.SlackBuild
+++ b/multimedia/stills2dv/stills2dv.SlackBuild
@@ -1,31 +1,41 @@
-#!/bin/sh
+#!/bin/bash
#
# Slackware build script for stills2dv
#
# This is hereby put in the public domain
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=stills2dv
VERSION=${VERSION:-alpha_0.602}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
SRCVER=$(printf $VERSION | tr _ -)
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -82,4 +92,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/straw-viewer/README b/multimedia/straw-viewer/README
deleted file mode 100644
index b25df5614e..0000000000
--- a/multimedia/straw-viewer/README
+++ /dev/null
@@ -1,43 +0,0 @@
-straw-viewer (search and stream videos from youtube)
-
-straw-viewer is a lightweight application for searching and streaming
-videos from YouTube, using the API of invidio.us. The project is in its
-early development stages and some features are not implemented yet.
-
-straw-viewer is a fork of youtube-viewer that does not require a Google
-API key. Usage and user interface are identical to youtube-viewer.
-
-For playing videos, this uses mplayer, vlc, or mpv. However, the mplayer
-that ships with Slackware 14.2 has some issues with straw-viewer (or
-actually with youtube: the audio stream cuts out randomly). Using vlc
-or mpv is highly recommended.
-
-Optional dependencies:
-
-perl-Gtk3, perl-File-ShareDir - for gtk-straw-viewer.
-perl-lwp-useragent-cached - for local cache support.
-perl-JSON-XS - for faster JSON deserialization.
-perl-Text-CharWidth, perl-Unicode-LineBreak - for better formatting
- in the terminal.
-perl-Term-ReadLine-Gnu - for command editing/history in the terminal.
-youtube-dl [1] - if this is present, straw-viewer will use it to detect
- available formats for the video.
-
-Counting optional ones, straw-viewer has over 40 dependencies. To make
-life easier, there's a "straw-viewer.sqf" queue file included with this
-build, which includes everything listed above.
-
-[1] A small caveat about youtube-dl: straw-viewer works without it,
-though occasionally it'll choose a lower quality than is available
-for some videos. However, if youtube-dl is present but outdated,
-straw-viewer will fail to play videos at all! If you suspect this,
-remove youtube-dl and try without it.
-
-This build always includes the command-line client (straw-viewer). For the
-GTK client (gtk-straw-viewer), install perl-Gtk3 and perl-File-ShareDir
-before running this script. If you have them installed but don't want
-gtk-straw-viewer, you can set GTK=no in the script's environment.
-
-To force gtk-straw-viewer to use your preferred terminal for downloading
-with wget and watching in a terminal, set TERMINAL in the script's
-environment (e.g. TERMINAL="xterm" or TERMINAL="urxvt").
diff --git a/multimedia/straw-viewer/git2tarxz.sh b/multimedia/straw-viewer/git2tarxz.sh
deleted file mode 100644
index 3cc7487637..0000000000
--- a/multimedia/straw-viewer/git2tarxz.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-
-# Create source tarball from git repo, with generated version number.
-
-# Takes one optional argument, which is the commit or tag to create a
-# tarball of. With no arg, HEAD is used.
-
-# Version number example: 0.0.1+20200227_ad7ec17
-
-# Notes:
-
-# Do not use this if you're packaging a release.
-
-# This script doesn't need to be run as root. It does need to be able
-# to write to the current directory it's run from.
-
-# Running this script twice for the same commit will NOT give identical
-# tarballs, even if the contents are identical. This is because tar
-# includes the current time in a newly-created tarball (plus there may
-# be other git-related reasons).
-
-# Once you've generated a tarball, you'll still need a place to host it.
-# Ask on the mailing list, if you don't have your own web server to
-# play with.
-
-## Config:
-# Github project and user names:
-PRGNAM=straw-viewer
-GITUSER=trizen
-
-# For github projects, you can use this unmodified:
-CLONE_URL=https://github.com/$GITUSER/$PRGNAM.git
-
-# For non-github projects, you might not need GITUSER, in which case
-# just omit it from the script.
-
-## End of config.
-
-set -e
-
-GITDIR=$( mktemp -dt $PRGNAM.git.XXXXXX )
-rm -rf $GITDIR
-git clone $CLONE_URL $GITDIR
-
-CWD="$( pwd )"
-cd $GITDIR
-
-if [ "$1" != "" ]; then
- git reset --hard "$1" || exit 1
-fi
-
-GIT_SHA=$( git rev-parse --short HEAD )
-
-DATE=$( git log --date=format:%Y%m%d --format=%cd | head -1 )
-
-VERTAG=$( git tag -l | tail -1 )
-
-VERSION=${VERTAG}+${DATE}_${GIT_SHA}
-
-rm -rf .git
-find . -name .gitignore -print0 | xargs -0 rm -f
-
-cd "$CWD"
-rm -rf $PRGNAM-$VERSION $PRGNAM-$VERSION.tar.xz
-mv $GITDIR $PRGNAM-$VERSION
-tar cvfJ $PRGNAM-$VERSION.tar.xz $PRGNAM-$VERSION
-
-echo
-echo "Created tarball: $PRGNAM-$VERSION.tar.xz"
-echo "VERSION=\"$VERSION\""
-echo "MD5SUM=\"$( md5sum $PRGNAM-$VERSION.tar.xz | cut -d' ' -f1 )\""
diff --git a/multimedia/straw-viewer/straw-viewer.info b/multimedia/straw-viewer/straw-viewer.info
deleted file mode 100644
index 5144df6a25..0000000000
--- a/multimedia/straw-viewer/straw-viewer.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="straw-viewer"
-VERSION="0.0.2+20200307_9089523"
-HOMEPAGE="https://github.com/trizen/straw-viewer/"
-DOWNLOAD="http://urchlay.naptime.net/~urchlay/src/straw-viewer-0.0.2+20200307_9089523.tar.xz"
-MD5SUM="60675a74c96dd9d7fa0f1096f32977c5"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="perl-data-dump perl-LWP-Protocol-https perl-JSON perl-Module-Build perl-List-MoreUtils"
-MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
diff --git a/multimedia/straw-viewer/straw-viewer.sqf b/multimedia/straw-viewer/straw-viewer.sqf
deleted file mode 100644
index dff04810ae..0000000000
--- a/multimedia/straw-viewer/straw-viewer.sqf
+++ /dev/null
@@ -1,46 +0,0 @@
-perl-html-tagset
-perl-lwp-mediatypes
-perl-http-date
-perl-html-parser
-perl-encode-locale
-perl-IO-HTML
-perl-http-message
-perl-extutils-pkgconfig
-perl-extutils-depends
-perl-www-robotrules
-perl-net-http
-perl-http-negotiate
-perl-http-daemon
-perl-http-cookies
-perl-glib
-perl-file-listing
-perl-common-sense
-perl-cairo
-perl-Net-LibIDN
-Net-SSLeay
-perl-Types-Serialiser
-perl-Test-RequiresInternet
-perl-PAR-Dist
-perl-Mozilla-CA
-perl-MIME-Charset
-perl-List-MoreUtils-XS
-perl-IO-Socket-SSL
-perl-Glib-Object-Introspection
-perl-Exporter-Tiny
-perl-Class-Inspector
-perl-Canary-Stability
-perl-Cairo-GObject
-libwww-perl
-perl-lwp-useragent-cached
-perl-data-dump
-perl-Unicode-LineBreak
-perl-Text-CharWidth
-perl-Term-ReadLine-Gnu
-perl-Module-Build
-perl-List-MoreUtils
-perl-LWP-Protocol-https
-perl-JSON-XS
-perl-JSON
-perl-Gtk3
-perl-File-ShareDir
-straw-viewer
diff --git a/multimedia/strawberry/slack-desc b/multimedia/strawberry/slack-desc
index a61d8a3cac..bbd6c9a6aa 100644
--- a/multimedia/strawberry/slack-desc
+++ b/multimedia/strawberry/slack-desc
@@ -7,13 +7,13 @@
|-----handy-ruler------------------------------------------------------|
strawberry: strawberry (fork of Clementine)
+strawberry: Strawberry is a music player and music collection organizer. It is
+strawberry: aimed at music collectors and audiophiles. With Strawberry you can
+strawberry: play and manage your digital music collection, or stream your
+strawberry: favorite radios. Strawberry is free software released under GPL.
+strawberry: The source code is available on GitHub. It's written in C++ using
+strawberry: the Qt toolkit and GStreamer. Strawberry is compatible with both
+strawberry: Qt version 5 and 6.
strawberry:
-strawberry: Strawberry is a audio player and music collection organizer. It is a
-strawberry: fork of Clementine released in 2018 aimed at music collectors, audio
-strawberry: enthusiasts and audiophiles. The name is inspired by the band
-strawberry: Strawbs. It's based on a heavily modified version of Clementine
-strawberry: created in 2012-2013. It's written in C++ and Qt 5.
-strawberry:
-strawberry:
-strawberry: https://www.strawbs.org/
+strawberry: https://www.strawberrymusicplayer.org/
strawberry:
diff --git a/multimedia/strawberry/strawberry.SlackBuild b/multimedia/strawberry/strawberry.SlackBuild
index 809fc4497c..0668e158e1 100644
--- a/multimedia/strawberry/strawberry.SlackBuild
+++ b/multimedia/strawberry/strawberry.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for strawberry
@@ -26,10 +26,13 @@
# Modified by SlackBuilds.org
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=strawberry
-VERSION=${VERSION:-0.6.8}
+VERSION=${VERSION:-1.0.23}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -39,7 +42,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -102,4 +112,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/strawberry/strawberry.info b/multimedia/strawberry/strawberry.info
index ecf9170e1e..0a41421f33 100644
--- a/multimedia/strawberry/strawberry.info
+++ b/multimedia/strawberry/strawberry.info
@@ -1,10 +1,10 @@
PRGNAM="strawberry"
-VERSION="0.6.8"
+VERSION="1.0.23"
HOMEPAGE="https://www.strawberrymusicplayer.org/"
-DOWNLOAD="https://files.jkvinge.net/packages/strawberry/strawberry-0.6.8.tar.xz"
-MD5SUM="3e4aa26e5d5239626e9a4c62dc15f648"
+DOWNLOAD="https://github.com/strawberrymusicplayer/strawberry/releases/download/1.0.23/strawberry-1.0.23.tar.xz"
+MD5SUM="472f2352e143995a2c324f37c2a3b325"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="chromaprint protobuf cryptopp qt5"
+REQUIRES="chromaprint protobuf3"
MAINTAINER="Matthew Miller"
EMAIL="mattallmill@gmail.com"
diff --git a/multimedia/stream2chromecast/README b/multimedia/stream2chromecast/README
new file mode 100644
index 0000000000..75588b222e
--- /dev/null
+++ b/multimedia/stream2chromecast/README
@@ -0,0 +1,8 @@
+A Chromecast media streamer for Linux.
+Stream2Chromecast casts audio and video files to a Chromecast device
+from Linux. It can also transcode any unsupported files in real time
+and play them on the Chromecast. It is written in Python 2.7 and uses
+either ffmpeg or avconv for transcoding.
+
+Transcoding depends on ffmpeg with aac support, which is not currently
+enabled, so this won't work out of the box.
diff --git a/multimedia/stream2chromecast/slack-desc b/multimedia/stream2chromecast/slack-desc
new file mode 100644
index 0000000000..4942c24bc3
--- /dev/null
+++ b/multimedia/stream2chromecast/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+stream2chromecast: stream2chromecast (A Chromecast media streamer for Linux)
+stream2chromecast:
+stream2chromecast: Stream2Chromecast casts audio and video files to a Chromecast device
+stream2chromecast: from Linux. It can also transcode any unsupported files in real time
+stream2chromecast: and play them on the Chromecast. It is written in Python 2.7 and
+stream2chromecast: uses either ffmpeg or avconv for transcoding.
+stream2chromecast:
+stream2chromecast:
+stream2chromecast:
+stream2chromecast:
+stream2chromecast: https://github.com/dohliam/stream2chromecast
diff --git a/multimedia/stream2chromecast/stream2chromecast.SlackBuild b/multimedia/stream2chromecast/stream2chromecast.SlackBuild
new file mode 100644
index 0000000000..207804c2a6
--- /dev/null
+++ b/multimedia/stream2chromecast/stream2chromecast.SlackBuild
@@ -0,0 +1,101 @@
+#!/bin/bash
+
+# Slackware build script for stream2chromecast
+
+# Copyright SPN Team 2022
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=stream2chromecast
+VERSION=${VERSION:-20190727}
+COMMIT=c5a44df0a04550d75d704e39d822bfaccde16cc7
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$COMMIT
+tar xvf $CWD/$PRGNAM-$COMMIT.tar.gz
+cd $PRGNAM-$COMMIT
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p $PKG/usr/share/$PRGNAM
+cp *.py $PKG/usr/share/$PRGNAM/
+mkdir -p $PKG/usr/bin
+ln -s --relative $PKG/usr/share/$PRGNAM/stream2chromecast.py $PKG/usr/bin/stream2chromecast
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ LICENSE README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/stream2chromecast/stream2chromecast.info b/multimedia/stream2chromecast/stream2chromecast.info
new file mode 100644
index 0000000000..b89156724f
--- /dev/null
+++ b/multimedia/stream2chromecast/stream2chromecast.info
@@ -0,0 +1,10 @@
+PRGNAM="stream2chromecast"
+VERSION="20190727"
+HOMEPAGE="https://github.com/dohliam/stream2chromecast"
+DOWNLOAD="https://github.com/dohliam/stream2chromecast/archive/c5a44df0a04550d75d704e39d822bfaccde16cc7/stream2chromecast-c5a44df0a04550d75d704e39d822bfaccde16cc7.tar.gz"
+MD5SUM="2a516c8d0f02d2fe69dc89eff6fda5f8"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="%README%"
+MAINTAINER="SPN Team"
+EMAIL="pwmn-master@hotmail.com"
diff --git a/multimedia/stremio/README b/multimedia/stremio/README
new file mode 100644
index 0000000000..b971a8eddb
--- /dev/null
+++ b/multimedia/stremio/README
@@ -0,0 +1,10 @@
+Stream videos like a slacker! With this application you can stream
+everything form netflix, HBO, Disney+, AppleTV+, Popcorn Time, Youtube.
+It uses plugins that can be installed by one click in the application.
+You can resume a movie from another device and they don't record you're
+activity. It has all modern features and its a full media center.
+Integrates well with kde and other desktop environments.
+Defaults to wayland and fallback to X11 and uses mpv, qt and js.
+You will have a huge library of movies and you can even stream local
+files or a magnet link from the clipboard, auto download subtitles,
+TV Channels, radio.
diff --git a/multimedia/stremio/doinst.sh b/multimedia/stremio/doinst.sh
new file mode 100644
index 0000000000..6dfc7ee718
--- /dev/null
+++ b/multimedia/stremio/doinst.sh
@@ -0,0 +1,14 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+which_node=$(which node 2>/dev/null)
+if [ $? -eq 0 ]; then
+ ln -sf "$which_node" "/usr/share/stremio/node"
+else
+ ln -sf "/usr/bin/node" "/usr/share/stremio/node"
+fi
diff --git a/multimedia/stremio/no-js-download.patch b/multimedia/stremio/no-js-download.patch
new file mode 100644
index 0000000000..6814b9008f
--- /dev/null
+++ b/multimedia/stremio/no-js-download.patch
@@ -0,0 +1,43 @@
+--- b/release.makefile 2023-04-13 18:46:36.368966456 +0200
++++ a/release.makefile 2023-04-13 18:55:38.068985747 +0200
+@@ -1,6 +1,6 @@
+
+ BUILD_DIR := build
+-INSTALL_DIR := ${PREFIX}/opt/stremio
++INSTALL_DIR := ${PREFIX}/usr/share/stremio
+
+ ICON_BIN := smartcode-stremio.svg
+
+@@ -8,12 +8,13 @@
+
+ STREMIO_BIN := ${BUILD_DIR}/stremio
+
+-ALL: ${STREMIO_BIN} ${SERVER_JS} icons
++ALL: ${STREMIO_BIN} icons
+
+ install:
+ make -C ${BUILD_DIR} install
+ install -Dm 644 ${SERVER_JS} "${INSTALL_DIR}/server.js"
+- install -Dm 644 smartcode-stremio.desktop "${INSTALL_DIR}/smartcode-stremio.desktop"
++ install -Dm 644 stremio.asar "${INSTALL_DIR}/stremio.asar"
++ install -Dm 644 smartcode-stremio.desktop "${INSTALL_DIR}/../applications/com.stremio.stremio.desktop"
+ cp -r icons "${INSTALL_DIR}/"
+- ln -s "${shell which node}" "${INSTALL_DIR}/node"
++
+ ifneq ("$(wildcard ../mpv-build/mpv/build)","")
+@@ -28,14 +29,11 @@
+ mkdir -p "$@"
+ cd "$@" && printf 16,22,24,32,64,128 | xargs -I^ -d, sh -c 'rsvg-convert ../images/stremio.svg -w ^ -o smartcode-stremio_^.png && rsvg-convert ../images/stremio_tray_white.svg -w ^ -o smartcode-stremio-tray_^.png'
+
+-${SERVER_JS}:
+- wget "${shell cat server-url.txt}" -qO ${SERVER_JS} || rm ${SERVER_JS}
+-
+ ${STREMIO_BIN}:
+ mkdir -p ${BUILD_DIR}
+ cd ${BUILD_DIR} && cmake -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}" ..
+ make -j -C ${BUILD_DIR}
+
+ clean:
+- rm -rf ${BUILD_DIR} ${SERVER_JS} icons
++ rm -rf ${BUILD_DIR} icons
+
diff --git a/multimedia/stremio/slack-desc b/multimedia/stremio/slack-desc
new file mode 100644
index 0000000000..81e5c79bc8
--- /dev/null
+++ b/multimedia/stremio/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+stremio: stremio (The Next Generation Media Center)
+stremio:
+stremio: Stremio is a modern media center that's a one-stop solution for your
+stremio: video entertainment. You discover, watch and organize video content
+stremio: from easy to install addons. Movies, TV shows, live TV or web channels
+stremio:
+stremio:
+stremio:
+stremio:
+stremio:
+stremio:
diff --git a/multimedia/stremio/stremio.SlackBuild b/multimedia/stremio/stremio.SlackBuild
new file mode 100644
index 0000000000..9310e4f468
--- /dev/null
+++ b/multimedia/stremio/stremio.SlackBuild
@@ -0,0 +1,111 @@
+#!/bin/bash
+
+# Slackware build script for stremio
+
+# Copyright 2023 Martin BÃ¥ngens Sweden
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=stremio
+VERSION=${VERSION:-4.4.168}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+# git submodules
+CHROMA=99045142479ba0e2fc3b9cccb72e348c67cd5829
+LIBMPV=b0eae77cf6dc59aaf142b7d079cb13a0904fd3ee
+SINGLEAPPLICATION=aede311d28d20179216c5419b581087be2a8409f
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf stremio-shell-$VERSION
+tar xvf $CWD/stremio-shell-$VERSION.tar.gz
+cd stremio-shell-$VERSION
+
+tar xvzf $CWD/razerchroma-$CHROMA.tar.gz --strip-components=1 -C deps/chroma
+tar xvzf $CWD/libmpv-$LIBMPV.tar.gz --strip-components=1 -C deps/libmpv
+tar xvzf $CWD/SingleApplication-$SINGLEAPPLICATION.tar.gz --strip-components=1 -C deps/singleapplication
+
+cp $CWD/server.js server.js
+cp $CWD/stremio.asar stremio.asar
+cat $CWD/no-js-download.patch | patch -Np1 --verbose || exit 1
+sed -i 's|opt/stremio|usr/share/stremio|g' CMakeLists.txt
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+make -f release.makefile PREFIX="$PKG"
+make -f release.makefile PREFIX="$PKG" install
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p "$PKG/usr/bin"
+ln -sf /usr/share/stremio/stremio "$PKG/usr/bin/stremio"
+
+while read -r -d '' _file
+do
+ _res="$(printf '%s' "$_file" | sed 's/\.png$//;s/^.*_//')"
+ mkdir -p "$PKG/usr/share/icons/hicolor/${_res}x${_res}/apps"
+ ln -sf /usr/share/stremio/icons/smartcode-stremio_${_res}.png \
+ "$PKG/usr/share/icons/hicolor/${_res}x${_res}/apps/smartcode-stremio.png"
+ ln -sf /usr/share/stremio/icons/smartcode-stremio-tray_${_res}.png \
+ "$PKG/usr/share/icons/hicolor/${_res}x${_res}/apps/smartcode-stremio-tray.png"
+done < <(find "$PKG/usr/share/stremio/icons" -maxdepth 1 -type f -name 'smartcode-stremio_*.png' -print0)
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ LICENSE.md \
+ README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/stremio/stremio.info b/multimedia/stremio/stremio.info
new file mode 100644
index 0000000000..d95b12458e
--- /dev/null
+++ b/multimedia/stremio/stremio.info
@@ -0,0 +1,20 @@
+PRGNAM="stremio"
+VERSION="4.4.168"
+HOMEPAGE="https://www.stremio.com"
+DOWNLOAD="https://github.com/Stremio/stremio-shell/archive/v4.4.168/stremio-shell-4.4.168.tar.gz \
+ https://github.com/Ivshti/razerchroma/archive/9904514/razerchroma-99045142479ba0e2fc3b9cccb72e348c67cd5829.tar.gz \
+ https://github.com/Ivshti/libmpv/archive/b0eae77/libmpv-b0eae77cf6dc59aaf142b7d079cb13a0904fd3ee.tar.gz \
+ https://github.com/itay-grudev/SingleApplication/archive/aede311/SingleApplication-aede311d28d20179216c5419b581087be2a8409f.tar.gz \
+ https://dl.strem.io/four/v4.4.168/server.js \
+ https://dl.strem.io/four/v4.4.168/stremio.asar"
+MD5SUM="2f535573ed2d140f1adb63828b08df2e \
+ ae4749875770e58021d751aea80acf4b \
+ 1a3c6c3054b171289799bd54b68db6c1 \
+ 1caffe59b5bf00c1ffa8ef2889b86f8b \
+ f69a94ae08b0d4b06e249e3b8ad5396b \
+ 80c5b4cf9d87b97972bc8e5098f44b51"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="mpv nodejs"
+MAINTAINER="Martin BÃ¥ngens"
+EMAIL="marbangens@gmail.com"
diff --git a/multimedia/subtitlecomposer/README b/multimedia/subtitlecomposer/README
deleted file mode 100644
index afd19299eb..0000000000
--- a/multimedia/subtitlecomposer/README
+++ /dev/null
@@ -1,4 +0,0 @@
-subtitlecomposer (A text-based subtitles editor)
-
-A text-based subtitles editor for every platform supported by KDE,
-supporting basic operations as well as advanced tasks.
diff --git a/multimedia/subtitlecomposer/link_gobject.patch b/multimedia/subtitlecomposer/link_gobject.patch
deleted file mode 100644
index 93a69c479f..0000000000
--- a/multimedia/subtitlecomposer/link_gobject.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-# Description: This pacth adds a missing find_package for GObject.
-# Without this patch the package will FTBFS with binutils-gold.
-# Forwarded: http://sourceforge.net/tracker/?func=detail&aid=2897376&group_id=208427&atid=1005654
-# Author: José Manuel Santamaría Lema <panfaust@gmail.com>
-#
---- subtitlecomposer-0.5.3.orig/src/player/gstreamer/CMakeLists.txt
-+++ subtitlecomposer-0.5.3/src/player/gstreamer/CMakeLists.txt
-@@ -1,6 +1,7 @@
- # TODO WHY AREN'T THESE INCLUDED BY MACRO_OPTIONAL_FIND_PACKAGE( GStreamer )?
- FIND_PACKAGE( GLIB2 REQUIRED )
- FIND_PACKAGE( LibXml2 REQUIRED )
-+FIND_PACKAGE( GObject REQUIRED )
-
- SET( players_gstreamer_INCLUDE_DIR
- ${GLIB2_INCLUDE_DIR}
diff --git a/multimedia/subtitlecomposer/subtitlecomposer-build-fixes.patch b/multimedia/subtitlecomposer/subtitlecomposer-build-fixes.patch
deleted file mode 100644
index b7e6a7ca5c..0000000000
--- a/multimedia/subtitlecomposer/subtitlecomposer-build-fixes.patch
+++ /dev/null
@@ -1,258 +0,0 @@
-diff -ruN subtitlecomposer-0.5.3-old/src/config/appconfig.cpp subtitlecomposer-0.5.3/src/config/appconfig.cpp
---- subtitlecomposer-0.5.3-old/src/config/appconfig.cpp 2009-02-25 23:46:09.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/config/appconfig.cpp 2010-05-31 19:38:02.402837345 +0200
-@@ -120,7 +120,7 @@
- return m_groups.contains( name ) ? m_groups[name] : 0;
- }
-
--const AppConfigGroup* const AppConfig::group( const QString& name ) const
-+const AppConfigGroup* AppConfig::group( const QString& name ) const
- {
- return m_groups.contains( name ) ? m_groups[name] : 0;
- }
-diff -ruN subtitlecomposer-0.5.3-old/src/config/appconfiggroupwidget.cpp subtitlecomposer-0.5.3/src/config/appconfiggroupwidget.cpp
---- subtitlecomposer-0.5.3-old/src/config/appconfiggroupwidget.cpp 2009-02-25 23:46:09.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/config/appconfiggroupwidget.cpp 2010-05-31 19:35:25.526185415 +0200
-@@ -39,7 +39,7 @@
- delete m_config;
- }
-
--const AppConfigGroup* const AppConfigGroupWidget::config()
-+const AppConfigGroup* AppConfigGroupWidget::config()
- {
- return m_config;
- }
-diff -ruN subtitlecomposer-0.5.3-old/src/config/appconfiggroupwidget.h subtitlecomposer-0.5.3/src/config/appconfiggroupwidget.h
---- subtitlecomposer-0.5.3-old/src/config/appconfiggroupwidget.h 2009-02-25 23:46:09.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/config/appconfiggroupwidget.h 2010-05-31 19:35:20.630352728 +0200
-@@ -43,7 +43,7 @@
- explicit AppConfigGroupWidget( AppConfigGroup* configGroup, QWidget* parent=0 );
- virtual ~AppConfigGroupWidget();
-
-- const AppConfigGroup* const config();
-+ const AppConfigGroup* config();
-
- signals:
-
-diff -ruN subtitlecomposer-0.5.3-old/src/config/appconfig.h subtitlecomposer-0.5.3/src/config/appconfig.h
---- subtitlecomposer-0.5.3-old/src/config/appconfig.h 2009-02-25 23:46:09.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/config/appconfig.h 2010-05-31 19:37:54.703670415 +0200
-@@ -58,7 +58,7 @@
- void writeTo( KSharedConfig* config ) const;
-
- AppConfigGroup* group( const QString& name );
-- const AppConfigGroup* const group( const QString& name ) const;
-+ const AppConfigGroup* group( const QString& name ) const;
-
- void setGroup( AppConfigGroup* group ); /// ownership is transferred to this object
- AppConfigGroup* removeGroup( const QString& name ); /// ownership is transferred to the caller
-diff -ruN subtitlecomposer-0.5.3-old/src/core/sstring.cpp subtitlecomposer-0.5.3/src/core/sstring.cpp
---- subtitlecomposer-0.5.3-old/src/core/sstring.cpp 2009-05-24 23:56:30.000000000 +0200
-+++ subtitlecomposer-0.5.3/src/core/sstring.cpp 2010-05-31 19:03:39.173876937 +0200
-@@ -1112,7 +1112,7 @@
- append( str );
- }
-
--SStringList::SStringList( const SStringList::SStringList& list ):
-+SStringList::SStringList( const SStringList& list ):
- QList<SString>( list )
- {
- }
-diff -ruN subtitlecomposer-0.5.3-old/src/core/subtitleactions.cpp subtitlecomposer-0.5.3/src/core/subtitleactions.cpp
---- subtitlecomposer-0.5.3-old/src/core/subtitleactions.cpp 2009-02-25 23:46:11.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/core/subtitleactions.cpp 2010-05-31 19:35:47.497016112 +0200
-@@ -136,7 +136,7 @@
-
- SubtitleLine* line;
- int insertOffset = 0;
-- int lineIndex;
-+ int lineIndex = 0;
- while ( ! m_lines.isEmpty() )
- {
- line = m_lines.takeFirst();
-@@ -242,7 +242,7 @@
- emit m_subtitle.linesAboutToBeInserted( m_firstIndex, m_lastIndex );
-
- int insertOffset = 0;
-- int lineIndex;
-+ int lineIndex = 0;
- while ( ! m_lines.isEmpty() )
- {
- SubtitleLine* line = m_lines.takeFirst();
-diff -ruN subtitlecomposer-0.5.3-old/src/core/subtitle.cpp subtitlecomposer-0.5.3/src/core/subtitle.cpp
---- subtitlecomposer-0.5.3-old/src/core/subtitle.cpp 2009-05-24 10:08:53.000000000 +0200
-+++ subtitlecomposer-0.5.3/src/core/subtitle.cpp 2010-05-31 19:36:33.366179618 +0200
-@@ -216,7 +216,7 @@
- }
- }
-
--FormatData* const Subtitle::formatData() const
-+FormatData* Subtitle::formatData() const
- {
- return m_formatData;
- }
-@@ -1201,7 +1201,7 @@
- return;
-
- int splitIndex = -1; // the index of the first line to move (or copy) to dstSub
-- bool splitsLine; // splitTime falls in within a line's time
-+ bool splitsLine = false; // splitTime falls in within a line's time
-
- QList<SubtitleLine*> lines;
- for ( SubtitleIterator it( *this, Range::full() ); it.current(); ++it )
-diff -ruN subtitlecomposer-0.5.3-old/src/core/subtitle.h subtitlecomposer-0.5.3/src/core/subtitle.h
---- subtitlecomposer-0.5.3-old/src/core/subtitle.h 2009-03-05 03:56:25.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/core/subtitle.h 2010-05-31 19:36:28.420346163 +0200
-@@ -183,7 +183,7 @@
-
- private:
-
-- FormatData* const formatData() const;
-+ FormatData* formatData() const;
- void setFormatData( const FormatData* formatData );
-
- void beginCompositeAction( const QString& title, bool immediateExecution=true, bool delaySignals=true );
-diff -ruN subtitlecomposer-0.5.3-old/src/core/subtitleline.cpp subtitlecomposer-0.5.3/src/core/subtitleline.cpp
---- subtitlecomposer-0.5.3-old/src/core/subtitleline.cpp 2009-03-03 05:16:07.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/core/subtitleline.cpp 2010-05-31 19:35:54.000000000 +0200
-@@ -289,7 +289,7 @@
- }
-
-
--FormatData* const SubtitleLine::formatData() const
-+FormatData* SubtitleLine::formatData() const
- {
- return m_formatData;
- }
-diff -ruN subtitlecomposer-0.5.3-old/src/core/subtitleline.h subtitlecomposer-0.5.3/src/core/subtitleline.h
---- subtitlecomposer-0.5.3-old/src/core/subtitleline.h 2009-03-03 05:16:07.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/core/subtitleline.h 2010-05-31 19:36:02.793682498 +0200
-@@ -247,7 +247,7 @@
-
- private:
-
-- FormatData* const formatData() const;
-+ FormatData* formatData() const;
- void setFormatData( const FormatData* formatData );
-
- void processAction( Action* action );
-diff -ruN subtitlecomposer-0.5.3-old/src/player/gstreamer/gstreamerbackend.cpp subtitlecomposer-0.5.3/src/player/gstreamer/gstreamerbackend.cpp
---- subtitlecomposer-0.5.3-old/src/player/gstreamer/gstreamerbackend.cpp 2009-02-25 23:46:17.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/player/gstreamer/gstreamerbackend.cpp 2010-05-31 19:37:23.237008638 +0200
-@@ -596,7 +596,7 @@
- params = g_object_class_list_properties( G_OBJECT_GET_CLASS( GST_ELEMENT( object ) ), &length );
- for ( guint index = 0; index < length; ++index )
- {
-- gchar* strValue;
-+ gchar* strValue = 0;
-
- if ( params[index]->flags & G_PARAM_READABLE )
- {
-diff -ruN subtitlecomposer-0.5.3-old/src/player/gstreamer/gstreamerbackend.h subtitlecomposer-0.5.3/src/player/gstreamer/gstreamerbackend.h
---- subtitlecomposer-0.5.3-old/src/player/gstreamer/gstreamerbackend.h 2009-02-25 23:46:17.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/player/gstreamer/gstreamerbackend.h 2010-05-31 19:34:31.977024143 +0200
-@@ -47,7 +47,7 @@
- GStreamerBackend( Player* player );
- virtual ~GStreamerBackend();
-
-- const GStreamerConfig* const config() { return static_cast<const GStreamerConfig* const>( PlayerBackend::config() ); }
-+ const GStreamerConfig* config() { return static_cast<const GStreamerConfig* const>( PlayerBackend::config() ); }
-
- virtual AppConfigGroupWidget* newAppConfigGroupWidget( QWidget* parent );
-
-diff -ruN subtitlecomposer-0.5.3-old/src/player/mplayer/mplayerbackend.h subtitlecomposer-0.5.3/src/player/mplayer/mplayerbackend.h
---- subtitlecomposer-0.5.3-old/src/player/mplayer/mplayerbackend.h 2009-02-25 23:46:17.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/player/mplayer/mplayerbackend.h 2010-05-31 19:34:38.849523428 +0200
-@@ -45,7 +45,7 @@
- MPlayerBackend( Player* player );
- virtual ~MPlayerBackend();
-
-- const MPlayerConfig* const config() { return static_cast<const MPlayerConfig* const>( PlayerBackend::config() ); }
-+ const MPlayerConfig* config() { return static_cast<const MPlayerConfig* const>( PlayerBackend::config() ); }
-
- virtual AppConfigGroupWidget* newAppConfigGroupWidget( QWidget* parent );
-
-diff -ruN subtitlecomposer-0.5.3-old/src/player/phonon/phononbackend.h subtitlecomposer-0.5.3/src/player/phonon/phononbackend.h
---- subtitlecomposer-0.5.3-old/src/player/phonon/phononbackend.h 2009-02-25 23:46:16.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/player/phonon/phononbackend.h 2010-05-31 19:34:44.607023515 +0200
-@@ -53,7 +53,7 @@
- PhononBackend( Player* player );
- virtual ~PhononBackend();
-
-- const PhononConfig* const config() { return static_cast<const PhononConfig* const>( PlayerBackend::config() ); }
-+ const PhononConfig* config() { return static_cast<const PhononConfig* const>( PlayerBackend::config() ); }
-
- virtual AppConfigGroupWidget* newAppConfigGroupWidget( QWidget* parent );
-
-diff -ruN subtitlecomposer-0.5.3-old/src/player/playerbackend.h subtitlecomposer-0.5.3/src/player/playerbackend.h
---- subtitlecomposer-0.5.3-old/src/player/playerbackend.h 2009-02-25 23:46:17.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/player/playerbackend.h 2010-05-31 19:34:18.996192330 +0200
-@@ -48,7 +48,7 @@
- PlayerBackend( Player* player, AppConfigGroup* config );
- virtual ~PlayerBackend();
-
-- const AppConfigGroup* const config() const { return m_config; }
-+ const AppConfigGroup* config() const { return m_config; }
-
- /// If possible (i.e., configs are compatible), copies the config object into
- /// the player backend config. Ownership of config object it's not transferred.
-diff -ruN subtitlecomposer-0.5.3-old/src/player/player.cpp subtitlecomposer-0.5.3/src/player/player.cpp
---- subtitlecomposer-0.5.3-old/src/player/player.cpp 2009-02-25 23:46:17.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/player/player.cpp 2010-05-31 19:38:38.306165999 +0200
-@@ -82,7 +82,7 @@
- {
- }
-
--Player* const Player::instance()
-+Player* Player::instance()
- {
- static Player player;
-
-diff -ruN subtitlecomposer-0.5.3-old/src/player/player.h subtitlecomposer-0.5.3/src/player/player.h
---- subtitlecomposer-0.5.3-old/src/player/player.h 2009-02-25 23:46:17.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/player/player.h 2010-05-31 19:38:31.893666505 +0200
-@@ -53,7 +53,7 @@
- Ready // same as Stopped or Finished
- } State;
-
-- static Player* const instance();
-+ static Player* instance();
-
- inline VideoWidget* videoWidget();
-
-diff -ruN subtitlecomposer-0.5.3-old/src/player/xine/xinebackend.h subtitlecomposer-0.5.3/src/player/xine/xinebackend.h
---- subtitlecomposer-0.5.3-old/src/player/xine/xinebackend.h 2009-02-25 23:46:16.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/player/xine/xinebackend.h 2010-05-31 19:34:49.336188698 +0200
-@@ -51,7 +51,7 @@
- XineBackend( Player* player );
- virtual ~XineBackend();
-
-- const XineConfig* const config() { return static_cast<const XineConfig* const>( PlayerBackend::config() ); }
-+ const XineConfig* config() { return static_cast<const XineConfig* const>( PlayerBackend::config() ); }
-
- virtual AppConfigGroupWidget* newAppConfigGroupWidget( QWidget* parent );
-
-diff -ruN subtitlecomposer-0.5.3-old/src/widgets/simplerichtextedit.cpp subtitlecomposer-0.5.3/src/widgets/simplerichtextedit.cpp
---- subtitlecomposer-0.5.3-old/src/widgets/simplerichtextedit.cpp 2009-02-25 23:46:10.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/widgets/simplerichtextedit.cpp 2010-05-31 19:42:18.002811365 +0200
-@@ -176,7 +176,7 @@
- delete m_insertUnicodeControlCharMenu->parent();
- }
-
--KAction* const SimpleRichTextEdit::action( int action ) const
-+KAction* SimpleRichTextEdit::action( int action ) const
- {
- return action >= 0 && action < ActionCount ? m_actions[action] : 0;
- }
-diff -ruN subtitlecomposer-0.5.3-old/src/widgets/simplerichtextedit.h subtitlecomposer-0.5.3/src/widgets/simplerichtextedit.h
---- subtitlecomposer-0.5.3-old/src/widgets/simplerichtextedit.h 2009-02-25 23:46:10.000000000 +0100
-+++ subtitlecomposer-0.5.3/src/widgets/simplerichtextedit.h 2010-05-31 19:42:11.763644715 +0200
-@@ -60,7 +60,7 @@
- bool fontBold();
- bool fontStrikeOut();
-
-- virtual KAction* const action( int action ) const;
-+ virtual KAction* action( int action ) const;
-
- virtual bool event( QEvent* event );
-
diff --git a/multimedia/subtitlecomposer/subtitlecomposer-linkage.patch b/multimedia/subtitlecomposer/subtitlecomposer-linkage.patch
deleted file mode 100644
index 62f572e67a..0000000000
--- a/multimedia/subtitlecomposer/subtitlecomposer-linkage.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- subtitlecomposer-0.5.3/src/main/CMakeLists.txt.orig 2009-04-17 15:09:12.000000000 -0400
-+++ subtitlecomposer-0.5.3/src/main/CMakeLists.txt 2010-01-12 01:19:25.000000000 -0500
-@@ -46,6 +46,8 @@
- ${KDE4_KDEUI_LIBS}
- ${KDE4_KHTML_LIBS}
- ${KDE4_KFILE_LIBS}
-+ ${KDE4_PHONON_LIBS}
-+ ${KDE4_KROSSCORE_LIBS}
- ${KDE4_KROSSUI_LIBS}
- ${common_LIBS}
- ${config_LIBS}
diff --git a/multimedia/subtitlecomposer/subtitlecomposer.SlackBuild b/multimedia/subtitlecomposer/subtitlecomposer.SlackBuild
deleted file mode 100644
index 44ab453d81..0000000000
--- a/multimedia/subtitlecomposer/subtitlecomposer.SlackBuild
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for Subtitle Composer
-
-# Maintained by Klaatu @member.fsf.org
-# Written by Pablo Santamaria (pablosantamaria@gmail.com)
-
-PRGNAM=subtitlecomposer
-VERSION=${VERSION:-0.5.3}
-BUILD=${BUILD:-3}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-patch -p1 < $CWD/subtitlecomposer-build-fixes.patch
-patch -p1 < $CWD/subtitlecomposer-linkage.patch
-patch -p1 < $CWD/link_gobject.patch
-
-mkdir build
-cd build
-
-LDFLAGS="-lX11" \
-cmake -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
- -DLIB_SUFFIX="$LIBDIRSUFFIX" \
- -DCMAKE_BUILD_TYPE="release" \
- ..
-
-make
-make install DESTDIR=$PKG
-
-cd ../
-
-# Fix api install files
-cp src/main/scripting/scripting_*.h $PKG/usr/share/apps/subtitlecomposer
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS TODO ChangeLog $PKG/usr/doc/$PRGNAM-$VERSION
-chmod 0644 $PKG/usr/doc/$PRGNAM-$VERSION/*
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -p -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/subtitlecomposer/subtitlecomposer.info b/multimedia/subtitlecomposer/subtitlecomposer.info
deleted file mode 100644
index b880f50023..0000000000
--- a/multimedia/subtitlecomposer/subtitlecomposer.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="subtitlecomposer"
-VERSION="0.5.3"
-HOMEPAGE="http://subcomposer.sourceforge.net/"
-DOWNLOAD="http://download.sourceforge.net/subcomposer/subtitlecomposer-0.5.3.tar.bz2"
-MD5SUM="f660ed2ce4490a8705c883a9c57e39e5"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Klaatu"
-EMAIL="klaatu@member.fsf.org"
diff --git a/multimedia/subtitleeditor/README b/multimedia/subtitleeditor/README
index b349922655..ea57f4d244 100644
--- a/multimedia/subtitleeditor/README
+++ b/multimedia/subtitleeditor/README
@@ -1,4 +1,5 @@
-Subtitle Editor is a GTK+2 tool to edit subtitles for GNU/Linux and *BSD.
+Subtitle Editor is a GTK+2 tool to edit subtitles for GNU/Linux and
+*BSD.
It can be used for new subtitles or as a tool to transform, edit,
correct and refine existing subtitle. This program also shows sound
diff --git a/multimedia/subtitleeditor/subtitleeditor.SlackBuild b/multimedia/subtitleeditor/subtitleeditor.SlackBuild
index 4d941c98c8..a7efd04c30 100644
--- a/multimedia/subtitleeditor/subtitleeditor.SlackBuild
+++ b/multimedia/subtitleeditor/subtitleeditor.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for subtitleeditor
# Copyright (C) 2010 Georgy Shepelev <geo.shepelev@gmail.com>
+# Copyright (C) 2020 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,26 +23,36 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=subtitleeditor
-VERSION=${VERSION:-0.52.1}
+VERSION=${VERSION:-20191130_4c215f4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -69,13 +80,9 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# https://gna.org/bugs/?23714
-patch -p0 < $CWD/fix-23714-cxx11-v2.patch
-
-autoreconf -fi
-
CFLAGS="$SLKCFLAGS" \
-./configure \
+CXXFLAGS="$SLKCFLAGS" \
+./autogen.sh \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
@@ -105,9 +112,11 @@ done
find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/subtitleeditor/subtitleeditor.info b/multimedia/subtitleeditor/subtitleeditor.info
index b553c7d07f..fc9e2d5068 100644
--- a/multimedia/subtitleeditor/subtitleeditor.info
+++ b/multimedia/subtitleeditor/subtitleeditor.info
@@ -1,8 +1,8 @@
PRGNAM="subtitleeditor"
-VERSION="0.52.1"
-HOMEPAGE="https://launchpad.net/subtitleeditor"
-DOWNLOAD="http://ponce.cc/slackware/sources/repo/subtitleeditor-0.52.1.tar.gz"
-MD5SUM="d25a3f6966f4d6355485d3dfbcfb437a"
+VERSION="20191130_4c215f4"
+HOMEPAGE="http://kitone.github.io/subtitleeditor/"
+DOWNLOAD="http://ponce.cc/slackware/sources/repo/subtitleeditor-20191130_4c215f4.tar.xz"
+MD5SUM="3a29d641369031b32f93536f9e59fcd5"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="gstreamermm libxml++"
diff --git a/multimedia/subtitleripper/README b/multimedia/subtitleripper/README
index 786c35ddfa..74da1774c6 100644
--- a/multimedia/subtitleripper/README
+++ b/multimedia/subtitleripper/README
@@ -1,11 +1,12 @@
DVD Subtitle Ripper for Linux
-If you want to convert DVD subtitles into text format (e.g. subrip format) or
-VobSub format this program could be useful for you. However, it is only one
-tiny tool that you need in the process of producing srt files. This software
-depends heavily on transcode for its input and is therefore part of the
-transcode package (see transcode's contrib directory). So, if you want to
-convert some subtitles, grap a copy of the lates transcode distribution.
+If you want to convert DVD subtitles into text format (e.g. subrip
+format) or VobSub format this program could be useful for
+you. However, it is only one tiny tool that you need in the process
+of producing srt files. This software depends heavily on transcode
+for its input and is therefore part of the transcode package (see
+transcode's contrib directory). So, if you want to convert some
+subtitles, grap a copy of the latest transcode distribution.
For srt file production the output of this program should be processed
by some OCR software.
diff --git a/multimedia/subtitleripper/subtitleripper.SlackBuild b/multimedia/subtitleripper/subtitleripper.SlackBuild
index f6ede247b5..ba8d4d3a49 100644
--- a/multimedia/subtitleripper/subtitleripper.SlackBuild
+++ b/multimedia/subtitleripper/subtitleripper.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for subtitleripper
@@ -24,11 +24,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=subtitleripper
VERSION=${VERSION:-0.3_4}
SRCVER=$(printf $VERSION |sed 's/_/-/')
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -38,7 +41,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -95,4 +105,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/svt-av1/README b/multimedia/svt-av1/README
new file mode 100644
index 0000000000..1fdb84c1d0
--- /dev/null
+++ b/multimedia/svt-av1/README
@@ -0,0 +1,4 @@
+The Scalable video technology for AV1 compliant
+encoder and decoder.
+
+This is an optional dependency for FFmpeg.
diff --git a/multimedia/svt-av1/changelog b/multimedia/svt-av1/changelog
new file mode 100644
index 0000000000..7a9d90ac55
--- /dev/null
+++ b/multimedia/svt-av1/changelog
@@ -0,0 +1,26 @@
+Changelog for SVT-AV1 SlackBuild Script
+--------------------------------------------------------------------
+
+27/08/2022:
+
+Added to slackbuilds.org
+
+26/11/2022:
+
+Gitlab tag handling fixed by Andrew Clemons
+
+18/02/2023:
+
+Slackbuild script template fixed by B.Watson
+
+12/05/2023:
+
+Updated to version 1.5.0
+
+06/02/2024:
+
+Updated to version 1.8.0
+
+23/04/2024:
+
+Updated to version 2.0.0
diff --git a/multimedia/OpenPHT/slack-desc b/multimedia/svt-av1/slack-desc
index 1bf3791fe0..256f59db6e 100644
--- a/multimedia/OpenPHT/slack-desc
+++ b/multimedia/svt-av1/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-OpenPHT: OpenPHT (Plex client)
-OpenPHT:
-OpenPHT: OpenPHT is a fork of Plex Home Theater maintained by the folks
-OpenPHT: behind RasPlex.
-OpenPHT:
-OpenPHT: Homepage: https://github.com/RasPlex/OpenPHT
-OpenPHT:
-OpenPHT:
-OpenPHT:
-OpenPHT:
-OpenPHT:
+svt-av1: svt-av1 (SVT-AV1 Encoder and Decoder)
+svt-av1:
+svt-av1: The Scalable video technology for AV1 compliant
+svt-av1: encoder and decoder.
+svt-av1:
+svt-av1: Homepage https://gitlab.com/AOMediaCodec/SVT-AV1
+svt-av1:
+svt-av1:
+svt-av1:
+svt-av1:
+svt-av1:
diff --git a/multimedia/svt-av1/svt-av1.SlackBuild b/multimedia/svt-av1/svt-av1.SlackBuild
new file mode 100644
index 0000000000..7ed3a966e9
--- /dev/null
+++ b/multimedia/svt-av1/svt-av1.SlackBuild
@@ -0,0 +1,109 @@
+#!/bin/bash
+
+# Slackware build script for SVT-AV1
+
+# Copyright 2022-2024 Vijay Marcel
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=svt-av1
+VERSION=${VERSION:-2.0.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+DIR=${DIR:-SVT-AV1-v2.0.0}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i586 ;;
+ arm*) export ARCH=arm ;;
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-march=i586 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-march=i686 -mtune=i686 -pipe -O2 -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-march=x86-64 -mtune=generic -pipe -O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $DIR
+tar xvf $CWD/$DIR.tar.gz
+cd $DIR
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+
+export LDFLAGS+=' -Wl,-z,noexecstack'
+cmake -B build -S $TMP/$DIR \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_BUILD_TYPE:STRING=Release \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_INSTALL_LIBDIR:PATH=/usr/lib${LIBDIRSUFFIX} \
+ -Wno-dev
+
+make -C build
+make -C build install DESTDIR=$PKG
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a CONTRIBUTING.md CHANGELOG.md PATENTS.md LICENSE.md LICENSE-BSD2.md STYLE.md README.md Docs $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/svt-av1/svt-av1.info b/multimedia/svt-av1/svt-av1.info
new file mode 100644
index 0000000000..2ab059c95e
--- /dev/null
+++ b/multimedia/svt-av1/svt-av1.info
@@ -0,0 +1,10 @@
+PRGNAM="svt-av1"
+VERSION="2.0.0"
+HOMEPAGE="https://gitlab.com/AOMediaCodec/SVT-AV1/"
+DOWNLOAD="https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v2.0.0/SVT-AV1-v2.0.0.tar.gz"
+MD5SUM="8ed7d1859108ef57985507a94c749172"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/svt-hevc/README b/multimedia/svt-hevc/README
new file mode 100644
index 0000000000..834e9085ec
--- /dev/null
+++ b/multimedia/svt-hevc/README
@@ -0,0 +1,6 @@
+ The Scalable Video Technology for HEVC Encoder (SVT-HEVC Encoder) is
+an HEVC-compliant encoder library core that achieves excellent
+density-quality tradeoffs, and is highly optimized for Intel Xeon
+Scalable Processor and Xeon D processors.
+
+ Optional, for building with march=native flag set NATIVE=yes
diff --git a/multimedia/svt-hevc/slack-desc b/multimedia/svt-hevc/slack-desc
new file mode 100644
index 0000000000..a1e4fdfc38
--- /dev/null
+++ b/multimedia/svt-hevc/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+svt-hevc: svt-hevc (HEVC-compliant encoder library, optimized for Intel Xeon)
+svt-hevc:
+svt-hevc:
+svt-hevc:
+svt-hevc: The Scalable Video Technology for HEVC Encoder (SVT-HEVC Encoder)
+svt-hevc: is an HEVC-compliant encoder library core that achieves excellent
+svt-hevc: density-quality tradeoffs, and is highly optimized for Intel Xeon
+svt-hevc: Scalable Processor and Xeon D processors.
+svt-hevc:
+svt-hevc:
+svt-hevc:
diff --git a/multimedia/svt-hevc/svt-hevc.SlackBuild b/multimedia/svt-hevc/svt-hevc.SlackBuild
new file mode 100644
index 0000000000..265a1382a2
--- /dev/null
+++ b/multimedia/svt-hevc/svt-hevc.SlackBuild
@@ -0,0 +1,120 @@
+#!/bin/bash
+
+# Slackware build script for svt-hevc
+
+# Copyright 2022 William PC - Seattle, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=svt-hevc
+VERSION=${VERSION:-1.5.1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf SVT-HEVC-$VERSION
+tar xvf $CWD/SVT-HEVC-$VERSION.tar.gz
+cd SVT-HEVC-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+
+# enable march=native
+if [ "${NATIVE:-no}" == "yes" ];then
+ OPTS="-DNATIVE=ON"
+fi
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} \
+ -DCMAKE_INSTALL_MANDIR=/usr/man \
+ -DBUILD_SHARED_LIBS=ON \
+ $OPTS \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ LICENSE.md NOTICES.md README.md Docs \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/svt-hevc/svt-hevc.info b/multimedia/svt-hevc/svt-hevc.info
new file mode 100644
index 0000000000..db406e6a37
--- /dev/null
+++ b/multimedia/svt-hevc/svt-hevc.info
@@ -0,0 +1,10 @@
+PRGNAM="svt-hevc"
+VERSION="1.5.1"
+HOMEPAGE="https://01.org/sv"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/OpenVisualCloud/SVT-HEVC/archive/v1.5.1/SVT-HEVC-1.5.1.tar.gz"
+MD5SUM_x86_64="cc41d3975610781f70527faa567c6a30"
+REQUIRES=""
+MAINTAINER="William PC"
+EMAIL="w_calandrini[at]hotmail[dot]com"
diff --git a/multimedia/svt-vp9/README b/multimedia/svt-vp9/README
new file mode 100644
index 0000000000..4d0f069ac1
--- /dev/null
+++ b/multimedia/svt-vp9/README
@@ -0,0 +1,6 @@
+ The Scalable Video Technology for VP9 Encoder (SVT-VP9 Encoder) is
+a VP9-compliant encoder library core. The SVT-VP9 Encoder development
+is a work-in-progress targeting performance levels applicable to both
+VOD and Live encoding/transcoding video applications.
+
+ Optional, for building with march=native flag set NATIVE=yes
diff --git a/multimedia/svt-vp9/slack-desc b/multimedia/svt-vp9/slack-desc
new file mode 100644
index 0000000000..14c716e3e5
--- /dev/null
+++ b/multimedia/svt-vp9/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+svt-vp9: svt-vp9 (VP9-compliant encoder library, optimized for Intel Xeon)
+svt-vp9:
+svt-vp9:
+svt-vp9:
+svt-vp9: The Scalable Video Technology for VP9 Encoder (SVT-VP9 Encoder) is
+svt-vp9: a VP9-compliant encoder library core. The SVT-VP9 Encoder development
+svt-vp9: is a work-in-progress targeting performance levels applicable to both
+svt-vp9: VOD and Live encoding/transcoding video applications.
+svt-vp9:
+svt-vp9:
+svt-vp9:
diff --git a/multimedia/svt-vp9/svt-vp9.SlackBuild b/multimedia/svt-vp9/svt-vp9.SlackBuild
new file mode 100644
index 0000000000..5434772ce4
--- /dev/null
+++ b/multimedia/svt-vp9/svt-vp9.SlackBuild
@@ -0,0 +1,120 @@
+#!/bin/bash
+
+# Slackware build script for svt-vp9
+
+# Copyright 2022 William PC - Seattle, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=svt-vp9
+VERSION=${VERSION:-0.3.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf SVT-VP9-$VERSION
+tar xvf $CWD/SVT-VP9-$VERSION.tar.gz
+cd SVT-VP9-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+
+# enable march=native
+if [ "${NATIVE:-no}" == "yes" ];then
+ OPTS="-DNATIVE=ON"
+fi
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} \
+ -DCMAKE_INSTALL_MANDIR=/usr/man \
+ -DBUILD_SHARED_LIBS=ON \
+ $OPTS \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ LICENSE.md NOTICES.md README.md Docs \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/svt-vp9/svt-vp9.info b/multimedia/svt-vp9/svt-vp9.info
new file mode 100644
index 0000000000..3491239ce8
--- /dev/null
+++ b/multimedia/svt-vp9/svt-vp9.info
@@ -0,0 +1,10 @@
+PRGNAM="svt-vp9"
+VERSION="0.3.0"
+HOMEPAGE="https://01.org/sv"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/OpenVisualCloud/SVT-VP9/archive/v0.3.0/SVT-VP9-0.3.0.tar.gz"
+MD5SUM_x86_64="1490ef3d1ce01ff06fd289a0df46870f"
+REQUIRES=""
+MAINTAINER="William PC"
+EMAIL="w_calandrini[at]hotmail[dot]com"
diff --git a/multimedia/tabu_audio_player/tabu_audio_player.SlackBuild b/multimedia/tabu_audio_player/tabu_audio_player.SlackBuild
index acd1985306..5edd525750 100644
--- a/multimedia/tabu_audio_player/tabu_audio_player.SlackBuild
+++ b/multimedia/tabu_audio_player/tabu_audio_player.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for Tabu Audio Player
@@ -24,10 +24,13 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=tabu_audio_player
VERSION=${VERSION:-2.0}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -37,7 +40,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -98,4 +108,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/tabu_audio_player/tabu_audio_player.info b/multimedia/tabu_audio_player/tabu_audio_player.info
index bdeb9a733d..2d800ae48f 100644
--- a/multimedia/tabu_audio_player/tabu_audio_player.info
+++ b/multimedia/tabu_audio_player/tabu_audio_player.info
@@ -5,6 +5,6 @@ DOWNLOAD="http://ftp.mirrorservice.org/sites/download.salixos.org/i486/13.0/sour
MD5SUM="783e2e2d6da7a8958b91e3763c00d39b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="gstreamer0"
MAINTAINER="Luciano Tropea"
EMAIL="luxiano.a2000@gmail.com"
diff --git a/multimedia/telepathy-farstream/telepathy-farstream.SlackBuild b/multimedia/telepathy-farstream/telepathy-farstream.SlackBuild
index 782aad55b7..7f245ed73d 100644
--- a/multimedia/telepathy-farstream/telepathy-farstream.SlackBuild
+++ b/multimedia/telepathy-farstream/telepathy-farstream.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for telepathy-farstream
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=telepathy-farstream
VERSION=${VERSION:-0.6.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -89,8 +99,10 @@ mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a ChangeLog* COPYING NEWS README* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/telepathy-glib/telepathy-glib.SlackBuild b/multimedia/telepathy-glib/telepathy-glib.SlackBuild
index fb376273a9..859cfe49ca 100644
--- a/multimedia/telepathy-glib/telepathy-glib.SlackBuild
+++ b/multimedia/telepathy-glib/telepathy-glib.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for telepathy-glib
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=telepathy-glib
VERSION=${VERSION:-0.24.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -94,9 +104,11 @@ mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a AUTHORS ChangeLog* COPYING NEWS README* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/telepathy-glib/telepathy-glib.info b/multimedia/telepathy-glib/telepathy-glib.info
index 89d42e200b..1ea41dee66 100644
--- a/multimedia/telepathy-glib/telepathy-glib.info
+++ b/multimedia/telepathy-glib/telepathy-glib.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://telepathy.freedesktop.org/releases/telepathy-glib/telepathy-gl
MD5SUM="cbeb0a24acc26e7f095be281c324da69"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="farstream"
+REQUIRES=""
MAINTAINER="Thorn Inurcide"
EMAIL="thorn_inurcide@zoho.com"
diff --git a/multimedia/telepathy-qt/telepathy-qt.SlackBuild b/multimedia/telepathy-qt/telepathy-qt.SlackBuild
index 4a584dcc1e..6e99964aed 100644
--- a/multimedia/telepathy-qt/telepathy-qt.SlackBuild
+++ b/multimedia/telepathy-qt/telepathy-qt.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for telepathy-qt
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=telepathy-qt
VERSION=${VERSION:-0.9.7}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -96,4 +106,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/telepathy-qt/telepathy-qt.info b/multimedia/telepathy-qt/telepathy-qt.info
index 07fc99aa62..683f4bbdc3 100644
--- a/multimedia/telepathy-qt/telepathy-qt.info
+++ b/multimedia/telepathy-qt/telepathy-qt.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://telepathy.freedesktop.org/releases/telepathy-qt/telepathy-qt-0
MD5SUM="86470dd3d7f6de8b8f4f36165486d42f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="telepathy-farstream"
+REQUIRES="telepathy-farstream qt4"
MAINTAINER="Thorn Inurcide"
EMAIL="thorn_inurcide@zoho.com"
diff --git a/multimedia/tivodecode/tivodecode.SlackBuild b/multimedia/tivodecode/tivodecode.SlackBuild
index 1adfa7e73c..654f816252 100644
--- a/multimedia/tivodecode/tivodecode.SlackBuild
+++ b/multimedia/tivodecode/tivodecode.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for tivodecode
@@ -22,26 +22,36 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=tivodecode
VERSION=${VERSION:-0.2pre4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -87,4 +97,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/tomahawk/README b/multimedia/tomahawk/README
deleted file mode 100644
index da323cee00..0000000000
--- a/multimedia/tomahawk/README
+++ /dev/null
@@ -1,23 +0,0 @@
-tomahawk (music player)
-
-A new kind of music player that invites all your streams, downloads,
-cloud music storage, playlists, radio stations and friends to the same
-party. It's about time they all mingle.
-
-QT5 Warning:
- If you have Qt5 installed, you will need to add the following cmake
- configure flag to the qtkeychain SlackBuild as qtkeychain builds
- with Qt5 by default if it's found. The Qt5 interface to Tomahawk is
- experimental and not yet complete.
-
--DBUILD_WITH_QT4="ON"
-
-This will require gst-plugins-ugly for mp3 support
-
-This optionally requires:
-
-Telepathy-Qt: Telepathy-Qt is needed for sharing Jabber/GTalk accounts
- with Telepathy.
-
-KDE4: Provides support for configuring Telepathy Accounts from inside
- Tomahawk.
diff --git a/multimedia/tomahawk/ee4656383a92a78299aff6f8637f174fff328e98.patch b/multimedia/tomahawk/ee4656383a92a78299aff6f8637f174fff328e98.patch
deleted file mode 100644
index ff8622536c..0000000000
--- a/multimedia/tomahawk/ee4656383a92a78299aff6f8637f174fff328e98.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From ee4656383a92a78299aff6f8637f174fff328e98 Mon Sep 17 00:00:00 2001
-From: Pinak Ahuja <pinak.ahuja@gmail.com>
-Date: Wed, 2 Sep 2015 14:41:00 +0530
-Subject: [PATCH] Compare taglib version properly
-
----
- CMakeModules/FindTaglib.cmake | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/CMakeModules/FindTaglib.cmake b/CMakeModules/FindTaglib.cmake
-index e0efbef..f54ff78 100644
---- a/CMakeModules/FindTaglib.cmake
-+++ b/CMakeModules/FindTaglib.cmake
-@@ -34,10 +34,10 @@ ELSE()
-
- exec_program(${TAGLIBCONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE TAGLIB_VERSION)
-
-- if(TAGLIB_VERSION STRLESS "${TAGLIB_MIN_VERSION}")
-+ if(TAGLIB_VERSION VERSION_LESS "${TAGLIB_MIN_VERSION}")
- message(STATUS "TagLib version not found: version searched :${TAGLIB_MIN_VERSION}, found ${TAGLIB_VERSION}")
- set(TAGLIB_FOUND FALSE)
-- else(TAGLIB_VERSION STRLESS "${TAGLIB_MIN_VERSION}")
-+ else(TAGLIB_VERSION VERSION_LESS "${TAGLIB_MIN_VERSION}")
-
- exec_program(${TAGLIBCONFIG_EXECUTABLE} ARGS --libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE TAGLIB_LIBRARIES)
-
-@@ -48,7 +48,7 @@ ELSE()
- # message(STATUS "Found taglib: ${TAGLIB_LIBRARIES}")
- endif(TAGLIB_LIBRARIES AND TAGLIB_CFLAGS)
- string(REGEX REPLACE " *-I" ";" TAGLIB_INCLUDES "${TAGLIB_CFLAGS}")
-- endif(TAGLIB_VERSION STRLESS "${TAGLIB_MIN_VERSION}")
-+ endif(TAGLIB_VERSION VERSION_LESS "${TAGLIB_MIN_VERSION}")
- mark_as_advanced(TAGLIB_CFLAGS TAGLIB_LIBRARIES TAGLIB_INCLUDES)
-
- else(TAGLIBCONFIG_EXECUTABLE)
diff --git a/multimedia/tomahawk/tomahawk.info b/multimedia/tomahawk/tomahawk.info
deleted file mode 100644
index 9a939fd8c5..0000000000
--- a/multimedia/tomahawk/tomahawk.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="tomahawk"
-VERSION="0.8.4"
-HOMEPAGE="https://www.tomahawk-player.org/"
-DOWNLOAD="http://download.tomahawk-player.org/tomahawk-0.8.4.tar.bz2"
-MD5SUM="04832abe1786edcc55805875b5882445"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="jreen libechonest LucenePlusPlus qtkeychain sparsehash quazip libwebsocketpp"
-MAINTAINER="Thorn Inurcide"
-EMAIL="thorn_inurcide@zoho.com"
diff --git a/multimedia/totem/README b/multimedia/totem/README
index 4a2e079b5a..b98eff6adc 100644
--- a/multimedia/totem/README
+++ b/multimedia/totem/README
@@ -1,5 +1,12 @@
-totem is the official movie player of the GNOME desktop environment
-based on GStreamer. It features a playlist, a full-screen mode, seek
-and volume controls, as well as keyboard navigation.
+totem is GNOME Videos.
+
+Videos is movie player for the GNOME desktop based on GStreamer.
+
+Almost all the controls are documented in the keyboard shortcuts
+dialogue, accessible through Ctrl+H, or the Keyboard Shortcuts menu
+item. Some others are listed below.
+ - Ctrl+Q = Quit
+ - Ctrl+W = Press back button/Quit
+ - Mouse button 1 double-click = Toggle full screen
+ - Middle mouse button click = Play/Pause
-lirc, vala, gdata, tracker, and nautilus are optional dependencies.
diff --git a/multimedia/totem/doinst.sh b/multimedia/totem/doinst.sh
index bfea1750ed..e924bab47c 100644
--- a/multimedia/totem/doinst.sh
+++ b/multimedia/totem/doinst.sh
@@ -8,14 +8,9 @@ if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
fi
fi
-schema_install() {
- SCHEMA="$1"
- GCONF_CONFIG_SOURCE="xml::etc/gconf/gconf.xml.defaults" \
- chroot . gconftool-2 --makefile-install-rule \
- /etc/gconf/schemas/$SCHEMA \
- 1>/dev/null 2>/dev/null
-}
+if [ -e usr/share/glib-2.0/schemas ]; then
+ if [ -x /usr/bin/glib-compile-schemas ]; then
+ /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1
+ fi
+fi
-schema_install totem.schemas
-schema_install totem-handlers.schemas
-schema_install totem-video-thumbnail.schemas
diff --git a/multimedia/totem/slack-desc b/multimedia/totem/slack-desc
index 1694c2ebad..909eec76f7 100644
--- a/multimedia/totem/slack-desc
+++ b/multimedia/totem/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-totem: totem (GNOME Movie Player)
+totem: totem (GNOME Videos)
totem:
-totem: Totem is the official movie player of the GNOME desktop environment
-totem: based on GStreamer. It features a playlist, a full-screen mode, seek
-totem: and volume controls, as well as keyboard navigation.
+totem: GNOME Videos is movie player for the GNOME desktop based on GStreamer.
totem:
-totem: homepage: http://projects.gnome.org/totem
+totem: Note that the GNOME Videos is called 'totem' by GNOME developers.
totem:
totem:
totem:
totem:
+totem: https://gitlab.gnome.org/GNOME/totem
+totem:
diff --git a/multimedia/totem/totem.SlackBuild b/multimedia/totem/totem.SlackBuild
index f99f0ac23a..156675eb03 100644
--- a/multimedia/totem/totem.SlackBuild
+++ b/multimedia/totem/totem.SlackBuild
@@ -1,9 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for totem
-# Copyright 2010,2011 Robby Workman, Northport, Alabama, USA
-# Copyright 2011-2012 byteframe
+# Copyright 2023, Bob Funk, Winnipeg Canada
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -12,21 +11,24 @@
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=totem
-VERSION=${VERSION:-2.32.0}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-3.38.2}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +38,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -61,38 +67,42 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --disable-scrollkeeper \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | \
- grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir build
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ -Dstrip=true
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS COPYING NEWS README $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING MAINTAINERS NEWS README \
+ $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -100,4 +110,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/totem/totem.info b/multimedia/totem/totem.info
index b7f87acfc7..2fdbc0ee3e 100644
--- a/multimedia/totem/totem.info
+++ b/multimedia/totem/totem.info
@@ -1,10 +1,10 @@
PRGNAM="totem"
-VERSION="2.32.0"
-HOMEPAGE="http://projects.gnome.org/totem"
-DOWNLOAD="ftp://ftp.gnome.org/pub/gnome/sources/totem/2.32/totem-2.32.0.tar.bz2"
-MD5SUM="2e55c3da316648ba860e3f88af2d30ab"
+VERSION="3.38.2"
+HOMEPAGE="https://gitlab.gnome.org/GNOME/totem"
+DOWNLOAD="https://download.gnome.org/core/41/41.8/sources/totem-3.38.2.tar.xz"
+MD5SUM="21246e0f5a0ee425c9e492b965476547"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="libunique totem-pl-parser"
-MAINTAINER="byteframe"
-EMAIL="byteframe@gmail.com"
+REQUIRES="clutter-gst clutter-gtk gnome-desktop grilo libpeas"
+MAINTAINER="Bob Funk"
+EMAIL="bobfunk11@gmail.com"
diff --git a/multimedia/tovid/README b/multimedia/tovid/README
index e276985b80..ea6cc0aa07 100644
--- a/multimedia/tovid/README
+++ b/multimedia/tovid/README
@@ -1,6 +1,7 @@
-tovid is a collection of GPL video disc authoring tools; it can help you
-create your own DVDs, VCDs, and SVCDs for playback on your home DVD player.
-The CLI scripts are particularly handy for automating disc creation.
+tovid is a collection of GPL video disc authoring tools; it can help
+you create your own DVDs, VCDs, and SVCDs for playback on your home
+DVD player. The CLI scripts are particularly handy for automating
+disc creation.
transcode is a recommended, optional dependency.
txt2tags is only needed to build man pages from git/svn sources.
diff --git a/multimedia/tovid/tovid.SlackBuild b/multimedia/tovid/tovid.SlackBuild
index aa288025e6..90af1f54c5 100644
--- a/multimedia/tovid/tovid.SlackBuild
+++ b/multimedia/tovid/tovid.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware Build script for tovid by eviljames
@@ -17,20 +17,30 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=tovid
VERSION=${VERSION:-0.35.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -69,4 +79,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/tovid/tovid.info b/multimedia/tovid/tovid.info
index 4a72a7d917..1a1e7e195a 100644
--- a/multimedia/tovid/tovid.info
+++ b/multimedia/tovid/tovid.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/tovid-suite/tovid/releases/download/0.35.2/tovid-0.
MD5SUM="5173a25e2de43ca512d038605ce271ba"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="dvdauthor ffmpeg mjpegtools"
+REQUIRES="mjpegtools"
MAINTAINER="Edward W. Koenig"
-EMAIL="kingbeowulf@gmail.com"
+EMAIL="kingbeowulf@linuxgalaxy.org"
diff --git a/multimedia/tragtor/tragtor.SlackBuild b/multimedia/tragtor/tragtor.SlackBuild
index e36f6bc711..e3fda9fda1 100644
--- a/multimedia/tragtor/tragtor.SlackBuild
+++ b/multimedia/tragtor/tragtor.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for tragtor
@@ -22,14 +22,24 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=tragtor
VERSION=${VERSION:-0.9.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
ARCH=noarch
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -62,4 +72,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/tragtor/tragtor.info b/multimedia/tragtor/tragtor.info
index f140997652..3cdf173b52 100644
--- a/multimedia/tragtor/tragtor.info
+++ b/multimedia/tragtor/tragtor.info
@@ -5,6 +5,6 @@ DOWNLOAD="http://repository.mein-neues-blog.de:9000/archive/tragtor-0.9.3_all.ta
MD5SUM="bc826c473acb993c62c2cc8447304ad4"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg"
+REQUIRES=""
MAINTAINER="Leo C."
EMAIL="leoc@gmx.com"
diff --git a/multimedia/transcode/README b/multimedia/transcode/README
index c5b9725bf6..d2e499a222 100644
--- a/multimedia/transcode/README
+++ b/multimedia/transcode/README
@@ -1,14 +1,15 @@
transcode is a text-console utility for video stream processing.
-Decoding and encoding is done by loading modules that are responsible for
-feeding transcode with raw video/audio streams (import modules) and encoding
-the frames (export modules). It supports elementary video and audio frame
-transformations, including de-interlacing or fast resizing of video frames
-and loading of external filters.
+
+Decoding and encoding is done by loading modules that are responsible
+for feeding transcode with raw video/audio streams (import modules)
+and encoding the frames (export modules). It supports elementary video
+and audio frame transformations, including de-interlacing or fast
+resizing of video frames and loading of external filters.
You can enable some optional (not-autodetected) features by
passing variables to the script:
+
FAAC=yes|no (default: no), requires faac
-LAME=yes|no (default: no), requires lame
LIBDV=yes|no (default: no), requires libdv
LIBMPEG2=yes|no (default: no), requires libmpeg2
MJPEGTOOLS=yes|no (default: no), requires mjpegtools
@@ -16,5 +17,6 @@ QUICKTIME=yes|no (default: no), requires libquicktime
X264=yes|no (default: no), requires x264
XVID=yes|no (default: no), requires xvidcore
-Note that newer versions of the stabilize and transform filters are available
-as part of vid.stab and have thus been dropped from this package.
+Note that newer versions of the stabilize and transform filters are
+available as part of vid.stab and have thus been dropped from this
+package.
diff --git a/multimedia/transcode/transcode-1.1.7-ffmpeg4.patch b/multimedia/transcode/transcode-1.1.7-ffmpeg4.patch
new file mode 100644
index 0000000000..9ad765e1c3
--- /dev/null
+++ b/multimedia/transcode/transcode-1.1.7-ffmpeg4.patch
@@ -0,0 +1,508 @@
+Index: transcode-1.1.7/encode/encode_lavc.c
+===================================================================
+--- transcode-1.1.7.orig/encode/encode_lavc.c
++++ transcode-1.1.7/encode/encode_lavc.c
+@@ -77,6 +77,13 @@ struct tclavcconfigdata_ {
+ int luma_elim_threshold;
+ int chroma_elim_threshold;
+ int quantizer_noise_shaping;
++ int inter_quant_bias;
++ int intra_quant_bias;
++ int scenechange_factor;
++ int rc_strategy;
++ float rc_initial_cplx;
++ float rc_qsquish;
++ float border_masking;
+
+ /* same as above for flags */
+ struct {
+@@ -684,7 +691,7 @@ static int tc_lavc_init_multipass(TCLavc
+ switch (vob->divxmultipass) {
+ case 1:
+ CAN_DO_MULTIPASS(multipass_flag);
+- pd->ff_vcontext.flags |= CODEC_FLAG_PASS1;
++ pd->ff_vcontext.flags |= AV_CODEC_FLAG_PASS1;
+ pd->stats_file = fopen(vob->divxlogfile, "w");
+ if (pd->stats_file == NULL) {
+ tc_log_error(MOD_NAME, "could not create 2pass log file"
+@@ -694,7 +701,7 @@ static int tc_lavc_init_multipass(TCLavc
+ break;
+ case 2:
+ CAN_DO_MULTIPASS(multipass_flag);
+- pd->ff_vcontext.flags |= CODEC_FLAG_PASS2;
++ pd->ff_vcontext.flags |= AV_CODEC_FLAG_PASS2;
+ pd->stats_file = fopen(vob->divxlogfile, "r");
+ if (pd->stats_file == NULL){
+ tc_log_error(MOD_NAME, "could not open 2pass log file \"%s\""
+@@ -723,7 +730,7 @@ static int tc_lavc_init_multipass(TCLavc
+ break;
+ case 3:
+ /* fixed qscale :p */
+- pd->ff_vcontext.flags |= CODEC_FLAG_QSCALE;
++ pd->ff_vcontext.flags |= AV_CODEC_FLAG_QSCALE;
+ pd->ff_venc_frame.quality = vob->divxbitrate;
+ break;
+ }
+@@ -970,7 +977,7 @@ static void tc_lavc_config_defaults(TCLa
+ pd->confdata.rc_buffer_size = 0;
+ pd->confdata.lmin = 2;
+ pd->confdata.lmax = 31;
+- pd->confdata.me_method = ME_EPZS;
++ pd->confdata.me_method = 0;
+
+ memset(&pd->confdata.flags, 0, sizeof(pd->confdata.flags));
+ pd->confdata.turbo_setup = 0;
+@@ -983,12 +990,12 @@ static void tc_lavc_config_defaults(TCLa
+ pd->ff_vcontext.me_range = 0;
+ pd->ff_vcontext.mb_decision = 0;
+ pd->ff_vcontext.scenechange_threshold = 0;
+- pd->ff_vcontext.scenechange_factor = 1;
++ pd->confdata.scenechange_factor = 1;
+ pd->ff_vcontext.b_frame_strategy = 0;
+ pd->ff_vcontext.b_sensitivity = 40;
+ pd->ff_vcontext.brd_scale = 0;
+ pd->ff_vcontext.bidir_refine = 0;
+- pd->ff_vcontext.rc_strategy = 2;
++ pd->confdata.rc_strategy = 2;
+ pd->ff_vcontext.b_quant_factor = 1.25;
+ pd->ff_vcontext.i_quant_factor = 0.8;
+ pd->ff_vcontext.b_quant_offset = 1.25;
+@@ -996,8 +1003,8 @@ static void tc_lavc_config_defaults(TCLa
+ pd->ff_vcontext.qblur = 0.5;
+ pd->ff_vcontext.qcompress = 0.5;
+ pd->ff_vcontext.mpeg_quant = 0;
+- pd->ff_vcontext.rc_initial_cplx = 0.0;
+- pd->ff_vcontext.rc_qsquish = 1.0;
++ pd->confdata.rc_initial_cplx = 0.0;
++ pd->confdata.rc_qsquish = 1.0;
+ pd->confdata.luma_elim_threshold = 0;
+ pd->confdata.chroma_elim_threshold = 0;
+ pd->ff_vcontext.strict_std_compliance = 0;
+@@ -1008,7 +1015,7 @@ static void tc_lavc_config_defaults(TCLa
+ pd->ff_vcontext.temporal_cplx_masking = 0.0;
+ pd->ff_vcontext.spatial_cplx_masking = 0.0;
+ pd->ff_vcontext.p_masking = 0.0;
+- pd->ff_vcontext.border_masking = 0.0;
++ pd->confdata.border_masking = 0.0;
+ pd->ff_vcontext.me_pre_cmp = 0;
+ pd->ff_vcontext.me_cmp = 0;
+ pd->ff_vcontext.me_sub_cmp = 0;
+@@ -1020,8 +1027,6 @@ static void tc_lavc_config_defaults(TCLa
+ pd->ff_vcontext.pre_me = 1;
+ pd->ff_vcontext.me_subpel_quality = 8;
+ pd->ff_vcontext.refs = 1;
+- pd->ff_vcontext.intra_quant_bias = FF_DEFAULT_QUANT_BIAS;
+- pd->ff_vcontext.inter_quant_bias = FF_DEFAULT_QUANT_BIAS;
+ pd->ff_vcontext.noise_reduction = 0;
+ pd->confdata.quantizer_noise_shaping = 0;
+ pd->ff_vcontext.flags = 0;
+@@ -1044,19 +1049,19 @@ static void tc_lavc_config_defaults(TCLa
+ */
+ static void tc_lavc_dispatch_settings(TCLavcPrivateData *pd)
+ {
++ char buf[1024];
+ /* some translation... */
+ pd->ff_vcontext.bit_rate_tolerance = pd->confdata.vrate_tolerance * 1000;
+ pd->ff_vcontext.rc_min_rate = pd->confdata.rc_min_rate * 1000;
+ pd->ff_vcontext.rc_max_rate = pd->confdata.rc_max_rate * 1000;
+ pd->ff_vcontext.rc_buffer_size = pd->confdata.rc_buffer_size * 1024;
+- pd->ff_vcontext.lmin = (int)(FF_QP2LAMBDA * pd->confdata.lmin + 0.5);
+- pd->ff_vcontext.lmax = (int)(FF_QP2LAMBDA * pd->confdata.lmax + 0.5);
+- pd->ff_vcontext.me_method = ME_ZERO + pd->confdata.me_method;
++ snprintf(buf, sizeof(buf), "%i", (int)(FF_QP2LAMBDA * pd->confdata.lmin + 0.5));
++ av_dict_set(&(pd->ff_opts), "lmin", buf, 0);
++ snprintf(buf, sizeof(buf), "%i", (int)(FF_QP2LAMBDA * pd->confdata.lmax + 0.5));
++ av_dict_set(&(pd->ff_opts), "lmax", buf, 0);
+
+ pd->ff_vcontext.flags = 0;
+- SET_FLAG(pd, mv0);
+ SET_FLAG(pd, qpel);
+- SET_FLAG(pd, naq);
+ SET_FLAG(pd, ilme);
+ SET_FLAG(pd, ildct);
+ SET_FLAG(pd, aic);
+@@ -1077,8 +1082,8 @@ static void tc_lavc_dispatch_settings(TC
+ }
+ if (pd->interlacing.active) {
+ /* enforce interlacing */
+- pd->ff_vcontext.flags |= CODEC_FLAG_INTERLACED_DCT;
+- pd->ff_vcontext.flags |= CODEC_FLAG_INTERLACED_ME;
++ pd->ff_vcontext.flags |= AV_CODEC_FLAG_INTERLACED_DCT;
++ pd->ff_vcontext.flags |= AV_CODEC_FLAG_INTERLACED_ME;
+ }
+ if (pd->confdata.flags.alt) {
+ av_dict_set(&(pd->ff_opts), "alternate_scan", "1", 0);
+@@ -1095,15 +1100,31 @@ static void tc_lavc_dispatch_settings(TC
+ if (pd->confdata.flags.cbp) {
+ av_dict_set(&(pd->ff_opts), "mpv_flags", "+cbp_rd", 0);
+ }
++ if (pd->confdata.flags.mv0) {
++ av_dict_set(&(pd->ff_opts), "mpv_flags", "+mv0", 0);
++ }
++ if (pd->confdata.flags.naq) {
++ av_dict_set(&(pd->ff_opts), "mpv_flags", "+naq", 0);
++ }
+
+- char buf[1024];
+ #define set_dict_opt(val, opt) \
+ snprintf(buf, sizeof(buf), "%i", pd->confdata.val);\
+ av_dict_set(&(pd->ff_opts), opt, buf, 0)
++#define set_dict_float_opt(val, opt) \
++ snprintf(buf, sizeof(buf), "%f", pd->confdata.val);\
++ av_dict_set(&(pd->ff_opts), opt, buf, 0)
+
+ set_dict_opt(luma_elim_threshold, "luma_elim_threshold");
+ set_dict_opt(chroma_elim_threshold, "chroma_elim_threshold");
+ set_dict_opt(quantizer_noise_shaping, "quantizer_noise_shaping");
++ set_dict_opt(inter_quant_bias, "pbias");
++ set_dict_opt(intra_quant_bias, "ibias");
++ set_dict_opt(me_method, "me_method");
++ set_dict_opt(scenechange_factor, "sc_factor");
++ set_dict_opt(rc_strategy, "rc_strategy");
++ set_dict_float_opt(rc_initial_cplx, "rc_init_cplx");
++ set_dict_float_opt(rc_qsquish, "qsquish");
++ set_dict_float_opt(border_masking, "border_mask");
+ }
+
+ #undef SET_FLAG
+@@ -1159,12 +1180,12 @@ static int tc_lavc_read_config(TCLavcPri
+ { "lmin", PAUX(lmin), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.01, 255.0 },
+ { "lmax", PAUX(lmax), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.01, 255.0 },
+ { "vqdiff", PCTX(max_qdiff), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31 },
+- { "vmax_b_frames", PCTX(max_b_frames), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, FF_MAX_B_FRAMES },
++ { "vmax_b_frames", PCTX(max_b_frames), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, INT_MAX },
+ { "vme", PAUX(me_method), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 16, },
+ { "me_range", PCTX(me_range), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 16000 },
+ { "mbd", PCTX(mb_decision), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 3 },
+ { "sc_threshold", PCTX(scenechange_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1000000, 1000000 },
+- { "sc_factor", PCTX(scenechange_factor), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 16 },
++ { "sc_factor", PAUX(scenechange_factor), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 16 },
+ { "vb_strategy", PCTX(b_frame_strategy), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 10 },
+ { "b_sensitivity", PCTX(b_sensitivity), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 100 },
+ { "brd_scale", PCTX(brd_scale), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 10 },
+@@ -1175,7 +1196,7 @@ static int tc_lavc_read_config(TCLavcPri
+ { "vrc_maxrate", PAUX(rc_max_rate), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 24000000 },
+ { "vrc_minrate", PAUX(rc_min_rate), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 24000000 },
+ { "vrc_buf_size", PAUX(rc_buffer_size), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 4, 24000000 },
+- { "vrc_strategy", PCTX(rc_strategy), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2 },
++ { "vrc_strategy", PAUX(rc_strategy), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2 },
+ { "vb_qfactor", PCTX(b_quant_factor), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0 },
+ { "vi_qfactor", PCTX(i_quant_factor), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0 },
+ { "vb_qoffset", PCTX(b_quant_offset), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 31.0 },
+@@ -1185,9 +1206,9 @@ static int tc_lavc_read_config(TCLavcPri
+ { "mpeg_quant", PCTX(mpeg_quant), TCCONF_TYPE_FLAG, 0, 0, 1 },
+ // { "vrc_eq", }, // not yet supported
+ { "vrc_override", rc_override_buf, TCCONF_TYPE_STRING, 0, 0, 0 },
+- { "vrc_init_cplx", PCTX(rc_initial_cplx), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 9999999.0 },
++ { "vrc_init_cplx", PAUX(rc_initial_cplx), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 9999999.0 },
+ // { "vrc_init_occupancy", }, // not yet supported
+- { "vqsquish", PCTX(rc_qsquish), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 99.0 },
++ { "vqsquish", PAUX(rc_qsquish), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 99.0 },
+ { "vlelim", PAUX(luma_elim_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 },
+ { "vcelim", PAUX(chroma_elim_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 },
+ { "vstrict", PCTX(strict_std_compliance), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 },
+@@ -1199,7 +1220,7 @@ static int tc_lavc_read_config(TCLavcPri
+ { "tcplx_mask", PCTX(temporal_cplx_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 },
+ { "scplx_mask", PCTX(spatial_cplx_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 },
+ { "p_mask", PCTX(p_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 },
+- { "border_mask", PCTX(border_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 },
++ { "border_mask", PAUX(border_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 },
+ { "pred", PCTX(prediction_method), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 4 },
+ { "precmp", PCTX(me_pre_cmp), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000 },
+ { "cmp", PCTX(me_cmp), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000 },
+@@ -1212,37 +1233,37 @@ static int tc_lavc_read_config(TCLavcPri
+ { "pre_me", PCTX(pre_me), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000},
+ { "subq", PCTX(me_subpel_quality), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 8 },
+ { "refs", PCTX(refs), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 8 },
+- { "ibias", PCTX(intra_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 },
+- { "pbias", PCTX(inter_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 },
++ { "ibias", PAUX(intra_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 },
++ { "pbias", PAUX(inter_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 },
+ { "nr", PCTX(noise_reduction), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000000},
+ { "qns", PAUX(quantizer_noise_shaping), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 3 },
+ { "inter_matrix_file", inter_matrix_file, TCCONF_TYPE_STRING, 0, 0, 0 },
+ { "intra_matrix_file", intra_matrix_file, TCCONF_TYPE_STRING, 0, 0, 0 },
+
+- { "mv0", PAUX(flags.mv0), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_MV0 },
++ { "mv0", PAUX(flags.mv0), TCCONF_TYPE_FLAG, 0, 0, 1 },
+ { "cbp", PAUX(flags.cbp), TCCONF_TYPE_FLAG, 0, 0, 1 },
+- { "qpel", PAUX(flags.qpel), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_QPEL },
++ { "qpel", PAUX(flags.qpel), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_QPEL },
+ { "alt", PAUX(flags.alt), TCCONF_TYPE_FLAG, 0, 0, 1 },
+- { "ilme", PAUX(flags.ilme), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_ME },
+- { "ildct", PAUX(flags.ildct), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_DCT },
+- { "naq", PAUX(flags.naq), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_NORMALIZE_AQP },
++ { "ilme", PAUX(flags.ilme), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_INTERLACED_ME },
++ { "ildct", PAUX(flags.ildct), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_INTERLACED_DCT },
++ { "naq", PAUX(flags.naq), TCCONF_TYPE_FLAG, 0, 0, 1 },
+ { "vdpart", PAUX(flags.vdpart), TCCONF_TYPE_FLAG, 0, 0, 1 },
+ #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
+ { "aic", PAUX(flags.aic), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_H263P_AIC },
+ #else
+- { "aic", PAUX(flags.aic), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_AC_PRED },
++ { "aic", PAUX(flags.aic), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_AC_PRED },
+ #endif
+ { "aiv", PAUX(flags.aiv), TCCONF_TYPE_FLAG, 0, 0, 1 },
+ { "umv", PAUX(flags.umv), TCCONF_TYPE_FLAG, 0, 0, 1 },
+- { "psnr", PAUX(flags.psnr), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PSNR },
++ { "psnr", PAUX(flags.psnr), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_PSNR },
+ #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
+ { "trell", PAUX(flags.trell), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_TRELLIS_QUANT },
+ #else
+ { "trell", PCTX(trellis), TCCONF_TYPE_FLAG, 0, 0, 1 },
+ #endif
+- { "gray", PAUX(flags.gray), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_GRAY },
+- { "v4mv", PAUX(flags.v4mv), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_4MV },
+- { "closedgop", PAUX(flags.closedgop), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_CLOSED_GOP },
++ { "gray", PAUX(flags.gray), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_GRAY },
++ { "v4mv", PAUX(flags.v4mv), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_4MV },
++ { "closedgop", PAUX(flags.closedgop), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_CLOSED_GOP },
+
+ // { "turbo", PAUX(turbo_setup), TCCONF_TYPE_FLAG, 0, 0, 1 }, // not yet supported
+ /* End of the config file */
+Index: transcode-1.1.7/export/export_ffmpeg.c
+===================================================================
+--- transcode-1.1.7.orig/export/export_ffmpeg.c
++++ transcode-1.1.7/export/export_ffmpeg.c
+@@ -831,14 +831,11 @@ MOD_init
+
+ lavc_venc_context->bit_rate = vob->divxbitrate * 1000;
+ lavc_venc_context->bit_rate_tolerance = lavc_param_vrate_tolerance * 1000;
+- lavc_venc_context->lmin= (int)(FF_QP2LAMBDA * lavc_param_lmin + 0.5);
+- lavc_venc_context->lmax= (int)(FF_QP2LAMBDA * lavc_param_lmax + 0.5);
+ lavc_venc_context->max_qdiff = lavc_param_vqdiff;
+ lavc_venc_context->qcompress = lavc_param_vqcompress;
+ lavc_venc_context->qblur = lavc_param_vqblur;
+ lavc_venc_context->max_b_frames = lavc_param_vmax_b_frames;
+ lavc_venc_context->b_quant_factor = lavc_param_vb_qfactor;
+- lavc_venc_context->rc_strategy = lavc_param_vrc_strategy;
+ lavc_venc_context->b_frame_strategy = lavc_param_vb_strategy;
+ lavc_venc_context->b_quant_offset = lavc_param_vb_qoffset;
+
+@@ -846,8 +843,23 @@ MOD_init
+ #define set_dict_opt(val, opt) \
+ snprintf(buf, sizeof(buf), "%i", val); \
+ av_dict_set(&lavc_venc_opts, opt, buf, 0)
++#define set_dict_float_opt(val, opt) \
++ snprintf(buf, sizeof(buf), "%f", val); \
++ av_dict_set(&lavc_venc_opts, opt, buf, 0)
+ set_dict_opt(lavc_param_luma_elim_threshold, "luma_elim_threshold");
+ set_dict_opt(lavc_param_chroma_elim_threshold, "chroma_elim_threshold");
++ set_dict_opt((int)(FF_QP2LAMBDA * lavc_param_lmin + 0.5), "lmin");
++ set_dict_opt((int)(FF_QP2LAMBDA * lavc_param_lmax + 0.5), "lmax");
++ set_dict_opt(lavc_param_vrc_strategy, "rc_strategy");
++ set_dict_float_opt(lavc_param_rc_qsquish, "qsquish");
++ set_dict_float_opt(lavc_param_rc_qmod_amp, "rc_qmod_amp");
++ set_dict_opt(lavc_param_rc_qmod_freq, "rc_qmod_freq");
++ set_dict_opt(lavc_param_rc_eq, "rc_eq");
++ set_dict_opt(lavc_param_vme, "me_method");
++ set_dict_opt(lavc_param_ibias, "ibias");
++ set_dict_opt(lavc_param_pbias, "pbias");
++ set_dict_float_opt(lavc_param_rc_buffer_aggressivity, "rc_buf_aggressivity");
++ set_dict_float_opt(lavc_param_rc_initial_cplx, "rc_init_cplx");
+ lavc_venc_context->rtp_payload_size = lavc_param_packet_size;
+ #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
+ if (lavc_param_packet_size)
+@@ -856,15 +868,9 @@ MOD_init
+ lavc_venc_context->strict_std_compliance= lavc_param_strict;
+ lavc_venc_context->i_quant_factor = lavc_param_vi_qfactor;
+ lavc_venc_context->i_quant_offset = lavc_param_vi_qoffset;
+- lavc_venc_context->rc_qsquish = lavc_param_rc_qsquish;
+- lavc_venc_context->rc_qmod_amp = lavc_param_rc_qmod_amp;
+- lavc_venc_context->rc_qmod_freq = lavc_param_rc_qmod_freq;
+- lavc_venc_context->rc_eq = lavc_param_rc_eq;
+ lavc_venc_context->rc_max_rate = lavc_param_rc_max_rate * 1000;
+ lavc_venc_context->rc_min_rate = lavc_param_rc_min_rate * 1000;
+ lavc_venc_context->rc_buffer_size = lavc_param_rc_buffer_size * 1024;
+- lavc_venc_context->rc_buffer_aggressivity= lavc_param_rc_buffer_aggressivity;
+- lavc_venc_context->rc_initial_cplx = lavc_param_rc_initial_cplx;
+ lavc_venc_context->debug = lavc_param_debug;
+ lavc_venc_context->last_predictor_count= lavc_param_last_pred;
+ lavc_venc_context->pre_me = lavc_param_pre_me;
+@@ -872,8 +878,6 @@ MOD_init
+ lavc_venc_context->pre_dia_size = lavc_param_pre_dia_size;
+ lavc_venc_context->me_subpel_quality = lavc_param_me_subpel_quality;
+ lavc_venc_context->me_range = lavc_param_me_range;
+- lavc_venc_context->intra_quant_bias = lavc_param_ibias;
+- lavc_venc_context->inter_quant_bias = lavc_param_pbias;
+ lavc_venc_context->coder_type = lavc_param_coder;
+ lavc_venc_context->context_model = lavc_param_context;
+ lavc_venc_context->scenechange_threshold= lavc_param_sc_threshold;
+@@ -1079,6 +1083,8 @@ MOD_init
+ lavc_venc_context->flags |= lavc_param_mv0;
+ if(lavc_param_qp_rd)
+ av_dict_set(&lavc_venc_opts, "mpv_flags", "+qp_rd", 0);
++ if (lavc_param_normalize_aqp)
++ av_dict_set(&lavc_venc_opts, "mpv_flags", "+naq", 0);
+ lavc_venc_context->flags |= lavc_param_ilme;
+ #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
+ lavc_venc_context->flags |= lavc_param_trell;
+@@ -1087,9 +1093,7 @@ MOD_init
+ #endif
+
+ if (lavc_param_gray)
+- lavc_venc_context->flags |= CODEC_FLAG_GRAY;
+- if (lavc_param_normalize_aqp)
+- lavc_venc_context->flags |= CODEC_FLAG_NORMALIZE_AQP;
++ lavc_venc_context->flags |= AV_CODEC_FLAG_GRAY;
+
+ switch(vob->encode_fields) {
+ case TC_ENCODE_FIELDS_TOP_FIRST:
+@@ -1107,9 +1111,9 @@ MOD_init
+ }
+
+ lavc_venc_context->flags |= interlacing_active ?
+- CODEC_FLAG_INTERLACED_DCT : 0;
++ AV_CODEC_FLAG_INTERLACED_DCT : 0;
+ lavc_venc_context->flags |= interlacing_active ?
+- CODEC_FLAG_INTERLACED_ME : 0;
++ AV_CODEC_FLAG_INTERLACED_ME : 0;
+
+ lavc_venc_context->flags |= lavc_param_psnr;
+ do_psnr = lavc_param_psnr;
+@@ -1156,7 +1160,7 @@ MOD_init
+ "encoding.");
+ return TC_EXPORT_ERROR;
+ }
+- lavc_venc_context->flags |= CODEC_FLAG_PASS1;
++ lavc_venc_context->flags |= AV_CODEC_FLAG_PASS1;
+ stats_file = fopen(vob->divxlogfile, "w");
+ if (stats_file == NULL){
+ tc_log_warn(MOD_NAME, "Could not create 2pass log file \"%s\".",
+@@ -1170,7 +1174,7 @@ MOD_init
+ "encoding.");
+ return TC_EXPORT_ERROR;
+ }
+- lavc_venc_context->flags |= CODEC_FLAG_PASS2;
++ lavc_venc_context->flags |= AV_CODEC_FLAG_PASS2;
+ stats_file= fopen(vob->divxlogfile, "r");
+ if (stats_file==NULL){
+ tc_log_warn(MOD_NAME, "Could not open 2pass log file \"%s\" for "
+@@ -1201,12 +1205,11 @@ MOD_init
+ break;
+ case 3:
+ /* fixed qscale :p */
+- lavc_venc_context->flags |= CODEC_FLAG_QSCALE;
++ lavc_venc_context->flags |= AV_CODEC_FLAG_QSCALE;
+ lavc_venc_frame->quality = vob->divxbitrate;
+ break;
+ }
+
+- lavc_venc_context->me_method = ME_ZERO + lavc_param_vme;
+
+ /* FIXME: transcode itself contains "broken ffmpeg default settings", thus we need to override them! */
+ if (lavc_param_video_preset && strcmp(lavc_param_video_preset, "none")) {
+Index: transcode-1.1.7/export/ffmpeg_cfg.c
+===================================================================
+--- transcode-1.1.7.orig/export/ffmpeg_cfg.c
++++ transcode-1.1.7/export/ffmpeg_cfg.c
+@@ -93,8 +93,8 @@ int lavc_param_last_pred= 0;
+ int lavc_param_pre_me= 1;
+ int lavc_param_me_subpel_quality= 8;
+ int lavc_param_me_range=0;
+-int lavc_param_ibias=FF_DEFAULT_QUANT_BIAS;
+-int lavc_param_pbias=FF_DEFAULT_QUANT_BIAS;
++int lavc_param_ibias=0;
++int lavc_param_pbias=0;
+ int lavc_param_coder=0;
+ int lavc_param_context=0;
+ char *lavc_param_intra_matrix = NULL;
+@@ -136,7 +136,7 @@ TCConfigEntry lavcopts_conf[]={
+ {"vratetol", &lavc_param_vrate_tolerance, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 4, 24000000},
+ {"vhq", &lavc_param_mb_decision, TCCONF_TYPE_FLAG, 0, 0, 1},
+ {"mbd", &lavc_param_mb_decision, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 9},
+- {"v4mv", &lavc_param_v4mv, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_4MV},
++ {"v4mv", &lavc_param_v4mv, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_4MV},
+ {"vme", &lavc_param_vme, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 5},
+ // {"vqscale", &lavc_param_vqscale, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31},
+ // {"vqmin", &lavc_param_vqmin, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31},
+@@ -147,7 +147,7 @@ TCConfigEntry lavcopts_conf[]={
+ {"vqcomp", &lavc_param_vqcompress, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0},
+ {"vqblur", &lavc_param_vqblur, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0},
+ {"vb_qfactor", &lavc_param_vb_qfactor, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0},
+- {"vmax_b_frames", &lavc_param_vmax_b_frames, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, FF_MAX_B_FRAMES},
++ {"vmax_b_frames", &lavc_param_vmax_b_frames, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, INT_MAX},
+ // {"vpass", &lavc_param_vpass, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2},
+ {"vrc_strategy", &lavc_param_vrc_strategy, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2},
+ {"vb_strategy", &lavc_param_vb_strategy, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 10},
+@@ -158,7 +158,7 @@ TCConfigEntry lavcopts_conf[]={
+ {"vstrict", &lavc_param_strict, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99},
+ {"vdpart", &lavc_param_data_partitioning, TCCONF_TYPE_FLAG, 0, 0, 1},
+ // {"keyint", &lavc_param_keyint, TCCONF_TYPE_INT, 0, 0, 0},
+- {"gray", &lavc_param_gray, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_GRAY},
++ {"gray", &lavc_param_gray, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_GRAY},
+ {"mpeg_quant", &lavc_param_mpeg_quant, TCCONF_TYPE_FLAG, 0, 0, 1},
+ {"vi_qfactor", &lavc_param_vi_qfactor, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0},
+ {"vi_qoffset", &lavc_param_vi_qoffset, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 31.0},
+@@ -184,7 +184,7 @@ TCConfigEntry lavcopts_conf[]={
+ {"pred", &lavc_param_prediction_method, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 20},
+ {"format", &lavc_param_format, TCCONF_TYPE_STRING, 0, 0, 0},
+ {"debug", &lavc_param_debug, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 100000000},
+- {"psnr", &lavc_param_psnr, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PSNR},
++ {"psnr", &lavc_param_psnr, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_PSNR},
+ {"precmp", &lavc_param_me_pre_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000},
+ {"cmp", &lavc_param_me_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000},
+ {"subcmp", &lavc_param_me_sub_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000},
+@@ -192,9 +192,9 @@ TCConfigEntry lavcopts_conf[]={
+ {"ildctcmp", &lavc_param_ildct_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000},
+ {"predia", &lavc_param_pre_dia_size, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -2000, 2000},
+ {"dia", &lavc_param_dia_size, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -2000, 2000},
+- {"qpel", &lavc_param_qpel, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_QPEL},
++ {"qpel", &lavc_param_qpel, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_QPEL},
+ #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
+- {"trell", &lavc_param_trell, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_TRELLIS_QUANT},
++ {"trell", &lavc_param_trell, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_TRELLIS_QUANT},
+ #else
+ {"trell", &lavc_param_trell, TCCONF_TYPE_FLAG, 0, 0, 1},
+ #endif
+@@ -203,9 +203,9 @@ TCConfigEntry lavcopts_conf[]={
+ {"subq", &lavc_param_me_subpel_quality, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 8},
+ {"me_range", &lavc_param_me_range, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 16000},
+ #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
+- {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_H263P_AIC},
++ {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_H263P_AIC},
+ #else
+- {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_AC_PRED},
++ {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_AC_PRED},
+ #endif
+ {"umv", &lavc_param_umv, TCCONF_TYPE_FLAG, 0, 0, 1},
+ {"ibias", &lavc_param_ibias, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512},
+@@ -215,20 +215,20 @@ TCConfigEntry lavcopts_conf[]={
+ {"intra_matrix", &lavc_param_intra_matrix, TCCONF_TYPE_STRING, 0, 0, 0},
+ {"inter_matrix", &lavc_param_inter_matrix, TCCONF_TYPE_STRING, 0, 0, 0},
+ {"cbp", &lavc_param_cbp, TCCONF_TYPE_FLAG, 0, 0, 1},
+- {"mv0", &lavc_param_mv0, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_MV0},
++ {"mv0", &lavc_param_mv0, TCCONF_TYPE_FLAG, 0, 0, 1},
+ {"nr", &lavc_param_noise_reduction, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000000},
+ {"qprd", &lavc_param_qp_rd, TCCONF_TYPE_FLAG, 0, 0, 1},
+ {"threads", &lavc_param_threads, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 16},
+ {"ss", &lavc_param_ss, TCCONF_TYPE_FLAG, 0, 0, 1},
+ {"svcd_sof", &lavc_param_scan_offset, TCCONF_TYPE_FLAG, 0, 0, 1},
+ {"alt", &lavc_param_alt, TCCONF_TYPE_FLAG, 0, 0, 1},
+- {"ilme", &lavc_param_ilme, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_ME},
++ {"ilme", &lavc_param_ilme, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_INTERLACED_ME},
+ {"inter_threshold", &lavc_param_inter_threshold, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1000000, 1000000},
+ {"sc_threshold", &lavc_param_sc_threshold, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1000000, 1000000},
+ {"top", &lavc_param_top, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1, 1},
+- {"gmc", &lavc_param_gmc, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_GMC},
+- {"trunc", &lavc_param_trunc, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_TRUNCATED},
+- {"closedgop", &lavc_param_closedgop, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_CLOSED_GOP},
++ {"gmc", &lavc_param_gmc, TCCONF_TYPE_FLAG, 0, 0, 1},
++ {"trunc", &lavc_param_trunc, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_TRUNCATED},
++ {"closedgop", &lavc_param_closedgop, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_CLOSED_GOP},
+ {"intra_dc_precision", &lavc_param_intra_dc_precision, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 16},
+ {"skip_top", &lavc_param_skip_top, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000},
+ {"skip_bottom", &lavc_param_skip_bottom, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000},
+Index: transcode-1.1.7/import/import_ffmpeg.c
+===================================================================
+--- transcode-1.1.7.orig/import/import_ffmpeg.c
++++ transcode-1.1.7/import/import_ffmpeg.c
+@@ -361,7 +361,7 @@ do_avi:
+ lavc_dec_context->width = x_dim;
+ lavc_dec_context->height = y_dim;
+
+- if (vob->decolor) lavc_dec_context->flags |= CODEC_FLAG_GRAY;
++ if (vob->decolor) lavc_dec_context->flags |= AV_CODEC_FLAG_GRAY;
+ #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
+ lavc_dec_context->error_resilience = 2;
+ #else
diff --git a/multimedia/transcode/transcode-1.1.7-gcc10.patch b/multimedia/transcode/transcode-1.1.7-gcc10.patch
new file mode 100644
index 0000000000..fcee415dee
--- /dev/null
+++ b/multimedia/transcode/transcode-1.1.7-gcc10.patch
@@ -0,0 +1,48 @@
+--- a/import/demux_pass.c
++++ b/import/demux_pass.c
+@@ -32,8 +32,6 @@
+ #include "packets.h"
+
+
+-int gop, gop_pts, gop_cnt;
+-
+ /* if you listen carefully, then you can hear the desesperate
+ * whisper of this code calling for a rewrite. Or for a redesign.
+ * Or both. -- FR
+--- a/import/extract_ac3.c
++++ b/import/extract_ac3.c
+@@ -334,7 +334,6 @@
+ FILE *fd;
+
+ #define MAX_BUF 4096
+-char audio[MAX_BUF];
+
+
+ /* from ac3scan.c */
+@@ -472,6 +471,8 @@
+ void extract_ac3(info_t *ipipe)
+ {
+
++ char audio[MAX_BUF];
++
+ int error=0;
+
+ avi_t *avifile;
+--- a/import/extract_mp3.c
++++ b/import/extract_mp3.c
+@@ -243,7 +243,6 @@
+ }
+
+ #define MAX_BUF 4096
+-char audio[MAX_BUF];
+
+ /* ------------------------------------------------------------
+ *
+@@ -258,6 +257,7 @@
+
+ void extract_mp3(info_t *ipipe)
+ {
++ char audio[MAX_BUF];
+
+ int error=0;
+
diff --git a/multimedia/transcode/transcode-1.1.7-glibc-2.32.patch b/multimedia/transcode/transcode-1.1.7-glibc-2.32.patch
new file mode 100644
index 0000000000..8b5ea837a0
--- /dev/null
+++ b/multimedia/transcode/transcode-1.1.7-glibc-2.32.patch
@@ -0,0 +1,47 @@
+--- transcode-1.1.7/import/v4l/import_v4l2.c.orig 2020-08-28 08:28:44.311434934 +0000
++++ transcode-1.1.7/import/v4l/import_v4l2.c 2020-08-28 08:41:19.279323984 +0000
+@@ -455,7 +455,7 @@
+ tc_log_warn(MOD_NAME,
+ "driver does not support cropping"
+ "(ioctl(VIDIOC_CROPCAP) returns \"%s\"), disabled",
+- errno <= sys_nerr ? sys_errlist[errno] : "unknown");
++ strerror(errno));
+ return TC_ERROR;
+ }
+ if (verbose_flag > TC_INFO) {
+@@ -485,7 +485,7 @@
+ tc_log_warn(MOD_NAME,
+ "driver does not support inquiring cropping"
+ " parameters (ioctl(VIDIOC_G_CROP) returns \"%s\")",
+- errno <= sys_nerr ? sys_errlist[errno] : "unknown");
++ strerror(errno));
+ return -1;
+ }
+
+@@ -513,7 +513,7 @@
+ tc_log_warn(MOD_NAME,
+ "driver does not support inquering cropping"
+ " parameters (ioctl(VIDIOC_G_CROP) returns \"%s\")",
+- errno <= sys_nerr ? sys_errlist[errno] : "unknown");
++ strerror(errno));
+ return -1;
+ }
+ if (verbose_flag > TC_INFO) {
+@@ -613,7 +613,7 @@
+ if (err < 0) {
+ if (verbose_flag) {
+ tc_log_warn(MOD_NAME, "driver does not support setting parameters (ioctl(VIDIOC_S_PARM) returns \"%s\")",
+- errno <= sys_nerr ? sys_errlist[errno] : "unknown");
++ strerror(errno));
+ }
+ }
+ return TC_OK;
+@@ -628,7 +628,7 @@
+ err = ioctl(vs->video_fd, VIDIOC_G_STD, &stdid);
+ if (err < 0) {
+ tc_log_warn(MOD_NAME, "driver does not support get std (ioctl(VIDIOC_G_STD) returns \"%s\")",
+- errno <= sys_nerr ? sys_errlist[errno] : "unknown");
++ strerror(errno));
+ memset(&stdid, 0, sizeof(v4l2_std_id));
+ }
+
diff --git a/multimedia/transcode/transcode-1.1.7-imagemagick7.patch b/multimedia/transcode/transcode-1.1.7-imagemagick7.patch
new file mode 100644
index 0000000000..b9f1476646
--- /dev/null
+++ b/multimedia/transcode/transcode-1.1.7-imagemagick7.patch
@@ -0,0 +1,794 @@
+http://git.pld-linux.org/?p=packages/transcode.git;a=blob_plain;f=imagemagick7.patch;h=8411f89b843764eff8f4aaddb314d7773d1bcec8;hb=HEAD
+
+--- transcode-1.1.7/configure.in
++++ transcode-1.1.7/configure.in
+@@ -1105,8 +1105,8 @@
+ dnl ImageMagick
+ dnl
+ IMAGEMAGICK_EXTRA_LIBS="$IMAGEMAGICK_EXTRA_LIBS $($PKG_CONFIG --libs ImageMagick)"
+-TC_PKG_CHECK(imagemagick, no, IMAGEMAGICK, no, [magick/api.h],
+- none, InitializeMagick, Wand, [http://www.imagemagick.org/])
++TC_PKG_CHECK(imagemagick, no, IMAGEMAGICK, no, [MagickWand/MagickWand.h],
++ none, InitializeMagick, MagickWand, [http://www.imagemagick.org/])
+ TC_PKG_HAVE(imagemagick, IMAGEMAGICK)
+ if test x"$have_imagemagick" = x"yes" ; then
+ SAVE_CPPFLAGS="$CPPFLAGS"
+@@ -1114,6 +1114,7 @@
+ AC_CHECK_HEADER([wand/magick-wand.h],
+ [AC_DEFINE([HAVE_BROKEN_WAND], [1], ["have old wand header"])])
+ CPPFLAGS="$SAVE_CPPFLAGS"
++ IMAGEMAGICK_CFLAGS="$IMAGEMAGICK_CFLAGS $($PKG_CONFIG --cflags ImageMagick)"
+ fi
+
+ dnl
+--- transcode-1.1.7/export/export_im.c
++++ transcode-1.1.7/export/export_im.c
+@@ -23,7 +23,7 @@
+
+ /* Note: because of ImageMagick bogosity, this must be included first, so
+ * we can undefine the PACKAGE_* symbols it splats into our namespace */
+-#include <magick/api.h>
++#include <MagickCore/MagickCore.h>
+ #undef PACKAGE_BUGREPORT
+ #undef PACKAGE_NAME
+ #undef PACKAGE_STRING
+@@ -82,7 +82,7 @@
+
+ codec = (vob->im_v_codec == CODEC_YUV) ? CODEC_YUV : CODEC_RGB;
+
+- InitializeMagick("");
++ MagickCoreGenesis("", MagickFalse);
+
+ image_info=CloneImageInfo((ImageInfo *) NULL);
+
+@@ -169,8 +169,8 @@
+ MOD_encode
+ {
+
+- ExceptionInfo exception_info;
+- char *out_buffer = param->buffer;
++ ExceptionInfo *exception_info;
++ unsigned char *out_buffer = param->buffer;
+ Image *image=NULL;
+ int res;
+
+@@ -179,7 +179,7 @@
+
+ if(param->flag == TC_VIDEO) {
+
+- GetExceptionInfo(&exception_info);
++ exception_info = AcquireExceptionInfo();
+
+ res = tc_snprintf(buf2, PATH_MAX, "%s%06d.%s", prefix, counter++, type);
+ if (res < 0) {
+@@ -193,11 +193,11 @@
+ out_buffer = tmp_buffer;
+ }
+
+- image=ConstituteImage (width, height, "RGB", CharPixel, out_buffer, &exception_info);
++ image=ConstituteImage (width, height, "RGB", CharPixel, out_buffer, exception_info);
+
+ strlcpy(image->filename, buf2, MaxTextExtent);
+
+- WriteImage(image_info, image);
++ WriteImage(image_info, image, exception_info);
+ DestroyImage(image);
+
+ return(0);
+@@ -220,8 +220,7 @@
+
+ if(param->flag == TC_VIDEO) {
+ DestroyImageInfo(image_info);
+- ConstituteComponentTerminus();
+- DestroyMagick();
++ MagickCoreTerminus();
+
+ free(tmp_buffer);
+ tmp_buffer = NULL;
+--- transcode-1.1.7/filter/filter_compare.c
++++ transcode-1.1.7/filter/filter_compare.c
+@@ -24,7 +24,7 @@
+
+ /* Note: because of ImageMagick bogosity, this must be included first, so
+ * we can undefine the PACKAGE_* symbols it splats into our namespace */
+-#include <magick/api.h>
++#include <MagickCore/MagickCore.h>
+ #undef PACKAGE_BUGREPORT
+ #undef PACKAGE_NAME
+ #undef PACKAGE_STRING
+@@ -111,9 +111,9 @@
+ Image *pattern, *resized, *orig = 0;
+ ImageInfo *image_info;
+
+- PixelPacket *pixel_packet;
++ Quantum *pixel_quantum;
+ pixelsMask *pixel_last;
+- ExceptionInfo exception_info;
++ ExceptionInfo *exception_info;
+
+ if(ptr->tag & TC_FILTER_GET_CONFIG) {
+ char buf[128];
+@@ -139,7 +139,7 @@
+ if(ptr->tag & TC_FILTER_INIT)
+ {
+
+- unsigned int t,r,index;
++ unsigned int t,r;
+ pixelsMask *temp;
+
+ compare[instance] = tc_malloc(sizeof(compareData));
+@@ -190,22 +190,22 @@
+ tc_log_perror(MOD_NAME, "could not open file for writing");
+ }
+
+- InitializeMagick("");
++ MagickCoreGenesis("", MagickFalse);
+ if (verbose > 1)
+ tc_log_info(MOD_NAME, "Magick Initialized successfully");
+
+- GetExceptionInfo(&exception_info);
++ exception_info = AcquireExceptionInfo();
+ image_info = CloneImageInfo ((ImageInfo *) NULL);
+ strlcpy(image_info->filename, pattern_name, MaxTextExtent);
+ if (verbose > 1)
+ tc_log_info(MOD_NAME, "Trying to open image");
+ orig = ReadImage(image_info,
+- &exception_info);
++ exception_info);
+
+ if (orig == (Image *) NULL) {
+- MagickWarning(exception_info.severity,
+- exception_info.reason,
+- exception_info.description);
++ MagickWarning(exception_info->severity,
++ exception_info->reason,
++ exception_info->description);
+ strlcpy(pattern_name, "/dev/null", sizeof(pattern_name));
+ }else{
+ if (verbose > 1)
+@@ -228,42 +228,41 @@
+ if (orig != NULL){
+ // Flip and resize
+ if (compare[instance]->vob->im_v_codec == CODEC_YUV)
+- TransformRGBImage(orig,YCbCrColorspace);
++ TransformImageColorspace(orig, YCbCrColorspace, exception_info);
+ if (verbose > 1) tc_log_info(MOD_NAME, "Resizing the Image");
+ resized = ResizeImage(orig,
+ compare[instance]->width,
+ compare[instance]->height,
+ GaussianFilter,
+- 1,
+- &exception_info);
++ exception_info);
+ if (verbose > 1)
+ tc_log_info(MOD_NAME, "Flipping the Image");
+- pattern = FlipImage(resized, &exception_info);
++ pattern = FlipImage(resized, exception_info);
+ if (pattern == (Image *) NULL) {
+- MagickError (exception_info.severity,
+- exception_info.reason,
+- exception_info.description);
++ MagickError (exception_info->severity,
++ exception_info->reason,
++ exception_info->description);
+ }
+
+ // Filling the matrix with the pixels values not
+ // alpha
+
+ if (verbose > 1) tc_log_info(MOD_NAME, "GetImagePixels");
+- pixel_packet = GetImagePixels(pattern,0,0,
++ pixel_quantum = GetAuthenticPixels(pattern,0,0,
+ pattern->columns,
+- pattern->rows);
++ pattern->rows,
++ exception_info);
+
+ if (verbose > 1) tc_log_info(MOD_NAME, "Filling the Image matrix");
+ for (t = 0; t < pattern->rows; t++)
+ for (r = 0; r < pattern->columns; r++){
+- index = t*pattern->columns + r;
+- if (pixel_packet[index].opacity == 0){
++ if (GetPixelAlpha(pattern, pixel_quantum) == QuantumRange) {
+ temp=tc_malloc(sizeof(struct pixelsMask));
+ temp->row=t;
+ temp->col=r;
+- temp->r = (uint8_t)ScaleQuantumToChar(pixel_packet[index].red);
+- temp->g = (uint8_t)ScaleQuantumToChar(pixel_packet[index].green);
+- temp->b = (uint8_t)ScaleQuantumToChar(pixel_packet[index].blue);
++ temp->r = (uint8_t)ScaleQuantumToChar(GetPixelRed(pattern, pixel_quantum));
++ temp->g = (uint8_t)ScaleQuantumToChar(GetPixelGreen(pattern, pixel_quantum));
++ temp->b = (uint8_t)ScaleQuantumToChar(GetPixelBlue(pattern, pixel_quantum));
+ temp->next=NULL;
+
+ if (pixel_last == NULL){
+@@ -274,6 +273,7 @@
+ pixel_last = temp;
+ }
+ }
++ pixel_quantum += GetPixelChannels(pattern);
+ }
+
+ if (verbose)
+@@ -297,7 +297,7 @@
+ fclose(compare[instance]->results);
+ free(compare[instance]);
+ }
+- DestroyMagick();
++ MagickCoreTerminus();
+ compare[instance]=NULL;
+
+ return(0);
+--- transcode-1.1.7/filter/filter_logoaway.c
++++ transcode-1.1.7/filter/filter_logoaway.c
+@@ -70,7 +70,7 @@
+
+ /* Note: because of ImageMagick bogosity, this must be included first, so
+ * we can undefine the PACKAGE_* symbols it splats into our namespace */
+-#include <magick/api.h>
++#include <MagickCore/MagickCore.h>
+ #undef PACKAGE_BUGREPORT
+ #undef PACKAGE_NAME
+ #undef PACKAGE_STRING
+@@ -103,10 +103,10 @@
+
+ int alpha;
+
+- ExceptionInfo exception_info;
++ ExceptionInfo *exception_info;
+ Image *image;
+ ImageInfo *image_info;
+- PixelPacket *pixel_packet;
++ Quantum *pixel_packet;
+
+ int dump;
+ char *dump_buf;
+@@ -174,7 +174,7 @@
+ * instance filter instance
+ * @return void nothing
+ *********************************************************/
+-static void work_with_rgb_frame(logoaway_data *LD, char *buffer, int width, int height)
++static void work_with_rgb_frame(logoaway_data *LD, unsigned char *buffer, int width, int height)
+ {
+ int row, col, i;
+ int xdistance, ydistance, distance_west, distance_north;
+@@ -201,10 +201,10 @@
+ }
+ }
+
+- LD->dumpimage = ConstituteImage(LD->width-LD->xpos, LD->height-LD->ypos, "RGB", CharPixel, LD->dump_buf, &LD->exception_info);
++ LD->dumpimage = ConstituteImage(LD->width-LD->xpos, LD->height-LD->ypos, "RGB", CharPixel, LD->dump_buf, LD->exception_info);
+ tc_snprintf(LD->dumpimage->filename, MaxTextExtent, "dump[%d].png", LD->id);
+
+- WriteImage(LD->dumpimage_info, LD->dumpimage);
++ WriteImage(LD->dumpimage_info, LD->dumpimage, LD->exception_info);
+ }
+
+ switch(LD->mode) {
+@@ -218,27 +218,28 @@
+ for(row=LD->ypos; row<LD->height; ++row) {
+ for(col=LD->xpos; col<LD->width; ++col) {
+
++ Quantum *pixel = LD->pixel_packet + (row*LD->width+col)*GetPixelChannels(LD->image);
+ buf_off = ((height-row)*width+col) * 3;
+ pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos);
+ /* R */
+ if (!LD->alpha) {
+ buffer[buf_off +0] = LD->rcolor;
+ } else {
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
+ buffer[buf_off +0] = alpha_blending(buffer[buf_off +0], LD->rcolor, alpha_px);
+ }
+ /* G */
+ if (!LD->alpha) {
+ buffer[buf_off +1] = LD->gcolor;
+ } else {
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].green);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelGreen(LD->image, pixel));
+ buffer[buf_off +1] = alpha_blending(buffer[buf_off +1], LD->gcolor, alpha_px);
+ }
+ /* B */
+ if (!LD->alpha) {
+ buffer[buf_off +2] = LD->bcolor;
+ } else {
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].blue);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelBlue(LD->image, pixel));
+ buffer[buf_off +2] = alpha_blending(buffer[buf_off +2], LD->bcolor, alpha_px);
+ }
+ }
+@@ -268,6 +269,7 @@
+ buf_off = ((height-row)*width+col) * 3;
+
+ pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos);
++ Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image);
+
+ /* R */
+ hcalc = alpha_blending(buffer[buf_off_xpos +0], buffer[buf_off_width +0], alpha_hori);
+@@ -276,7 +278,7 @@
+ if (!LD->alpha) {
+ buffer[buf_off +0] = new_px;
+ } else {
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
+ buffer[buf_off +0] = alpha_blending(buffer[buf_off +0], new_px, alpha_px);
+ }
+ /* G */
+@@ -286,7 +288,7 @@
+ if (!LD->alpha) {
+ buffer[buf_off +1] = new_px;
+ } else {
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].green);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelGreen(LD->image, pixel));
+ buffer[buf_off +1] = alpha_blending(buffer[buf_off +1], new_px, alpha_px);
+ }
+ /* B */
+@@ -296,7 +298,7 @@
+ if (!LD->alpha) {
+ buffer[buf_off +2] = new_px;
+ } else {
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelBlue(LD->image, pixel));
+ buffer[buf_off +2] = alpha_blending(buffer[buf_off +2], new_px, alpha_px);
+ }
+ }
+@@ -327,28 +329,28 @@
+ buf_off_height = ((height-LD->height)*width+col) * 3;
+
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i)*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (col-i>LD->xpos))
+ i++;
+ buf_off_xpos = ((height-row)*width + col-i) * 3;
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i)*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (col+i<LD->width))
+ i++;
+ buf_off_width = ((height-row)*width + col+i) * 3;
+
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i*(LD->width-LD->xpos)].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (row-i>LD->ypos))
+ i++;
+ buf_off_ypos = (height*width*3)-((row-i)*width - col) * 3;
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i*(LD->width-LD->xpos)].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (row+i<LD->height))
+ i++;
+ buf_off_height = (height*width*3)-((row+i)*width - col) * 3;
+
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + pkt_off*GetPixelChannels(LD->image)));
+ /* R */
+ hcalc = alpha_blending(buffer[buf_off_xpos +0], buffer[buf_off_width +0], alpha_hori);
+ vcalc = alpha_blending(buffer[buf_off_ypos +0], buffer[buf_off_height +0], alpha_vert);
+@@ -405,7 +407,7 @@
+ * instance filter instance
+ * @return void nothing
+ *********************************************************/
+-static void work_with_yuv_frame(logoaway_data *LD, char *buffer, int width, int height)
++static void work_with_yuv_frame(logoaway_data *LD, unsigned char *buffer, int width, int height)
+ {
+ int row, col, i;
+ int craddr, cbaddr;
+@@ -431,10 +433,11 @@
+
+ buf_off = row*width+col;
+ pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos);
++ Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image);
+ if (!LD->alpha) {
+ buffer[buf_off] = LD->ycolor;
+ } else {
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
+ buffer[buf_off] = alpha_blending(buffer[buf_off], LD->ycolor, alpha_px);
+ }
+ }
+@@ -446,8 +449,9 @@
+
+ buf_off = row*width/2+col;
+ pkt_off = (row*2-LD->ypos) * (LD->width-LD->xpos) + (col*2-LD->xpos);
++ Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image);
+ /* sic */
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
+ if (!LD->alpha) {
+ buffer[craddr + buf_off] = LD->ucolor;
+ buffer[cbaddr + buf_off] = LD->vcolor;
+@@ -483,10 +487,11 @@
+ buf_off_height = LD->height*width+col;
+
+ pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos);
++ Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image);
+
+ hcalc = alpha_blending(buffer[buf_off_xpos], buffer[buf_off_width], alpha_hori);
+ vcalc = alpha_blending(buffer[buf_off_ypos], buffer[buf_off_height], alpha_vert);
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
+ new_px = (hcalc*LD->xweight + vcalc*LD->yweight)/100;
+ if (!LD->alpha) {
+ buffer[buf_off] = new_px;
+@@ -517,7 +522,8 @@
+ buf_off_height = LD->height/2*width/2+col;
+
+ pkt_off = (row*2-LD->ypos) * (LD->width-LD->xpos) + (col*2-LD->xpos);
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
++ Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
+ /* sic, reuse red alpha_px */
+
+ hcalc = alpha_blending(buffer[craddr + buf_off_xpos], buffer[craddr + buf_off_width], alpha_hori);
+@@ -560,30 +566,30 @@
+ pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos);
+
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i)*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (col-i>LD->xpos))
+ i++;
+ buf_off_xpos = (row*width + col-i);
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i)*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (col+i<LD->width))
+ i++;
+ buf_off_width = (row*width + col+i);
+
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i*(LD->width-LD->xpos)].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (row-i>LD->ypos))
+ i++;
+ buf_off_ypos = ((row-i)*width + col);
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i*(LD->width-LD->xpos)].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (row+i<LD->height))
+ i++;
+ buf_off_height = ((row+i)*width + col);
+
+ hcalc = alpha_blending( buffer[buf_off_xpos], buffer[buf_off_width], alpha_hori );
+ vcalc = alpha_blending( buffer[buf_off_ypos], buffer[buf_off_height], alpha_vert );
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + pkt_off*GetPixelChannels(LD->image)));
+ new_px = (hcalc*LD->xweight + vcalc*LD->yweight)/100;
+ buffer[buf_off] = alpha_blending(buffer[buf_off], new_px, alpha_px);
+ }
+@@ -603,23 +609,23 @@
+ alpha_hori = xdistance * distance_west;
+
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i)*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (col-i>LD->xpos))
+ i++;
+ buf_off_xpos = (row*width/2 + col-i);
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i)*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (col+i<LD->width))
+ i++;
+ buf_off_width = (row*width/2 + col+i);
+
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i*(LD->width-LD->xpos)].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (row-i>LD->ypos))
+ i++;
+ buf_off_ypos = ((row-i)*width/2 + col);
+ i = 0;
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i*(LD->width-LD->xpos)].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
+ while ((alpha_px != 255) && (row+i<LD->height))
+ i++;
+ buf_off_height = ((row+i)*width/2 + col);
+@@ -630,7 +636,7 @@
+
+ pkt_off = (row*2-LD->ypos) * (LD->width-LD->xpos) + (col*2-LD->xpos);
+
+- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
++ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + pkt_off*GetPixelChannels(LD->image)));
+ /* sic: reuse the red component */
+ hcalc = alpha_blending(buffer[craddr + buf_off_xpos], buffer[craddr + buf_off_width], alpha_hori);
+ vcalc = alpha_blending(buffer[craddr + buf_off_ypos], buffer[craddr + buf_off_height], alpha_vert);
+@@ -815,17 +821,17 @@
+ }
+
+ if((data[instance]->alpha) || (data[instance]->dump)) {
+- InitializeMagick("");
+- GetExceptionInfo(&data[instance]->exception_info);
++ MagickCoreGenesis("", MagickFalse);
++ data[instance]->exception_info = AcquireExceptionInfo();
+
+ if(data[instance]->alpha) {
+ data[instance]->image_info = CloneImageInfo((ImageInfo *) NULL);
+
+ strlcpy(data[instance]->image_info->filename, data[instance]->file, MaxTextExtent);
+- data[instance]->image = ReadImage(data[instance]->image_info, &data[instance]->exception_info);
++ data[instance]->image = ReadImage(data[instance]->image_info, data[instance]->exception_info);
+ if (data[instance]->image == (Image *) NULL) {
+ tc_log_error(MOD_NAME, "\n");
+- MagickWarning (data[instance]->exception_info.severity, data[instance]->exception_info.reason, data[instance]->exception_info.description);
++ MagickWarning (data[instance]->exception_info->severity, data[instance]->exception_info->reason, data[instance]->exception_info->description);
+ return TC_ERROR;
+ }
+
+@@ -835,7 +841,7 @@
+ return TC_ERROR;
+ }
+
+- data[instance]->pixel_packet = GetImagePixels(data[instance]->image, 0, 0, data[instance]->image->columns, data[instance]->image->rows);
++ data[instance]->pixel_packet = GetAuthenticPixels(data[instance]->image, 0, 0, data[instance]->image->columns, data[instance]->image->rows, data[instance]->exception_info);
+ }
+ if(data[instance]->dump) {
+ if((data[instance]->dump_buf = tc_malloc ((data[instance]->width-data[instance]->xpos)*(data[instance]->height-data[instance]->ypos)*3)) == NULL)
+@@ -865,10 +871,9 @@
+ if (data[instance]->dumpimage != (Image *)NULL) {
+ DestroyImage(data[instance]->dumpimage);
+ DestroyImageInfo(data[instance]->dumpimage_info);
+- ConstituteComponentTerminus();
+ }
+- DestroyExceptionInfo(&data[instance]->exception_info);
+- DestroyMagick();
++ DestroyExceptionInfo(data[instance]->exception_info);
++ MagickCoreTerminus();
+
+ if(data[instance]->dump_buf) free(data[instance]->dump_buf);
+ if(data[instance]) free(data[instance]);
+--- transcode-1.1.7/filter/filter_logo.c
++++ transcode-1.1.7/filter/filter_logo.c
+@@ -36,7 +36,7 @@
+
+ /* Note: because of ImageMagick bogosity, this must be included first, so
+ * we can undefine the PACKAGE_* symbols it splats into our namespace */
+-#include <magick/api.h>
++#include <MagickCore/MagickCore.h>
+ #undef PACKAGE_BUGREPORT
+ #undef PACKAGE_NAME
+ #undef PACKAGE_STRING
+@@ -227,7 +227,8 @@
+ ImageFormat ifmt,
+ int do_rgbswap)
+ {
+- PixelPacket *pixel_packet;
++ ExceptionInfo *exception_info;
++ Quantum *pixel_packet;
+ uint8_t *dst_ptr = dst;
+
+ int row, col;
+@@ -246,16 +247,17 @@
+ }
+ g_off = 1;
+
+- pixel_packet = GetImagePixels(src, 0, 0, width, height);
++ exception_info = AcquireExceptionInfo();
++ pixel_packet = GetAuthenticPixels(src, 0, 0, width, height, exception_info);
+
+ for (row = 0; row < height; row++) {
+ for (col = 0; col < width; col++) {
+- *(dst_ptr + r_off) = (uint8_t)ScaleQuantumToChar(pixel_packet->red);
+- *(dst_ptr + g_off) = (uint8_t)ScaleQuantumToChar(pixel_packet->green);
+- *(dst_ptr + b_off) = (uint8_t)ScaleQuantumToChar(pixel_packet->blue);
++ *(dst_ptr + r_off) = (uint8_t)ScaleQuantumToChar(GetPixelRed(src, pixel_packet));
++ *(dst_ptr + g_off) = (uint8_t)ScaleQuantumToChar(GetPixelGreen(src, pixel_packet));
++ *(dst_ptr + b_off) = (uint8_t)ScaleQuantumToChar(GetPixelBlue(src, pixel_packet));
+
+ dst_ptr += 3;
+- pixel_packet++;
++ pixel_packet += GetPixelChannels(src);
+ }
+ }
+
+@@ -310,7 +312,7 @@
+ Image *timg;
+ Image *nimg;
+ ImageInfo *image_info;
+- ExceptionInfo exception_info;
++ ExceptionInfo *exception_info;
+
+ int rgb_off = 0;
+
+@@ -376,19 +378,19 @@
+ * semaphore.
+ */
+ magick_usecount++;
+- if (!IsMagickInstantiated()) {
+- InitializeMagick("");
++ if (!IsMagickCoreInstantiated()) {
++ MagickCoreGenesis("", MagickFalse);
+ }
+
+- GetExceptionInfo(&exception_info);
++ exception_info = AcquireExceptionInfo();
+ image_info = CloneImageInfo((ImageInfo *) NULL);
+ strlcpy(image_info->filename, mfd->file, MaxTextExtent);
+
+- mfd->image = ReadImage(image_info, &exception_info);
++ mfd->image = ReadImage(image_info, exception_info);
+ if (mfd->image == (Image *) NULL) {
+- MagickWarning(exception_info.severity,
+- exception_info.reason,
+- exception_info.description);
++ MagickWarning(exception_info->severity,
++ exception_info->reason,
++ exception_info->description);
+ strlcpy(mfd->file, "/dev/null", PATH_MAX);
+ return 0;
+ }
+@@ -413,11 +415,11 @@
+
+ while (mfd->images != (Image *)NULL) {
+ if (mfd->flip || flip) {
+- timg = FlipImage(mfd->images, &exception_info);
++ timg = FlipImage(mfd->images, exception_info);
+ if (timg == (Image *) NULL) {
+- MagickError(exception_info.severity,
+- exception_info.reason,
+- exception_info.description);
++ MagickError(exception_info->severity,
++ exception_info->reason,
++ exception_info->description);
+ return -1;
+ }
+ AppendImageToList(&nimg, timg);
+@@ -573,7 +575,7 @@
+ /* Set up image/video coefficient lookup tables */
+ if (img_coeff_lookup[0] < 0) {
+ int i;
+- float maxrgbval = (float)MaxRGB; // from ImageMagick
++ float maxrgbval = (float)QuantumRange; // from ImageMagick
+
+ for (i = 0; i <= MAX_UINT8_VAL; i++) {
+ float x = (float)ScaleCharToQuantum(i);
+@@ -615,8 +617,8 @@
+ }
+
+ magick_usecount--;
+- if (magick_usecount == 0 && IsMagickInstantiated()) {
+- DestroyMagick();
++ if (magick_usecount == 0 && IsMagickCoreInstantiated()) {
++ MagickCoreTerminus();
+ }
+
+ return 0;
+@@ -638,7 +640,8 @@
+ && (ptr->tag & TC_VIDEO)
+ && !(ptr->attributes & TC_FRAME_IS_SKIPPED)
+ ) {
+- PixelPacket *pixel_packet;
++ ExceptionInfo *exception_info;
++ Quantum *pixel_packet;
+ uint8_t *video_buf;
+
+ int do_fade = 0;
+@@ -647,6 +650,7 @@
+
+ /* Note: ImageMagick defines opacity = 0 as fully visible, and
+ * opacity = MaxRGB as fully transparent.
++ * alpha rather than opacity (0 transparent; QuantumRange opaque).
+ */
+ Quantum opacity;
+
+@@ -682,9 +686,11 @@
+ mfd->cur_delay = mfd->images->delay * vob->fps/100;
+ }
+
+- pixel_packet = GetImagePixels(mfd->images, 0, 0,
++ exception_info = AcquireExceptionInfo();
++ pixel_packet = GetAuthenticPixels(mfd->images, 0, 0,
+ mfd->images->columns,
+- mfd->images->rows);
++ mfd->images->rows,
++ exception_info);
+
+ if (vob->im_v_codec == CODEC_RGB) {
+ unsigned long r_off, g_off, b_off;
+@@ -702,30 +708,30 @@
+ video_buf = ptr->video_buf + 3 * ((row + mfd->posy) * vob->ex_v_width + mfd->posx);
+
+ for (col = 0; col < mfd->image->columns; col++) {
+- opacity = pixel_packet->opacity;
++ opacity = QuantumRange - GetPixelAlpha(mfd->images, pixel_packet);
+
+ if (do_fade)
+- opacity += (Quantum)((MaxRGB - opacity) * fade_coeff);
++ opacity += (Quantum)((QuantumRange - opacity) * fade_coeff);
+
+ if (opacity == 0) {
+- *(video_buf + r_off) = ScaleQuantumToChar(pixel_packet->red);
+- *(video_buf + g_off) = ScaleQuantumToChar(pixel_packet->green);
+- *(video_buf + b_off) = ScaleQuantumToChar(pixel_packet->blue);
+- } else if (opacity < MaxRGB) {
++ *(video_buf + r_off) = ScaleQuantumToChar(GetPixelRed(mfd->images, pixel_packet));
++ *(video_buf + g_off) = ScaleQuantumToChar(GetPixelGreen(mfd->images, pixel_packet));
++ *(video_buf + b_off) = ScaleQuantumToChar(GetPixelBlue(mfd->images, pixel_packet));
++ } else if (opacity < QuantumRange) {
+ unsigned char opacity_uchar = ScaleQuantumToChar(opacity);
+ img_coeff = img_coeff_lookup[opacity_uchar];
+ vid_coeff = vid_coeff_lookup[opacity_uchar];
+
+ *(video_buf + r_off) = (uint8_t)((*(video_buf + r_off)) * vid_coeff)
+- + (uint8_t)(ScaleQuantumToChar(pixel_packet->red) * img_coeff);
++ + (uint8_t)(ScaleQuantumToChar(GetPixelRed(mfd->images, pixel_packet)) * img_coeff);
+ *(video_buf + g_off) = (uint8_t)((*(video_buf + g_off)) * vid_coeff)
+- + (uint8_t)(ScaleQuantumToChar(pixel_packet->green) * img_coeff);
++ + (uint8_t)(ScaleQuantumToChar(GetPixelGreen(mfd->images, pixel_packet)) * img_coeff);
+ *(video_buf + b_off) = (uint8_t)((*(video_buf + b_off)) * vid_coeff)
+- + (uint8_t)(ScaleQuantumToChar(pixel_packet->blue) * img_coeff);
++ + (uint8_t)(ScaleQuantumToChar(GetPixelBlue(mfd->images, pixel_packet)) * img_coeff);
+ }
+
+ video_buf += 3;
+- pixel_packet++;
++ pixel_packet += GetPixelChannels(mfd->images);
+ }
+ }
+ } else { /* !RGB */
+@@ -745,10 +751,10 @@
+ vid_pixel_V = vid_pixel_U + vid_size/4;
+ for (col = 0; col < mfd->images->columns; col++) {
+ int do_UV_pixels = (mfd->grayout == 0 && !(row % 2) && !(col % 2)) ? 1 : 0;
+- opacity = pixel_packet->opacity;
++ opacity = QuantumRange - GetPixelAlpha(mfd->images, pixel_packet);
+
+ if (do_fade)
+- opacity += (Quantum)((MaxRGB - opacity) * fade_coeff);
++ opacity += (Quantum)((QuantumRange - opacity) * fade_coeff);
+
+ if (opacity == 0) {
+ *vid_pixel_Y = *img_pixel_Y;
+@@ -756,7 +762,7 @@
+ *vid_pixel_U = *img_pixel_U;
+ *vid_pixel_V = *img_pixel_V;
+ }
+- } else if (opacity < MaxRGB) {
++ } else if (opacity < QuantumRange) {
+ unsigned char opacity_uchar = ScaleQuantumToChar(opacity);
+ img_coeff = img_coeff_lookup[opacity_uchar];
+ vid_coeff = vid_coeff_lookup[opacity_uchar];
+--- transcode-1.1.7/import/import_im.c
++++ transcode-1.1.7/import/import_im.c
+@@ -34,9 +34,9 @@
+ /* Note: because of ImageMagick bogosity, this must be included first, so
+ * we can undefine the PACKAGE_* symbols it splats into our namespace */
+ #ifdef HAVE_BROKEN_WAND
+-#include <wand/magick-wand.h>
++#include <MagickWand/MagickWand.h>
+ #else /* we have a SANE wand header */
+-#include <wand/MagickWand.h>
++#include <MagickWand/MagickWand.h>
+ #endif /* HAVE_BROKEN_WAND */
+
+ #undef PACKAGE_BUGREPORT
+--- transcode-1.1.7/import/import_imlist.c
++++ transcode-1.1.7/import/import_imlist.c
+@@ -34,9 +34,9 @@
+ /* Note: because of ImageMagick bogosity, this must be included first, so
+ * we can undefine the PACKAGE_* symbols it splats into our namespace */
+ #ifdef HAVE_BROKEN_WAND
+-#include <wand/magick-wand.h>
++#include <MagickWand/MagickWand.h>
+ #else /* we have a SANE wand header */
+-#include <wand/MagickWand.h>
++#include <MagickWand/MagickWand.h>
+ #endif /* HAVE_BROKEN_WAND */
+
+ #undef PACKAGE_BUGREPORT
+--- transcode-1.1.7/import/probe_im.c
++++ transcode-1.1.7/import/probe_im.c
+@@ -40,9 +40,9 @@
+ # undef PACKAGE_VERSION
+
+ # ifdef HAVE_BROKEN_WAND
+-# include <wand/magick-wand.h>
++# include <MagickWand/MagickWand.h>
+ # else /* we have a SANE wand header */
+-# include <wand/MagickWand.h>
++# include <MagickWand/MagickWand.h>
+ # endif /* HAVE_BROKEN_WAND */
+
+ # undef PACKAGE_BUGREPORT
diff --git a/multimedia/transcode/transcode.SlackBuild b/multimedia/transcode/transcode.SlackBuild
index 1c07cbc57e..d9a7341eb2 100644
--- a/multimedia/transcode/transcode.SlackBuild
+++ b/multimedia/transcode/transcode.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for transcode
@@ -11,21 +11,24 @@
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=transcode
VERSION=${VERSION:-1.1.7}
-BUILD=${BUILD:-5}
+BUILD=${BUILD:-6}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -80,6 +90,15 @@ patch -p1 -i $CWD/transcode-1.1.7-preset-force.patch
patch -p1 -i $CWD/transcode-1.1.7-ffmpeg2.patch
patch -p1 -i $CWD/transcode-1.1.7-ffmpeg24.patch
patch -p1 -i $CWD/transcode-1.1.7-ffmpeg29.patch
+patch -p1 -i $CWD/transcode-1.1.7-ffmpeg4.patch
+# Fix building with imagemagick 7.x
+patch -p1 -i $CWD/transcode-1.1.7-imagemagick7.patch
+patch -p1 -i $CWD/transcode-1.1.7-gcc10.patch
+patch -p1 -i $CWD/transcode-1.1.7-glibc-2.32.patch
+
+autoreconf -vif
+
+export MAGICKCORE_QUANTUM_DEPTH=32
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -92,7 +111,6 @@ CXXFLAGS="$SLKCFLAGS" \
--mandir=/usr/man \
--enable-alsa \
--enable-v4l \
- --enable-libv4l2 \
--enable-libv4lconvert \
--enable-libmpeg2=${LIBMPEG2:-no} \
--enable-libmpeg2convert=${LIBMPEG2:-no} \
@@ -109,7 +127,7 @@ CXXFLAGS="$SLKCFLAGS" \
--enable-libquicktime=${QUICKTIME:-no} \
--enable-mjpegtools=${MJPEGTOOLS:-no} \
--enable-a52 \
- --enable-lame=${LAME:-no} \
+ --enable-lame \
--enable-nuv \
--enable-lzo \
--enable-libpostproc \
@@ -146,4 +164,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/transcode/transcode.info b/multimedia/transcode/transcode.info
index 8dd9343554..d398d919e0 100644
--- a/multimedia/transcode/transcode.info
+++ b/multimedia/transcode/transcode.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://sources.archlinux.org/other/community/transcode/transcode-1.1.
MD5SUM="9bb25a796a8591fb764de46ee87ce505"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg"
+REQUIRES=""
MAINTAINER="Heinz Wiesinger"
-EMAIL="pprkut@liwjatan.at"
+EMAIL="pprkut@slackbuilds.org"
diff --git a/multimedia/tsduck/README b/multimedia/tsduck/README
new file mode 100644
index 0000000000..8fa326df9c
--- /dev/null
+++ b/multimedia/tsduck/README
@@ -0,0 +1,28 @@
+TSDuck is an extensible toolkit for MPEG transport streams.
+It is used in digital television systems
+for test, monitoring, integration, debug, lab, demo.
+
+In practice, TSDuck can be used for:
+- Transport stream acquisition or transmodulation, including
+ DVB, ATSC, ISDB, ASI and IP multicast.
+- Analyze transport streams, PSI/SI signalization, bitrates,
+ timestamps.
+- Monitor and report conditions on the stream (video and audio
+ properties, bitrates, crypto-periods, signalization).
+- On-the-fly transformation or injection of content and signalization.
+- Modify, remove, rename, extract services.
+- Work on live transport streams, DVB-S/C/T, ATSC, ISDB-S/T, ASI,
+ IP-TV, HTTP, HLS, SRT, RIST or offline transport stream files.
+- Receive from or send to specialized hardware such as:
+ · Cheap DVB, ATSC or ISDB tuners (USB, PCI).
+ · Professional Dektec devices, ASI, modulators (USB, PCI).
+ ·HiDes modulators (USB).
+ · VATek-based modulators (USB) such as the Suntechtv U3.
+- Re-route transport streams to other applications.
+- Extract or inject Multi-Protocol Encapsulation (MPE) between TS and
+ UDP/IP.
+- Analyze and inject SCTE 35 splice information.
+- Extract specific encapsulated data (Teletext, T2-MI).
+- Emulate a CAS head-end using DVB SimulCrypt interfaces to and from
+ ECMG or EMMG.
+- And more...
diff --git a/multimedia/mythtv/slack-desc b/multimedia/tsduck/slack-desc
index f997e53b91..a5478535d8 100644
--- a/multimedia/mythtv/slack-desc
+++ b/multimedia/tsduck/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-mythtv: mythtv (mythical home media convergence PVR/DVR)
-mythtv:
-mythtv: MythTV is a GPL licensed suite of programs that allow you
-mythtv: to build the mythical home media convergence (PVR / DVR)
-mythtv: box on your own using Open Source software and operating
-mythtv: systems.
-mythtv:
-mythtv: Homepage: https://www.mythtv.org/
-mythtv:
-mythtv:
-mythtv:
+tsduck: tsduck (The MPEG Transport Stream Toolkit)
+tsduck:
+tsduck: TSDuck is an extensible toolkit for MPEG transport streams.
+tsduck: It is used in digital television systems for test, monitoring,
+tsduck: integration, debug, lab, demo.
+tsduck:
+tsduck:
+tsduck:
+tsduck:
+tsduck: Homepage: https://tsduck.io/
+tsduck:
diff --git a/multimedia/tsduck/tsduck.SlackBuild b/multimedia/tsduck/tsduck.SlackBuild
new file mode 100644
index 0000000000..0fec4b666c
--- /dev/null
+++ b/multimedia/tsduck/tsduck.SlackBuild
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+# Slackware build script for tsduck
+
+# Copyright 2023 Sacchetti Picchio Andrea Italy
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=tsduck
+VERSION=${VERSION:-3.36.3528}
+SRCVERSION=${SRCVERSION:-3.36-3528}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+
+rm -rf $PRGNAM-$SRCVERSION
+unzip $CWD/$PRGNAM-$SRCVERSION.zip
+cd $PRGNAM-$SRCVERSION
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+make $NUMJOBS \
+ NOGITHUB=true \
+ NOTEST=true \
+ SYSPREFIX=/usr \
+ SYSROOT=$PKG \
+ install
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.a
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ *.txt doc/*.pdf \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/tsduck/tsduck.info b/multimedia/tsduck/tsduck.info
new file mode 100644
index 0000000000..276e47042e
--- /dev/null
+++ b/multimedia/tsduck/tsduck.info
@@ -0,0 +1,10 @@
+PRGNAM="tsduck"
+VERSION="3.36.3528"
+HOMEPAGE="https://tsduck.io/"
+DOWNLOAD="https://github.com/tsduck/tsduck/archive/v3.36-3528/tsduck-3.36-3528.zip"
+MD5SUM="35cc6b694ef73d2895e2b1901800b3e8"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Andrea Sacchetti Picchio"
+EMAIL="andrea dot sacchettipicchio at gmail dot com"
diff --git a/multimedia/tstools/README b/multimedia/tstools/README
index bbfee693d2..6b5c1fcbce 100644
--- a/multimedia/tstools/README
+++ b/multimedia/tstools/README
@@ -1,17 +1,20 @@
TStools (Command line tools for working with MPEG data)
-TStools are relatively simple tools which concentrate on MPEG (H.264 and H.262)
-data packaged according to H.222 (i.e., TS or PS), with a particular interest in
-checking for conformance.
+TStools are relatively simple tools which concentrate on MPEG (H.264
+and H.262) data packaged according to H.222 (i.e., TS or PS), with a
+particular interest in checking for conformance.
-Transport Stream (TS) is typically used for distribution of cable and satellite
-data. Program Stream (PS) is typically used to store data on DVDs.
+Transport Stream (TS) is typically used for distribution of cable and
+satellite data. Program Stream (PS) is typically used to store data
+on DVDs.
The tools are focussed on:
- * Quick reporting of useful data (tsinfo, stream_type)
- * Giving a quick overview of the entities in the stream (esdots, psdots)
- * Reporting on TS packets (tsreport) or ES units/frames/fields (esreport)
- * Simple manipulation of stream data (es2ts, esfilter, esreverse, esmerge,
- ts2es)
- * Streaming of data, possibly with introduced errors (tsplay)
+* Quick reporting of useful data (tsinfo, stream_type)
+* Giving a quick overview of the entities in the stream (esdots,
+ psdots)
+* Reporting on TS packets (tsreport) or ES units/frames/fields
+ (esreport)
+* Simple manipulation of stream data (es2ts, esfilter, esreverse,
+ esmerge, ts2es)
+* Streaming of data, possibly with introduced errors (tsplay)
diff --git a/multimedia/tstools/tstools.SlackBuild b/multimedia/tstools/tstools.SlackBuild
index 25859984bb..af338029ce 100644
--- a/multimedia/tstools/tstools.SlackBuild
+++ b/multimedia/tstools/tstools.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for tstools
@@ -22,26 +22,36 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=tstools
VERSION=${VERSION:-20151030_db1f79f}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -93,4 +103,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/tvheadend/libhdhomerun.diff b/multimedia/tvheadend/libhdhomerun.diff
new file mode 100644
index 0000000000..e3551769cf
--- /dev/null
+++ b/multimedia/tvheadend/libhdhomerun.diff
@@ -0,0 +1,16 @@
+diff -Naur tvheadend-4.2.8/Makefile.hdhomerun tvheadend-4.2.8.patched/Makefile.hdhomerun
+--- tvheadend-4.2.8/Makefile.hdhomerun 2019-01-12 03:58:47.000000000 -0500
++++ tvheadend-4.2.8.patched/Makefile.hdhomerun 2022-02-16 13:55:18.391084069 -0500
+@@ -32,10 +32,10 @@
+ # Upstream Packages
+ # ###########################################################################
+
+-LIBHDHR = libhdhomerun_20171221
++LIBHDHR = libhdhomerun_20210624
+ LIBHDHR_TB = $(LIBHDHR).tgz
+ LIBHDHR_URL = http://download.silicondust.com/hdhomerun/$(LIBHDHR_TB)
+-LIBHDHR_SHA1 = 6b019728eadea3af7a5686ed5ba44e970bca7365
++LIBHDHR_SHA1 = 9db6089b956de4e58084b623937f5fc3231fff0b
+
+ # ###########################################################################
+ # Library Config
diff --git a/multimedia/tvheadend/tvheadend-4.2.8-fno-common.patch b/multimedia/tvheadend/tvheadend-4.2.8-fno-common.patch
new file mode 100644
index 0000000000..23f48652f9
--- /dev/null
+++ b/multimedia/tvheadend/tvheadend-4.2.8-fno-common.patch
@@ -0,0 +1,55 @@
+From 1f2a0a59e3acaef88509d3ac899b905c73b7b8f8 Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <chewi@gentoo.org>
+Date: Fri, 15 May 2020 17:45:30 +0100
+Subject: [PATCH] Fix building with -fno-common (default from GCC 10)
+
+---
+ src/input.h | 4 ++--
+ src/input/mpegts.c | 2 ++
+ src/input/mpegts.h | 2 +-
+ 3 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/input.h b/src/input.h
+index a9c96df04..3dce355c6 100644
+--- a/src/input.h
++++ b/src/input.h
+@@ -133,8 +133,8 @@ void tvh_hardware_delete ( tvh_hardware_t *th );
+ extern const idclass_t tvh_input_class;
+ extern const idclass_t tvh_input_instance_class;
+
+-tvh_input_list_t tvh_inputs;
+-tvh_hardware_list_t tvh_hardware;
++extern tvh_input_list_t tvh_inputs;
++extern tvh_hardware_list_t tvh_hardware;
+
+ #define TVH_INPUT_FOREACH(x) LIST_FOREACH(x, &tvh_inputs, ti_link)
+ #define TVH_HARDWARE_FOREACH(x) LIST_FOREACH(x, &tvh_hardware, th_link)
+diff --git a/src/input/mpegts.c b/src/input/mpegts.c
+index e02d491f1..fca4f3429 100644
+--- a/src/input/mpegts.c
++++ b/src/input/mpegts.c
+@@ -20,6 +20,8 @@
+ #include "mpegts/fastscan.h"
+ #include "memoryinfo.h"
+
++struct mpegts_listeners mpegts_listeners;
++
+ extern memoryinfo_t mpegts_input_queue_memoryinfo;
+ extern memoryinfo_t mpegts_input_table_memoryinfo;
+
+diff --git a/src/input/mpegts.h b/src/input/mpegts.h
+index 9dda3baca..9c4c57b73 100644
+--- a/src/input/mpegts.h
++++ b/src/input/mpegts.h
+@@ -1149,7 +1149,7 @@ typedef struct mpegts_listener
+ void (*ml_mux_delete) (mpegts_mux_t *mm, void *p);
+ } mpegts_listener_t;
+
+-LIST_HEAD(,mpegts_listener) mpegts_listeners;
++extern LIST_HEAD(mpegts_listeners, mpegts_listener) mpegts_listeners;
+
+ #define mpegts_add_listener(ml)\
+ LIST_INSERT_HEAD(&mpegts_listeners, ml, ml_link)
+--
+2.26.2
+
diff --git a/multimedia/tvheadend/tvheadend-4.2.8-gcc9.patch b/multimedia/tvheadend/tvheadend-4.2.8-gcc9.patch
new file mode 100644
index 0000000000..9ccadb44c4
--- /dev/null
+++ b/multimedia/tvheadend/tvheadend-4.2.8-gcc9.patch
@@ -0,0 +1,36 @@
+diff -up ./src/plumbing/transcoding.c.orig ./src/plumbing/transcoding.c
+--- ./src/plumbing/transcoding.c.orig 2019-01-12 09:58:47.000000000 +0100
++++ ./src/plumbing/transcoding.c 2019-03-12 15:49:24.922314869 +0100
+@@ -1804,7 +1804,7 @@ transcoder_init_video(transcoder_t *t, s
+ char *str, *token, *saveptr, codec_list[sizeof(tp->tp_src_vcodec)];
+ int codec_match=0;
+
+- strncpy(codec_list, tp->tp_src_vcodec, sizeof(tp->tp_src_vcodec)-1);
++ memcpy(codec_list, tp->tp_src_vcodec, sizeof(tp->tp_src_vcodec)-1);
+
+ tvhtrace(LS_TRANSCODE, "src_vcodec=\"%s\" ssc_type=%d (%s)\n",
+ tp->tp_src_vcodec,
+@@ -2130,10 +2130,10 @@ transcoder_set_properties(streaming_targ
+ transcoder_t *t = (transcoder_t *)st;
+ transcoder_props_t *tp = &t->t_props;
+
+- strncpy(tp->tp_vcodec, props->tp_vcodec, sizeof(tp->tp_vcodec)-1);
+- strncpy(tp->tp_vcodec_preset, props->tp_vcodec_preset, sizeof(tp->tp_vcodec_preset)-1);
+- strncpy(tp->tp_acodec, props->tp_acodec, sizeof(tp->tp_acodec)-1);
+- strncpy(tp->tp_scodec, props->tp_scodec, sizeof(tp->tp_scodec)-1);
++ memcpy(tp->tp_vcodec, props->tp_vcodec, sizeof(tp->tp_vcodec)-1);
++ memcpy(tp->tp_vcodec_preset, props->tp_vcodec_preset, sizeof(tp->tp_vcodec_preset)-1);
++ memcpy(tp->tp_acodec, props->tp_acodec, sizeof(tp->tp_acodec)-1);
++ memcpy(tp->tp_scodec, props->tp_scodec, sizeof(tp->tp_scodec)-1);
+ tp->tp_channels = props->tp_channels;
+ tp->tp_vbitrate = props->tp_vbitrate;
+ tp->tp_abitrate = props->tp_abitrate;
+@@ -2141,7 +2141,7 @@ transcoder_set_properties(streaming_targ
+
+ memcpy(tp->tp_language, props->tp_language, 4);
+
+- strncpy(tp->tp_src_vcodec, props->tp_src_vcodec, sizeof(tp->tp_src_vcodec)-1);
++ memcpy(tp->tp_src_vcodec, props->tp_src_vcodec, sizeof(tp->tp_src_vcodec)-1);
+ }
+
+
diff --git a/multimedia/tvheadend/tvheadend.SlackBuild b/multimedia/tvheadend/tvheadend.SlackBuild
index 623f21723f..fd60f65751 100644
--- a/multimedia/tvheadend/tvheadend.SlackBuild
+++ b/multimedia/tvheadend/tvheadend.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for tvheadend
@@ -22,10 +22,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220216 bkw: Modified by SlackBuilds.org:
+# - stop trying to download files from the SlackBuild. our scripts must
+# run without network access.
+# - fix build for latest libhdhomerun.
+# - disable pcloud, since it fails even if we let the Makefile download it.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=tvheadend
-VERSION=${VERSION:-3.4patch1}
+VERSION=${VERSION:-4.2.8}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +44,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -56,19 +69,30 @@ fi
set -e
+DATAVER=${DATAVER:-$VERSION}
+HDHRVER=${HDHRVER:-20210624}
+
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz || tar xvf $CWD/$VERSION.tar.gz
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+tar xvf $CWD/$PRGNAM-$VERSION-data-dvb-scan.tar.xz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+
+patch -p1 < $CWD/tvheadend-4.2.8-gcc9.patch
+patch -p1 < $CWD/tvheadend-4.2.8-fno-common.patch
+
+# 20220216 bkw: use latest libhdhomerun
+patch -p1 < $CWD/libhdhomerun.diff
+SLKCFLAGS+=" -DHDHOMERUN_TAG_DEVICE_AUTH_BIN=HDHOMERUN_TAG_DEVICE_AUTH_BIN_DEPRECATED"
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -77,10 +101,19 @@ CXXFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
- --enable-libffmpeg_static \
+ --disable-ffmpeg_static \
+ --disable-libx264_static \
+ --disable-libx265_static \
+ --disable-libvpx_static \
+ --disable-libtheora_static \
+ --disable-libvorbis_static \
+ --disable-libfdkaac_static \
+ --python=python3 \
+ --disable-pcloud_cache \
+ --nowerror \
--build=$ARCH-slackware-linux
-make
+make V=1 TVHEADEND_FILE_CACHE=$CWD
make install DESTDIR=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
@@ -99,4 +132,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/tvheadend/tvheadend.info b/multimedia/tvheadend/tvheadend.info
index ad7caed7c3..03cc3310a4 100644
--- a/multimedia/tvheadend/tvheadend.info
+++ b/multimedia/tvheadend/tvheadend.info
@@ -1,10 +1,14 @@
PRGNAM="tvheadend"
-VERSION="3.4patch1"
+VERSION="4.2.8"
HOMEPAGE="https://tvheadend.org"
-DOWNLOAD="https://github.com/tvheadend/tvheadend/archive/3.4patch1.tar.gz"
-MD5SUM="86d1be0ad6e02bd2aecd3d529a026797"
+DOWNLOAD="https://github.com/tvheadend/tvheadend/archive/v4.2.8/tvheadend-4.2.8.tar.gz \
+ https://slackware.uk/~urchlay/src/tvheadend-4.2.8-data-dvb-scan.tar.xz \
+ https://download.silicondust.com/hdhomerun/libhdhomerun_20210624.tgz"
+MD5SUM="b9571efa46dd489f9fe87acdb391d591 \
+ cc49260170f458000c944eac54bf213d \
+ 233844b9238bd42cfdfbbd126a088fd2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="uriparser"
MAINTAINER="William PC"
EMAIL="w_calandrini[at]hotmail[dot]com"
diff --git a/multimedia/tvtime/0001-Fix-warning-implicit-declaration-of-function-minor-m.patch b/multimedia/tvtime/0001-Fix-warning-implicit-declaration-of-function-minor-m.patch
new file mode 100644
index 0000000000..24256d722d
--- /dev/null
+++ b/multimedia/tvtime/0001-Fix-warning-implicit-declaration-of-function-minor-m.patch
@@ -0,0 +1,31 @@
+From bfa96fec44b7db78b43b9b8d20d7ca02616f70ed Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Mon, 13 Aug 2018 17:41:57 +0200
+Subject: Fix: "warning: implicit declaration of function 'minor' / 'major'"
+ errors
+
+Fix the "warning: implicit declaration of function 'minor' / 'major'"
+compiler warnings which ultimately lead to the following build error:
+
+src/get_media_devices.c:522: undefined reference to `major'
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+---
+ src/get_media_devices.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/get_media_devices.c b/src/get_media_devices.c
+index 619734ea..453b0677 100644
+--- a/src/get_media_devices.c
++++ b/src/get_media_devices.c
+@@ -23,6 +23,7 @@
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <sys/sysmacros.h>
+ #include <string.h>
+ #include <stdlib.h>
+ #include <malloc.h>
+--
+2.11.0
+
diff --git a/multimedia/tvtime/README b/multimedia/tvtime/README
index d14df4ab5c..93292b81d2 100644
--- a/multimedia/tvtime/README
+++ b/multimedia/tvtime/README
@@ -1,6 +1,6 @@
-tvtime is a high quality television application for use with video capture
-cards on Linux systems. tvtime processes the input from a capture card and
-displays it on a computer monitor or projector.
+tvtime is a high quality television application for use with video
+capture cards on Linux systems. tvtime processes the input from a
+capture card and displays it on a computer monitor or projector.
-Supported cards and troubleshooting information can be found at the project's
-homepage.
+Supported cards and troubleshooting information can be found at the
+project's homepage.
diff --git a/multimedia/tvtime/tvtime.SlackBuild b/multimedia/tvtime/tvtime.SlackBuild
index ed2d612d24..b1756202ea 100644
--- a/multimedia/tvtime/tvtime.SlackBuild
+++ b/multimedia/tvtime/tvtime.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for tvtime.
@@ -22,34 +22,43 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=tvtime
-VERSION=${VERSION:-1.0.7}
+VERSION=${VERSION:-1.0.11}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-# The INSTALL file recommends avoiding the use of the "-march" flag,
-# and -fPIC on x86_64 results in failure
-if [ "$ARCH" = "i486" ]; then
+# The INSTALL file recommends avoiding the use of the "-march" flag
+if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2"
+ SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
@@ -69,7 +78,9 @@ find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+patch -p1 < $CWD/0001-Fix-warning-implicit-declaration-of-function-minor-m.patch
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -87,13 +98,11 @@ CXXFLAGS="$SLKCFLAGS" \
make
make install DESTDIR=$PKG
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-( cd $PKG/usr/man
- find . -type f -exec gzip -9 {} \;
- for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
-)
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
# Let's not clobber the config file
mv $PKG/etc/tvtime/tvtime.xml $PKG/etc/tvtime/tvtime.xml.new
@@ -101,7 +110,7 @@ mv $PKG/etc/tvtime/tvtime.xml $PKG/etc/tvtime/tvtime.xml.new
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
ABOUT-NLS AUTHORS COPYING* ChangeLog INSTALL NEWS README docs/html \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
@@ -109,4 +118,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/tvtime/tvtime.info b/multimedia/tvtime/tvtime.info
index 366e36ce63..04126667b2 100644
--- a/multimedia/tvtime/tvtime.info
+++ b/multimedia/tvtime/tvtime.info
@@ -1,8 +1,8 @@
PRGNAM="tvtime"
-VERSION="1.0.7"
+VERSION="1.0.11"
HOMEPAGE="http://tvtime.sourceforge.net/"
-DOWNLOAD="http://linuxtv.org/downloads/tvtime/tvtime-1.0.7.tar.gz"
-MD5SUM="d3cea3053ce8ff0d555da82fad138b44"
+DOWNLOAD="http://linuxtv.org/downloads/tvtime/tvtime-1.0.11.tar.gz"
+MD5SUM="f4adba831376a8baad92dbda49056138"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/uavs3d/README b/multimedia/uavs3d/README
new file mode 100644
index 0000000000..003959f13f
--- /dev/null
+++ b/multimedia/uavs3d/README
@@ -0,0 +1,5 @@
+uavs3d is an open source and cross platform avs3 decoder.
+
+This compiles the 10bit version of the decoder.
+
+This is an optional dependency for FFmpeg.
diff --git a/multimedia/uavs3d/changelog b/multimedia/uavs3d/changelog
new file mode 100644
index 0000000000..478e92d365
--- /dev/null
+++ b/multimedia/uavs3d/changelog
@@ -0,0 +1,21 @@
+Changelog for uavs3d SlackBuild Script
+--------------------------------------------------------------------
+
+27/08/2022:
+
+Added to SBo
+
+05/02/2023:
+
+Updated to Github commit 0133ee4
+Patched the cmakelist file to build in i586 and i686 platforms.
+Also patched the file to set the correct lib dir in 64 bit
+platforms.
+
+21/02/2024:
+
+Switched to a versioned one and
+patched it to latest git commit.
+From now on this will build only on x86 and x86_64.
+upstream hasn't made a release yet but they have
+upgraded the version to 1.2.0 internally.
diff --git a/multimedia/uavs3d/fix-build-issue.patch b/multimedia/uavs3d/fix-build-issue.patch
new file mode 100644
index 0000000000..8aa66107a7
--- /dev/null
+++ b/multimedia/uavs3d/fix-build-issue.patch
@@ -0,0 +1,7618 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5118377..46458c7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,15 +1,20 @@
+-cmake_minimum_required(VERSION 2.8)
++cmake_minimum_required(VERSION 3.1)
+
+ project(uavs3d)
+
++option(COMPILE_10BIT "Enable 10bit streams decoding support." OFF)
++
++set(CMAKE_C_STANDARD 99)
++set(CMAKE_POSITION_INDEPENDENT_CODE ON)
++
+ aux_source_directory(./test DIR_SRC_TEST)
+-set_source_files_properties(${DIR_SRC_TEST} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -std=c99 -O3")
+
+ add_subdirectory(./source)
+
+ add_executable(uavs3dec ${DIR_SRC_TEST})
+
+-target_link_libraries(uavs3dec m)
++if (NOT MSVC)
++ target_link_libraries(uavs3dec m)
++endif()
+ target_link_libraries(uavs3dec uavs3d)
+ #target_link_libraries(uavs3dec dl)
+-
+diff --git a/COPYING b/COPYING
+index 409d303..ce30f0f 100644
+--- a/COPYING
++++ b/COPYING
+@@ -1,4 +1,4 @@
+-Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School", "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
++Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School", "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+
+ All rights reserved.
+
+@@ -9,10 +9,7 @@ modification, are permitted provided that the following conditions are met:
+ 2. 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.
+-3. All advertising materials mentioning features or use of this software
+- must display the following acknowledgement:
+- This product includes the software uAVS3d developed by Peking University Shenzhen Graduate School, Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation.
+-4. Neither the name of the organizations (Peking University Shenzhen Graduate School, Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation)
++3. Neither the name of the organizations (Peking University Shenzhen Graduate School, Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation)
+ nor the names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+diff --git a/README.md b/README.md
+index e46ada8..9ce6a2a 100644
+--- a/README.md
++++ b/README.md
+@@ -5,15 +5,16 @@
+ 2) supports to compile for Android/IOS/Windows/Linux/MacOS systems.
+ 3) optimized for ARMv7/ARMv8/SSE4/AVX2 chips.
+ 4) 10bit decoding on all supported platforms.
+-
++ 5) The uavs3 codec has supported x86 and arm platforms, and has been tested and verified on the Kunpeng processor.
++ 6) The ARM platform recommends the Kunpeng processor.
+ # license
+ Copyright reserved by “Peking University Shenzhen Graduate Schoolâ€, “Peng Cheng Laboratoryâ€, and “Guangdong Bohua UHD Innovation Corporation†<br><br>
+- This program is a free software. You can redistribute it and/or modify it under the terms of the BSD 4-clause license. <br>
++ This program is a free software. You can redistribute it and/or modify it under the terms of the BSD 3-clause license. <br>
+ For more details, please view the file "COPYING" in the project.
+
+ # compile
+ The default configuration only support 8bit decoding. <br>
+- To support 10bit streams decoding, edit source/decore/com_def.h : #define BIT_DEPTH 10
++ To support 10bit streams decoding: cmake -DCOMPILE_10BIT=1
+
+ ## windows
+ Prerequisites:
+@@ -22,17 +23,20 @@ Prerequisites:
+ build:
+ 1. ./version.bat (to generate version.h)
+ 2. solution file: build/x86_windows/uavs3d.sln
++
++ To support 10bit streams decoding, edit source/decore/com_def.h : #define COMPILE_10BIT 1
+
+ ## linux/mac
+ Prerequisites:
+ 1. gawk (http://www.gnu.org/software/gawk/)
+- 2. CMake (https://cmake.org) version 2.8 or higher
++ 2. CMake (https://cmake.org) version 3.1 or higher
+
+ Build:
+ 1. mkdir build/linux
+- 2. cd build/linux && cmake ../..
++ 2. cd build/linux && cmake -DCOMPILE_10BIT=0 ../..
+ 3. make && make install
+
++ To support 10bit streams decoding: cmake -DCOMPILE_10BIT=1
+ to build shared library, set BUILD_SHARED_LIBS=1 please.
+
+ ## ios
+@@ -40,8 +44,11 @@ Prerequisites:
+ XCode
+
+ Build:
+-1. ./version.sh (generate the version.h)
+-2. xcode solution file: build/ios/uavs3d.xcodeproj
++ 1. ./version.sh (generate the version.h)
++ 2. xcode solution file: build/ios/uavs3d.xcodeproj
++
++ To support 10bit streams decoding:
++ Find Xcode -> PROJECT -> Build Settings -> Preprocessor Macros, add COMPILE_10BIT=1
+
+ ## android
+ Prerequisites:
+@@ -51,8 +58,10 @@ Build ndk library or executable file:
+ 1. ./version.sh (generate the version.h)
+ 2. cd build/android/ndk/jni
+ 3. $NDK_PATH/ndk-build
++
++ To support 10bit streams decoding: edit build/android/ndk/jni/uavs3d_main.mk:
+
+-The executable application for arm64-v8a is generated by default. <br>To generate static or shared library for other platforms, modify correlative options in Android.mk and Application.mk.
++ LOCAL_CFLAGS += -DCOMPILE_10BIT=1
+
+ # Run tests
+ ## window/linux/mac/android
+diff --git a/build/android/ndk/jni/Android.mk b/build/android/ndk/jni/Android.mk
+index fe79947..88d57f4 100644
+--- a/build/android/ndk/jni/Android.mk
++++ b/build/android/ndk/jni/Android.mk
+@@ -5,53 +5,26 @@ SRC_PATH := ../../../../source
+ INCLUDE_PATH := ../../../../source/decore
+
+ ### Name of the local module
+-include $(CLEAR_VARS)
+-LOCAL_MODULE := uavs3d
++include $(LOCAL_PATH)/uavs3d_clear_vars.mk
++LOCAL_MODULE := uavs3d-static
++LOCAL_MODULE_FILENAME := libuavs3d
++include $(LOCAL_PATH)/uavs3d_main.mk
++include $(BUILD_STATIC_LIBRARY)
++
++include $(LOCAL_PATH)/uavs3d_clear_vars.mk
++LOCAL_MODULE := uavs3d-shared
++LOCAL_MODULE_FILENAME := libuavs3d
+ LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -lm -llog
+-
+-### for posix pthread
+-#LOCAL_SHARED_LIBRARIES := libcutil
+-
+-### include search path when compiling all sources (C,C++,Assembly)
+-LOCAL_C_INCLUDES +=$(INCLUDE_PATH) \
+- $(LOCAL_PATH)/../app
+-
+-### c source code
+-uavs3d_srcs_c += $(SRC_PATH)/decore/alf.c
+-uavs3d_srcs_c += $(SRC_PATH)/decore/deblock.c
+-uavs3d_srcs_c += $(SRC_PATH)/decore/inter_pred.c
+-uavs3d_srcs_c += $(SRC_PATH)/decore/intra_pred.c
+-uavs3d_srcs_c += $(SRC_PATH)/decore/inv_trans.c
+-uavs3d_srcs_c += $(SRC_PATH)/decore/pic_manager.c
+-uavs3d_srcs_c += $(SRC_PATH)/decore/recon.c
+-uavs3d_srcs_c += $(SRC_PATH)/decore/sao.c
+-uavs3d_srcs_c += $(SRC_PATH)/decore/com_table.c
+-uavs3d_srcs_c += $(SRC_PATH)/decore/threadpool.c
+-uavs3d_srcs_c += $(SRC_PATH)/decore/win32thread.c
+-uavs3d_srcs_c += $(SRC_PATH)/decore/com_util.c
+-uavs3d_srcs_c += $(SRC_PATH)/decoder/uavs3d.c
+-uavs3d_srcs_c += $(SRC_PATH)/decoder/bitstream.c
+-uavs3d_srcs_c += $(SRC_PATH)/decoder/parser.c
+-uavs3d_srcs_c += $(SRC_PATH)/decoder/dec_util.c
+-
+-LOCAL_CFLAGS += -O3 -fPIC -std=gnu99
+ LOCAL_LDFLAGS += -fPIC
++include $(LOCAL_PATH)/uavs3d_main.mk
++include $(BUILD_SHARED_LIBRARY)
++
+
+-#if build_executable
++include $(LOCAL_PATH)/uavs3d_clear_vars.mk
++LOCAL_MODULE := uavs3d
++LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -lm -llog
+ LOCAL_CFLAGS += -pie -fPIE
+ LOCAL_LDFLAGS += -pie -fPIE
+-uavs3d_srcs_test+= $(SRC_PATH)/../test/utest.c
+-#endif
+-
+-#if build armv7a
+-#LOCAL_CFLAGS += -mfpu=neon
+-#include $(LOCAL_PATH)/uavs3d_armv7a.mk
+-#elif build arm64
+-include $(LOCAL_PATH)/uavs3d_arm64.mk
+-#endif
+-
+-LOCAL_SRC_FILES := $(uavs3d_srcs_c) $(uavs3d_srcs_arm) $(uavs3d_srcs_test)
+-
+-#include $(BUILD_SHARED_LIBRARY)
+-#include $(BUILD_STATIC_LIBRARY)
++uavs3d_srcs_test+= $(SRC_PATH)/../test/utest.c
++include $(LOCAL_PATH)/uavs3d_main.mk
+ include $(BUILD_EXECUTABLE)
+diff --git a/build/android/ndk/jni/Application.mk b/build/android/ndk/jni/Application.mk
+index 292946e..29e7e02 100644
+--- a/build/android/ndk/jni/Application.mk
++++ b/build/android/ndk/jni/Application.mk
+@@ -1,8 +1,9 @@
+ # APP_ABI := armeabi-v7a
+- APP_ABI := arm64-v8a
++# APP_ABI := arm64-v8a
+ # APP_ABI := armeabi
+ # APP_ABI := x86
+ # APP_ABI := x86_64
++APP_ABI := all
+ APP_OPTIM := release
+ # TARGET_BUILD_TYPE=release
+
+diff --git a/build/android/ndk/jni/uavs3d_avx2.mk b/build/android/ndk/jni/uavs3d_avx2.mk
+new file mode 100644
+index 0000000..d80401a
+--- /dev/null
++++ b/build/android/ndk/jni/uavs3d_avx2.mk
+@@ -0,0 +1,11 @@
++
++AVX_SRC_PATH:=../../../../source/decore/avx2
++
++uavs3d_srcs_avx += $(AVX_SRC_PATH)/alf_avx2.c
++uavs3d_srcs_avx += $(AVX_SRC_PATH)/avx2.c
++uavs3d_srcs_avx += $(AVX_SRC_PATH)/inter_pred_avx2.c
++uavs3d_srcs_avx += $(AVX_SRC_PATH)/intra_pred_avx2.c
++uavs3d_srcs_avx += $(AVX_SRC_PATH)/itrans_avx2.c
++uavs3d_srcs_avx += $(AVX_SRC_PATH)/pixel_avx2.c
++uavs3d_srcs_avx += $(AVX_SRC_PATH)/sao_avx2.c
++
+diff --git a/build/android/ndk/jni/uavs3d_clear_vars.mk b/build/android/ndk/jni/uavs3d_clear_vars.mk
+new file mode 100644
+index 0000000..0c47cfc
+--- /dev/null
++++ b/build/android/ndk/jni/uavs3d_clear_vars.mk
+@@ -0,0 +1,6 @@
++include $(CLEAR_VARS)
++uavs3d_srcs_c :=
++uavs3d_srcs_test :=
++uavs3d_srcs_arm :=
++uavs3d_srcs_sse :=
++uavs3d_srcs_avx :=
+diff --git a/build/android/ndk/jni/uavs3d_main.mk b/build/android/ndk/jni/uavs3d_main.mk
+new file mode 100644
+index 0000000..6506e89
+--- /dev/null
++++ b/build/android/ndk/jni/uavs3d_main.mk
+@@ -0,0 +1,61 @@
++
++### for posix pthread
++#LOCAL_SHARED_LIBRARIES := libcutil
++
++### include search path when compiling all sources (C,C++,Assembly)
++LOCAL_C_INCLUDES +=$(INCLUDE_PATH) \
++ $(LOCAL_PATH)/../app
++
++### c source code
++uavs3d_srcs_c += $(SRC_PATH)/decore/alf.c
++uavs3d_srcs_c += $(SRC_PATH)/decore/deblock.c
++uavs3d_srcs_c += $(SRC_PATH)/decore/inter_pred.c
++uavs3d_srcs_c += $(SRC_PATH)/decore/intra_pred.c
++uavs3d_srcs_c += $(SRC_PATH)/decore/inv_trans.c
++uavs3d_srcs_c += $(SRC_PATH)/decore/pic_manager.c
++uavs3d_srcs_c += $(SRC_PATH)/decore/recon.c
++uavs3d_srcs_c += $(SRC_PATH)/decore/sao.c
++uavs3d_srcs_c += $(SRC_PATH)/decore/com_table.c
++uavs3d_srcs_c += $(SRC_PATH)/decore/threadpool.c
++uavs3d_srcs_c += $(SRC_PATH)/decore/win32thread.c
++uavs3d_srcs_c += $(SRC_PATH)/decore/com_util.c
++uavs3d_srcs_c += $(SRC_PATH)/decoder/uavs3d.c
++uavs3d_srcs_c += $(SRC_PATH)/decoder/bitstream.c
++uavs3d_srcs_c += $(SRC_PATH)/decoder/parser.c
++uavs3d_srcs_c += $(SRC_PATH)/decoder/dec_util.c
++
++
++LOCAL_CFLAGS += -O3 -fPIC -std=gnu99 -I../../../source/decore
++
++### To support 10bit streams decoding: edit it to -DCOMPILE_10BIT=1
++LOCAL_CFLAGS += -DCOMPILE_10BIT=0
++
++ifeq ($(TARGET_ARCH),arm)
++ ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
++ # build armv7a
++ LOCAL_CFLAGS += -mfpu=neon -D_armv7a
++ include $(LOCAL_PATH)/uavs3d_armv7a.mk
++ endif
++endif
++
++ifeq ($(TARGET_ARCH),arm64)
++ # build arm64
++ LOCAL_CFLAGS += -D_arm64
++ include $(LOCAL_PATH)/uavs3d_arm64.mk
++endif
++
++ifeq ($(TARGET_ARCH),x86)
++ # build x86
++ LOCAL_CFLAGS += -msse4.2 -mavx2
++ include $(LOCAL_PATH)/uavs3d_sse2.mk
++ include $(LOCAL_PATH)/uavs3d_avx2.mk
++endif
++
++ifeq ($(TARGET_ARCH),x86_64)
++ # build x86_64
++ LOCAL_CFLAGS += -msse4.2 -mavx2
++ include $(LOCAL_PATH)/uavs3d_sse2.mk
++ include $(LOCAL_PATH)/uavs3d_avx2.mk
++endif
++
++LOCAL_SRC_FILES := $(uavs3d_srcs_c) $(uavs3d_srcs_arm) $(uavs3d_srcs_sse) $(uavs3d_srcs_avx) $(uavs3d_srcs_test)
+diff --git a/build/android/ndk/jni/uavs3d_sse2.mk b/build/android/ndk/jni/uavs3d_sse2.mk
+new file mode 100644
+index 0000000..1f8847a
+--- /dev/null
++++ b/build/android/ndk/jni/uavs3d_sse2.mk
+@@ -0,0 +1,11 @@
++
++SSE_SRC_PATH:=../../../../source/decore/sse
++
++uavs3d_srcs_sse += $(SSE_SRC_PATH)/alf_sse.c
++uavs3d_srcs_sse += $(SSE_SRC_PATH)/deblock_sse.c
++uavs3d_srcs_sse += $(SSE_SRC_PATH)/inter_pred_sse.c
++uavs3d_srcs_sse += $(SSE_SRC_PATH)/intra_pred_sse.c
++uavs3d_srcs_sse += $(SSE_SRC_PATH)/itrans_sse.c
++uavs3d_srcs_sse += $(SSE_SRC_PATH)/pixel_sse.c
++uavs3d_srcs_sse += $(SSE_SRC_PATH)/sao_sse.c
++uavs3d_srcs_sse += $(SSE_SRC_PATH)/sse.c
+diff --git a/build/x86_windows/common.vcxproj b/build/vs2017/common.vcxproj
+similarity index 61%
+rename from build/x86_windows/common.vcxproj
+rename to build/vs2017/common.vcxproj
+index c8cd533..95de5c4 100644
+--- a/build/x86_windows/common.vcxproj
++++ b/build/vs2017/common.vcxproj
+@@ -1,157 +1,249 @@
+-<?xml version="1.0" encoding="utf-8"?>
+-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+- <ItemGroup Label="ProjectConfigurations">
+- <ProjectConfiguration Include="Debug|x64">
+- <Configuration>Debug</Configuration>
+- <Platform>x64</Platform>
+- </ProjectConfiguration>
+- <ProjectConfiguration Include="Release|x64">
+- <Configuration>Release</Configuration>
+- <Platform>x64</Platform>
+- </ProjectConfiguration>
+- </ItemGroup>
+- <ItemGroup>
+- <ClCompile Include="..\..\source\decore\alf.c" />
+- <ClCompile Include="..\..\source\decore\avx2\alf_avx2.c" />
+- <ClCompile Include="..\..\source\decore\avx2\avx2.c" />
+- <ClCompile Include="..\..\source\decore\avx2\inter_pred_avx2.c" />
+- <ClCompile Include="..\..\source\decore\avx2\intra_pred_avx2.c" />
+- <ClCompile Include="..\..\source\decore\avx2\itrans_avx2.c" />
+- <ClCompile Include="..\..\source\decore\avx2\pixel_avx2.c" />
+- <ClCompile Include="..\..\source\decore\avx2\sao_avx2.c" />
+- <ClCompile Include="..\..\source\decore\com_table.c" />
+- <ClCompile Include="..\..\source\decore\com_util.c" />
+- <ClCompile Include="..\..\source\decore\deblock.c" />
+- <ClCompile Include="..\..\source\decore\inter_pred.c" />
+- <ClCompile Include="..\..\source\decore\intra_pred.c" />
+- <ClCompile Include="..\..\source\decore\inv_trans.c" />
+- <ClCompile Include="..\..\source\decore\pic_manager.c" />
+- <ClCompile Include="..\..\source\decore\recon.c" />
+- <ClCompile Include="..\..\source\decore\sao.c" />
+- <ClCompile Include="..\..\source\decore\sse\alf_sse.c" />
+- <ClCompile Include="..\..\source\decore\sse\deblock_sse.c" />
+- <ClCompile Include="..\..\source\decore\sse\inter_pred_sse.c" />
+- <ClCompile Include="..\..\source\decore\sse\intra_pred_sse.c" />
+- <ClCompile Include="..\..\source\decore\sse\itrans_sse.c" />
+- <ClCompile Include="..\..\source\decore\sse\pixel_sse.c" />
+- <ClCompile Include="..\..\source\decore\sse\sao_sse.c" />
+- <ClCompile Include="..\..\source\decore\sse\sse.c" />
+- <ClCompile Include="..\..\source\decore\threadpool.c" />
+- <ClCompile Include="..\..\source\decore\win32thread.c" />
+- </ItemGroup>
+- <ItemGroup>
+- <ClInclude Include="..\..\source\decore\avx2\avx2.h" />
+- <ClInclude Include="..\..\source\decore\com_def.h" />
+- <ClInclude Include="..\..\source\decore\com_sys.h" />
+- <ClInclude Include="..\..\source\decore\com_table.h" />
+- <ClInclude Include="..\..\source\decore\com_type.h" />
+- <ClInclude Include="..\..\source\decore\com_util.h" />
+- <ClInclude Include="..\..\source\decore\modules.h" />
+- <ClInclude Include="..\..\source\decore\sse\sse.h" />
+- <ClInclude Include="..\..\source\decore\threadpool.h" />
+- <ClInclude Include="..\..\source\decore\win32thread.h" />
+- </ItemGroup>
+- <PropertyGroup Label="Globals">
+- <ProjectGuid>{3F9C7116-C287-40D7-865C-D8C89CF4FF31}</ProjectGuid>
+- <Keyword>Win32Proj</Keyword>
+- <RootNamespace>com_lib_vs17</RootNamespace>
+- <ProjectName>common</ProjectName>
+- <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
+- </PropertyGroup>
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+- <ConfigurationType>StaticLibrary</ConfigurationType>
+- <UseDebugLibraries>true</UseDebugLibraries>
+- <CharacterSet>MultiByte</CharacterSet>
+- <PlatformToolset>v141</PlatformToolset>
+- </PropertyGroup>
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+- <ConfigurationType>StaticLibrary</ConfigurationType>
+- <UseDebugLibraries>false</UseDebugLibraries>
+- <WholeProgramOptimization>true</WholeProgramOptimization>
+- <CharacterSet>MultiByte</CharacterSet>
+- <PlatformToolset>v141</PlatformToolset>
+- </PropertyGroup>
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+- <ImportGroup Label="ExtensionSettings">
+- </ImportGroup>
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+- </ImportGroup>
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+- </ImportGroup>
+- <PropertyGroup Label="UserMacros" />
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+- <OutDir>..\..\lib\</OutDir>
+- </PropertyGroup>
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+- <TargetName>$(ProjectName)</TargetName>
+- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+- </PropertyGroup>
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+- <OutDir>..\..\lib\</OutDir>
+- <TargetName>$(ProjectName)</TargetName>
+- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+- </PropertyGroup>
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+- <ClCompile>
+- <PrecompiledHeader>NotUsing</PrecompiledHeader>
+- <WarningLevel>Level3</WarningLevel>
+- <Optimization>Disabled</Optimization>
+- <PreprocessorDefinitions>WIN64;X86F;_DEBUG;_LIB;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS</PreprocessorDefinitions>
+- <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
+- <PrecompiledHeaderFile>
+- </PrecompiledHeaderFile>
+- <PrecompiledHeaderOutputFile>
+- </PrecompiledHeaderOutputFile>
+- <CompileAs>CompileAsC</CompileAs>
+- <ErrorReporting>Prompt</ErrorReporting>
+- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+- <TreatWarningAsError>true</TreatWarningAsError>
+- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
+- </ClCompile>
+- <Link>
+- <SubSystem>Windows</SubSystem>
+- <GenerateDebugInformation>true</GenerateDebugInformation>
+- </Link>
+- <Lib>
+- <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
+- </Lib>
+- </ItemDefinitionGroup>
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+- <ClCompile>
+- <WarningLevel>Level3</WarningLevel>
+- <PrecompiledHeader>NotUsing</PrecompiledHeader>
+- <Optimization>MaxSpeed</Optimization>
+- <FunctionLevelLinking>true</FunctionLevelLinking>
+- <IntrinsicFunctions>true</IntrinsicFunctions>
+- <PreprocessorDefinitions>WIN64;X86F;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
+- <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
+- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+- <PrecompiledHeaderFile>
+- </PrecompiledHeaderFile>
+- <PrecompiledHeaderOutputFile>
+- </PrecompiledHeaderOutputFile>
+- <CompileAs>CompileAsC</CompileAs>
+- <ErrorReporting>Prompt</ErrorReporting>
+- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+- <TreatWarningAsError>true</TreatWarningAsError>
+- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
+- </ClCompile>
+- <Link>
+- <SubSystem>Windows</SubSystem>
+- <GenerateDebugInformation>true</GenerateDebugInformation>
+- <EnableCOMDATFolding>true</EnableCOMDATFolding>
+- <OptimizeReferences>true</OptimizeReferences>
+- </Link>
+- <Lib>
+- <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
+- </Lib>
+- </ItemDefinitionGroup>
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+- <ImportGroup Label="ExtensionTargets">
+- </ImportGroup>
++<?xml version="1.0" encoding="utf-8"?>
++<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
++ <ItemGroup Label="ProjectConfigurations">
++ <ProjectConfiguration Include="Debug|Win32">
++ <Configuration>Debug</Configuration>
++ <Platform>Win32</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Debug|x64">
++ <Configuration>Debug</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Release|Win32">
++ <Configuration>Release</Configuration>
++ <Platform>Win32</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Release|x64">
++ <Configuration>Release</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
++ </ItemGroup>
++ <ItemGroup>
++ <ClCompile Include="..\..\source\decore\alf.c" />
++ <ClCompile Include="..\..\source\decore\avx2\alf_avx2.c" />
++ <ClCompile Include="..\..\source\decore\avx2\avx2.c" />
++ <ClCompile Include="..\..\source\decore\avx2\inter_pred_avx2.c" />
++ <ClCompile Include="..\..\source\decore\avx2\intra_pred_avx2.c" />
++ <ClCompile Include="..\..\source\decore\avx2\itrans_avx2.c" />
++ <ClCompile Include="..\..\source\decore\avx2\pixel_avx2.c" />
++ <ClCompile Include="..\..\source\decore\avx2\sao_avx2.c" />
++ <ClCompile Include="..\..\source\decore\com_table.c" />
++ <ClCompile Include="..\..\source\decore\com_util.c" />
++ <ClCompile Include="..\..\source\decore\deblock.c" />
++ <ClCompile Include="..\..\source\decore\inter_pred.c" />
++ <ClCompile Include="..\..\source\decore\intra_pred.c" />
++ <ClCompile Include="..\..\source\decore\inv_trans.c" />
++ <ClCompile Include="..\..\source\decore\pic_manager.c" />
++ <ClCompile Include="..\..\source\decore\recon.c" />
++ <ClCompile Include="..\..\source\decore\sao.c" />
++ <ClCompile Include="..\..\source\decore\sse\alf_sse.c" />
++ <ClCompile Include="..\..\source\decore\sse\deblock_sse.c" />
++ <ClCompile Include="..\..\source\decore\sse\inter_pred_sse.c" />
++ <ClCompile Include="..\..\source\decore\sse\intra_pred_sse.c" />
++ <ClCompile Include="..\..\source\decore\sse\itrans_sse.c" />
++ <ClCompile Include="..\..\source\decore\sse\pixel_sse.c" />
++ <ClCompile Include="..\..\source\decore\sse\sao_sse.c" />
++ <ClCompile Include="..\..\source\decore\sse\sse.c" />
++ <ClCompile Include="..\..\source\decore\threadpool.c" />
++ <ClCompile Include="..\..\source\decore\win32thread.c" />
++ </ItemGroup>
++ <ItemGroup>
++ <ClInclude Include="..\..\source\decore\avx2\avx2.h" />
++ <ClInclude Include="..\..\source\decore\com_def.h" />
++ <ClInclude Include="..\..\source\decore\com_sys.h" />
++ <ClInclude Include="..\..\source\decore\com_table.h" />
++ <ClInclude Include="..\..\source\decore\com_type.h" />
++ <ClInclude Include="..\..\source\decore\com_util.h" />
++ <ClInclude Include="..\..\source\decore\modules.h" />
++ <ClInclude Include="..\..\source\decore\sse\sse.h" />
++ <ClInclude Include="..\..\source\decore\threadpool.h" />
++ <ClInclude Include="..\..\source\decore\win32thread.h" />
++ </ItemGroup>
++ <PropertyGroup Label="Globals">
++ <ProjectGuid>{3F9C7116-C287-40D7-865C-D8C89CF4FF31}</ProjectGuid>
++ <Keyword>Win32Proj</Keyword>
++ <RootNamespace>com_lib_vs17</RootNamespace>
++ <ProjectName>common</ProjectName>
++ <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++ </PropertyGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
++ <ConfigurationType>StaticLibrary</ConfigurationType>
++ <UseDebugLibraries>true</UseDebugLibraries>
++ <CharacterSet>MultiByte</CharacterSet>
++ <PlatformToolset>v141</PlatformToolset>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
++ <ConfigurationType>StaticLibrary</ConfigurationType>
++ <UseDebugLibraries>true</UseDebugLibraries>
++ <CharacterSet>MultiByte</CharacterSet>
++ <PlatformToolset>v141</PlatformToolset>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
++ <ConfigurationType>StaticLibrary</ConfigurationType>
++ <UseDebugLibraries>false</UseDebugLibraries>
++ <WholeProgramOptimization>true</WholeProgramOptimization>
++ <CharacterSet>MultiByte</CharacterSet>
++ <PlatformToolset>v141</PlatformToolset>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
++ <ConfigurationType>StaticLibrary</ConfigurationType>
++ <UseDebugLibraries>false</UseDebugLibraries>
++ <WholeProgramOptimization>true</WholeProgramOptimization>
++ <CharacterSet>MultiByte</CharacterSet>
++ <PlatformToolset>v141</PlatformToolset>
++ </PropertyGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
++ <ImportGroup Label="ExtensionSettings">
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <PropertyGroup Label="UserMacros" />
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++ <OutDir>..\..\lib\</OutDir>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++ <TargetName>$(ProjectName)</TargetName>
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++ <TargetName>$(ProjectName)</TargetName>
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++ <OutDir>..\..\lib\</OutDir>
++ <TargetName>$(ProjectName)</TargetName>
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++ <TargetName>$(ProjectName)</TargetName>
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ </PropertyGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++ <ClCompile>
++ <PrecompiledHeader>NotUsing</PrecompiledHeader>
++ <WarningLevel>Level3</WarningLevel>
++ <Optimization>Disabled</Optimization>
++ <PreprocessorDefinitions>WIN64;X86F;_DEBUG;_LIB;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS</PreprocessorDefinitions>
++ <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
++ <PrecompiledHeaderFile>
++ </PrecompiledHeaderFile>
++ <PrecompiledHeaderOutputFile>
++ </PrecompiledHeaderOutputFile>
++ <CompileAs>CompileAsC</CompileAs>
++ <ErrorReporting>Prompt</ErrorReporting>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <SubSystem>Windows</SubSystem>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ </Link>
++ <Lib>
++ <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
++ </Lib>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++ <ClCompile>
++ <PrecompiledHeader>NotUsing</PrecompiledHeader>
++ <WarningLevel>Level3</WarningLevel>
++ <Optimization>Disabled</Optimization>
++ <PreprocessorDefinitions>WIN64;X86F;_DEBUG;_LIB;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS</PreprocessorDefinitions>
++ <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
++ <PrecompiledHeaderFile>
++ </PrecompiledHeaderFile>
++ <PrecompiledHeaderOutputFile>
++ </PrecompiledHeaderOutputFile>
++ <CompileAs>CompileAsC</CompileAs>
++ <ErrorReporting>Prompt</ErrorReporting>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <SubSystem>Windows</SubSystem>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ </Link>
++ <Lib>
++ <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
++ </Lib>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++ <ClCompile>
++ <WarningLevel>Level3</WarningLevel>
++ <PrecompiledHeader>NotUsing</PrecompiledHeader>
++ <Optimization>MaxSpeed</Optimization>
++ <FunctionLevelLinking>true</FunctionLevelLinking>
++ <IntrinsicFunctions>true</IntrinsicFunctions>
++ <PreprocessorDefinitions>WIN64;X86F;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
++ <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
++ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
++ <PrecompiledHeaderFile>
++ </PrecompiledHeaderFile>
++ <PrecompiledHeaderOutputFile>
++ </PrecompiledHeaderOutputFile>
++ <CompileAs>CompileAsC</CompileAs>
++ <ErrorReporting>Prompt</ErrorReporting>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <SubSystem>Windows</SubSystem>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <EnableCOMDATFolding>true</EnableCOMDATFolding>
++ <OptimizeReferences>true</OptimizeReferences>
++ </Link>
++ <Lib>
++ <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
++ </Lib>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++ <ClCompile>
++ <WarningLevel>Level3</WarningLevel>
++ <PrecompiledHeader>NotUsing</PrecompiledHeader>
++ <Optimization>MaxSpeed</Optimization>
++ <FunctionLevelLinking>true</FunctionLevelLinking>
++ <IntrinsicFunctions>true</IntrinsicFunctions>
++ <PreprocessorDefinitions>WIN64;X86F;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
++ <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
++ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
++ <PrecompiledHeaderFile>
++ </PrecompiledHeaderFile>
++ <PrecompiledHeaderOutputFile>
++ </PrecompiledHeaderOutputFile>
++ <CompileAs>CompileAsC</CompileAs>
++ <ErrorReporting>Prompt</ErrorReporting>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <SubSystem>Windows</SubSystem>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <EnableCOMDATFolding>true</EnableCOMDATFolding>
++ <OptimizeReferences>true</OptimizeReferences>
++ </Link>
++ <Lib>
++ <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
++ </Lib>
++ </ItemDefinitionGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
++ <ImportGroup Label="ExtensionTargets">
++ </ImportGroup>
+ </Project>
+\ No newline at end of file
+diff --git a/build/x86_windows/common.vcxproj.filters b/build/vs2017/common.vcxproj.filters
+similarity index 100%
+rename from build/x86_windows/common.vcxproj.filters
+rename to build/vs2017/common.vcxproj.filters
+diff --git a/build/x86_windows/libuavs3d.vcxproj b/build/vs2017/libuavs3d.vcxproj
+similarity index 55%
+rename from build/x86_windows/libuavs3d.vcxproj
+rename to build/vs2017/libuavs3d.vcxproj
+index d92a51f..bb42a6c 100644
+--- a/build/x86_windows/libuavs3d.vcxproj
++++ b/build/vs2017/libuavs3d.vcxproj
+@@ -1,115 +1,193 @@
+-<?xml version="1.0" encoding="utf-8"?>
+-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+- <ItemGroup Label="ProjectConfigurations">
+- <ProjectConfiguration Include="Debug|x64">
+- <Configuration>Debug</Configuration>
+- <Platform>x64</Platform>
+- </ProjectConfiguration>
+- <ProjectConfiguration Include="Release|x64">
+- <Configuration>Release</Configuration>
+- <Platform>x64</Platform>
+- </ProjectConfiguration>
+- </ItemGroup>
+- <ItemGroup>
+- <ClCompile Include="..\..\source\decoder\bitstream.c" />
+- <ClCompile Include="..\..\source\decoder\dec_util.c" />
+- <ClCompile Include="..\..\source\decoder\parser.c" />
+- <ClCompile Include="..\..\source\decoder\uavs3d.c" />
+- </ItemGroup>
+- <ItemGroup>
+- <ClInclude Include="..\..\contributor.h" />
+- <ClInclude Include="..\..\source\decoder\bitstream.h" />
+- <ClInclude Include="..\..\source\decoder\dec_type.h" />
+- <ClInclude Include="..\..\source\decoder\dec_util.h" />
+- <ClInclude Include="..\..\source\decoder\parser.h" />
+- <ClInclude Include="..\..\source\decoder\uavs3d.h" />
+- </ItemGroup>
+- <PropertyGroup Label="Globals">
+- <ProjectGuid>{40B445E8-306A-4C77-9B19-FC76C2379F79}</ProjectGuid>
+- <RootNamespace>dec_lib</RootNamespace>
+- <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
+- <ProjectName>libuavs3d</ProjectName>
+- </PropertyGroup>
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+- <ConfigurationType>DynamicLibrary</ConfigurationType>
+- <UseDebugLibraries>true</UseDebugLibraries>
+- <PlatformToolset>v141</PlatformToolset>
+- <CharacterSet>MultiByte</CharacterSet>
+- </PropertyGroup>
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+- <ConfigurationType>DynamicLibrary</ConfigurationType>
+- <UseDebugLibraries>false</UseDebugLibraries>
+- <PlatformToolset>v141</PlatformToolset>
+- <WholeProgramOptimization>true</WholeProgramOptimization>
+- <CharacterSet>MultiByte</CharacterSet>
+- </PropertyGroup>
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+- <ImportGroup Label="ExtensionSettings">
+- </ImportGroup>
+- <ImportGroup Label="Shared">
+- </ImportGroup>
+- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+- </ImportGroup>
+- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+- </ImportGroup>
+- <PropertyGroup Label="UserMacros" />
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+- <OutDir>..\..\bin</OutDir>
+- <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
+- </PropertyGroup>
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+- <OutDir>..\..\bin</OutDir>
+- <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
+- </PropertyGroup>
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+- <ClCompile>
+- <WarningLevel>Level3</WarningLevel>
+- <Optimization>Disabled</Optimization>
+- <SDLCheck>true</SDLCheck>
+- <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
+- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+- <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;_DEBUG</PreprocessorDefinitions>
+- <TreatWarningAsError>true</TreatWarningAsError>
+- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
+- </ClCompile>
+- <Link>
+- <GenerateDebugInformation>true</GenerateDebugInformation>
+- <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
+- <ShowProgress>NotSet</ShowProgress>
+- <Version>1.0</Version>
+- </Link>
+- </ItemDefinitionGroup>
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+- <ClCompile>
+- <WarningLevel>Level3</WarningLevel>
+- <Optimization>MaxSpeed</Optimization>
+- <FunctionLevelLinking>true</FunctionLevelLinking>
+- <IntrinsicFunctions>true</IntrinsicFunctions>
+- <SDLCheck>true</SDLCheck>
+- <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
+- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+- <CompileAs>CompileAsC</CompileAs>
+- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+- <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;</PreprocessorDefinitions>
+- <TreatWarningAsError>true</TreatWarningAsError>
+- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
+- </ClCompile>
+- <Link>
+- <GenerateDebugInformation>true</GenerateDebugInformation>
+- <EnableCOMDATFolding>true</EnableCOMDATFolding>
+- <OptimizeReferences>true</OptimizeReferences>
+- <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
+- <ShowProgress>NotSet</ShowProgress>
+- <Version>1.0</Version>
+- </Link>
+- </ItemDefinitionGroup>
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+- <ImportGroup Label="ExtensionTargets">
+- </ImportGroup>
++<?xml version="1.0" encoding="utf-8"?>
++<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
++ <ItemGroup Label="ProjectConfigurations">
++ <ProjectConfiguration Include="Debug|Win32">
++ <Configuration>Debug</Configuration>
++ <Platform>Win32</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Debug|x64">
++ <Configuration>Debug</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Release|Win32">
++ <Configuration>Release</Configuration>
++ <Platform>Win32</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Release|x64">
++ <Configuration>Release</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
++ </ItemGroup>
++ <ItemGroup>
++ <ClCompile Include="..\..\source\decoder\bitstream.c" />
++ <ClCompile Include="..\..\source\decoder\dec_util.c" />
++ <ClCompile Include="..\..\source\decoder\parser.c" />
++ <ClCompile Include="..\..\source\decoder\uavs3d.c" />
++ </ItemGroup>
++ <ItemGroup>
++ <ClInclude Include="..\..\contributor.h" />
++ <ClInclude Include="..\..\source\decoder\bitstream.h" />
++ <ClInclude Include="..\..\source\decoder\dec_type.h" />
++ <ClInclude Include="..\..\source\decoder\dec_util.h" />
++ <ClInclude Include="..\..\source\decoder\parser.h" />
++ <ClInclude Include="..\..\source\decoder\uavs3d.h" />
++ </ItemGroup>
++ <PropertyGroup Label="Globals">
++ <ProjectGuid>{40B445E8-306A-4C77-9B19-FC76C2379F79}</ProjectGuid>
++ <RootNamespace>dec_lib</RootNamespace>
++ <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++ <ProjectName>libuavs3d</ProjectName>
++ </PropertyGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
++ <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <UseDebugLibraries>true</UseDebugLibraries>
++ <PlatformToolset>v141</PlatformToolset>
++ <CharacterSet>MultiByte</CharacterSet>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
++ <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <UseDebugLibraries>true</UseDebugLibraries>
++ <PlatformToolset>v141</PlatformToolset>
++ <CharacterSet>MultiByte</CharacterSet>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
++ <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <UseDebugLibraries>false</UseDebugLibraries>
++ <PlatformToolset>v141</PlatformToolset>
++ <WholeProgramOptimization>true</WholeProgramOptimization>
++ <CharacterSet>MultiByte</CharacterSet>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
++ <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <UseDebugLibraries>false</UseDebugLibraries>
++ <PlatformToolset>v141</PlatformToolset>
++ <WholeProgramOptimization>true</WholeProgramOptimization>
++ <CharacterSet>MultiByte</CharacterSet>
++ </PropertyGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
++ <ImportGroup Label="ExtensionSettings">
++ </ImportGroup>
++ <ImportGroup Label="Shared">
++ </ImportGroup>
++ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <PropertyGroup Label="UserMacros" />
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ <OutDir>..\..\bin</OutDir>
++ <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++ <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ <OutDir>..\..\bin</OutDir>
++ <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++ <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ </PropertyGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++ <ClCompile>
++ <WarningLevel>Level3</WarningLevel>
++ <Optimization>Disabled</Optimization>
++ <SDLCheck>true</SDLCheck>
++ <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
++ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;_DEBUG</PreprocessorDefinitions>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
++ <ShowProgress>NotSet</ShowProgress>
++ <Version>1.0</Version>
++ </Link>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++ <ClCompile>
++ <WarningLevel>Level3</WarningLevel>
++ <Optimization>Disabled</Optimization>
++ <SDLCheck>true</SDLCheck>
++ <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
++ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;_DEBUG</PreprocessorDefinitions>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
++ <ShowProgress>NotSet</ShowProgress>
++ <Version>1.0</Version>
++ </Link>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++ <ClCompile>
++ <WarningLevel>Level3</WarningLevel>
++ <Optimization>MaxSpeed</Optimization>
++ <FunctionLevelLinking>true</FunctionLevelLinking>
++ <IntrinsicFunctions>true</IntrinsicFunctions>
++ <SDLCheck>true</SDLCheck>
++ <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
++ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
++ <CompileAs>CompileAsC</CompileAs>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;</PreprocessorDefinitions>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <EnableCOMDATFolding>true</EnableCOMDATFolding>
++ <OptimizeReferences>true</OptimizeReferences>
++ <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
++ <ShowProgress>NotSet</ShowProgress>
++ <Version>1.0</Version>
++ </Link>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++ <ClCompile>
++ <WarningLevel>Level3</WarningLevel>
++ <Optimization>MaxSpeed</Optimization>
++ <FunctionLevelLinking>true</FunctionLevelLinking>
++ <IntrinsicFunctions>true</IntrinsicFunctions>
++ <SDLCheck>true</SDLCheck>
++ <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
++ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
++ <CompileAs>CompileAsC</CompileAs>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;</PreprocessorDefinitions>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <EnableCOMDATFolding>true</EnableCOMDATFolding>
++ <OptimizeReferences>true</OptimizeReferences>
++ <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
++ <ShowProgress>NotSet</ShowProgress>
++ <Version>1.0</Version>
++ </Link>
++ </ItemDefinitionGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
++ <ImportGroup Label="ExtensionTargets">
++ </ImportGroup>
+ </Project>
+\ No newline at end of file
+diff --git a/build/x86_windows/uavs3d.sln b/build/vs2017/uavs3d.sln
+similarity index 68%
+rename from build/x86_windows/uavs3d.sln
+rename to build/vs2017/uavs3d.sln
+index e6d34c4..d098d33 100644
+--- a/build/x86_windows/uavs3d.sln
++++ b/build/vs2017/uavs3d.sln
+@@ -1,47 +1,61 @@
+-
+-Microsoft Visual Studio Solution File, Format Version 12.00
+-# Visual Studio 15
+-VisualStudioVersion = 15.0.27130.2026
+-MinimumVisualStudioVersion = 10.0.40219.1
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "common.vcxproj", "{3F9C7116-C287-40D7-865C-D8C89CF4FF31}"
+-EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uavs3d", "uavs3d.vcxproj", "{798F7D68-C94D-41AF-86A4-98F7726D172C}"
+- ProjectSection(ProjectDependencies) = postProject
+- {3F9C7116-C287-40D7-865C-D8C89CF4FF31} = {3F9C7116-C287-40D7-865C-D8C89CF4FF31}
+- {40B445E8-306A-4C77-9B19-FC76C2379F79} = {40B445E8-306A-4C77-9B19-FC76C2379F79}
+- EndProjectSection
+-EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libuavs3d", "libuavs3d.vcxproj", "{40B445E8-306A-4C77-9B19-FC76C2379F79}"
+- ProjectSection(ProjectDependencies) = postProject
+- {3F9C7116-C287-40D7-865C-D8C89CF4FF31} = {3F9C7116-C287-40D7-865C-D8C89CF4FF31}
+- EndProjectSection
+-EndProject
+-Global
+- GlobalSection(SolutionConfigurationPlatforms) = preSolution
+- Debug|x64 = Debug|x64
+- Release|x64 = Release|x64
+- EndGlobalSection
+- GlobalSection(ProjectConfigurationPlatforms) = postSolution
+- {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x64.ActiveCfg = Debug|x64
+- {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x64.Build.0 = Debug|x64
+- {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x64.ActiveCfg = Release|x64
+- {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x64.Build.0 = Release|x64
+- {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x64.ActiveCfg = Debug|x64
+- {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x64.Build.0 = Debug|x64
+- {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x64.ActiveCfg = Release|x64
+- {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x64.Build.0 = Release|x64
+- {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x64.ActiveCfg = Debug|x64
+- {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x64.Build.0 = Debug|x64
+- {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x64.ActiveCfg = Release|x64
+- {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x64.Build.0 = Release|x64
+- EndGlobalSection
+- GlobalSection(SolutionProperties) = preSolution
+- HideSolutionNode = FALSE
+- EndGlobalSection
+- GlobalSection(ExtensibilityGlobals) = postSolution
+- SolutionGuid = {ED69324B-A55F-49DC-91D3-5F1D34DF875C}
+- EndGlobalSection
+- GlobalSection(Performance) = preSolution
+- HasPerformanceSessions = true
+- EndGlobalSection
+-EndGlobal
++
++Microsoft Visual Studio Solution File, Format Version 12.00
++# Visual Studio 15
++VisualStudioVersion = 15.0.26228.4
++MinimumVisualStudioVersion = 10.0.40219.1
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "common.vcxproj", "{3F9C7116-C287-40D7-865C-D8C89CF4FF31}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uavs3d", "uavs3d.vcxproj", "{798F7D68-C94D-41AF-86A4-98F7726D172C}"
++ ProjectSection(ProjectDependencies) = postProject
++ {3F9C7116-C287-40D7-865C-D8C89CF4FF31} = {3F9C7116-C287-40D7-865C-D8C89CF4FF31}
++ {40B445E8-306A-4C77-9B19-FC76C2379F79} = {40B445E8-306A-4C77-9B19-FC76C2379F79}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libuavs3d", "libuavs3d.vcxproj", "{40B445E8-306A-4C77-9B19-FC76C2379F79}"
++ ProjectSection(ProjectDependencies) = postProject
++ {3F9C7116-C287-40D7-865C-D8C89CF4FF31} = {3F9C7116-C287-40D7-865C-D8C89CF4FF31}
++ EndProjectSection
++EndProject
++Global
++ GlobalSection(SolutionConfigurationPlatforms) = preSolution
++ Debug|x64 = Debug|x64
++ Debug|x86 = Debug|x86
++ Release|x64 = Release|x64
++ Release|x86 = Release|x86
++ EndGlobalSection
++ GlobalSection(ProjectConfigurationPlatforms) = postSolution
++ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x64.ActiveCfg = Debug|x64
++ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x64.Build.0 = Debug|x64
++ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x86.ActiveCfg = Debug|Win32
++ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x86.Build.0 = Debug|Win32
++ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x64.ActiveCfg = Release|x64
++ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x64.Build.0 = Release|x64
++ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x86.ActiveCfg = Release|Win32
++ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x86.Build.0 = Release|Win32
++ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x64.ActiveCfg = Debug|x64
++ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x64.Build.0 = Debug|x64
++ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x86.ActiveCfg = Debug|Win32
++ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x86.Build.0 = Debug|Win32
++ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x64.ActiveCfg = Release|x64
++ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x64.Build.0 = Release|x64
++ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x86.ActiveCfg = Release|Win32
++ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x86.Build.0 = Release|Win32
++ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x64.ActiveCfg = Debug|x64
++ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x64.Build.0 = Debug|x64
++ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x86.ActiveCfg = Debug|Win32
++ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x86.Build.0 = Debug|Win32
++ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x64.ActiveCfg = Release|x64
++ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x64.Build.0 = Release|x64
++ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x86.ActiveCfg = Release|Win32
++ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x86.Build.0 = Release|Win32
++ EndGlobalSection
++ GlobalSection(SolutionProperties) = preSolution
++ HideSolutionNode = FALSE
++ EndGlobalSection
++ GlobalSection(ExtensibilityGlobals) = postSolution
++ SolutionGuid = {ED69324B-A55F-49DC-91D3-5F1D34DF875C}
++ EndGlobalSection
++ GlobalSection(Performance) = preSolution
++ HasPerformanceSessions = true
++ EndGlobalSection
++EndGlobal
+diff --git a/build/x86_windows/uavs3d.vcxproj b/build/vs2017/uavs3d.vcxproj
+similarity index 55%
+rename from build/x86_windows/uavs3d.vcxproj
+rename to build/vs2017/uavs3d.vcxproj
+index 9557243..25603ec 100644
+--- a/build/x86_windows/uavs3d.vcxproj
++++ b/build/vs2017/uavs3d.vcxproj
+@@ -1,118 +1,200 @@
+-<?xml version="1.0" encoding="utf-8"?>
+-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+- <ItemGroup Label="ProjectConfigurations">
+- <ProjectConfiguration Include="Debug|x64">
+- <Configuration>Debug</Configuration>
+- <Platform>x64</Platform>
+- </ProjectConfiguration>
+- <ProjectConfiguration Include="Release|x64">
+- <Configuration>Release</Configuration>
+- <Platform>x64</Platform>
+- </ProjectConfiguration>
+- </ItemGroup>
+- <PropertyGroup Label="Globals">
+- <ProjectGuid>{798F7D68-C94D-41AF-86A4-98F7726D172C}</ProjectGuid>
+- <Keyword>Win32Proj</Keyword>
+- <RootNamespace>dec_test_vs17</RootNamespace>
+- <ProjectName>uavs3d</ProjectName>
+- <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
+- </PropertyGroup>
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+- <ConfigurationType>Application</ConfigurationType>
+- <UseDebugLibraries>true</UseDebugLibraries>
+- <CharacterSet>MultiByte</CharacterSet>
+- <PlatformToolset>v141</PlatformToolset>
+- </PropertyGroup>
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+- <ConfigurationType>Application</ConfigurationType>
+- <UseDebugLibraries>false</UseDebugLibraries>
+- <WholeProgramOptimization>true</WholeProgramOptimization>
+- <CharacterSet>MultiByte</CharacterSet>
+- <PlatformToolset>v141</PlatformToolset>
+- </PropertyGroup>
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+- <ImportGroup Label="ExtensionSettings">
+- </ImportGroup>
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+- </ImportGroup>
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+- </ImportGroup>
+- <PropertyGroup Label="UserMacros" />
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+- <LinkIncremental>false</LinkIncremental>
+- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+- <OutDir>$(SolutionDir)\..\..\bin</OutDir>
+- </PropertyGroup>
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+- <LinkIncremental>false</LinkIncremental>
+- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+- <OutDir>$(SolutionDir)\..\..\bin</OutDir>
+- </PropertyGroup>
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+- <ClCompile>
+- <PrecompiledHeader>
+- </PrecompiledHeader>
+- <WarningLevel>Level3</WarningLevel>
+- <Optimization>Disabled</Optimization>
+- <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions);_DEBUG</PreprocessorDefinitions>
+- <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
+- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+- <TreatWarningAsError>true</TreatWarningAsError>
+- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
+- </ClCompile>
+- <Link>
+- <SubSystem>Console</SubSystem>
+- <GenerateDebugInformation>true</GenerateDebugInformation>
+- <AdditionalDependencies>
+- </AdditionalDependencies>
+- <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
+- </Link>
+- </ItemDefinitionGroup>
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+- <ClCompile>
+- <WarningLevel>Level3</WarningLevel>
+- <PrecompiledHeader>
+- </PrecompiledHeader>
+- <Optimization>MaxSpeed</Optimization>
+- <FunctionLevelLinking>true</FunctionLevelLinking>
+- <IntrinsicFunctions>true</IntrinsicFunctions>
+- <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+- <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
+- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+- <TreatWarningAsError>true</TreatWarningAsError>
+- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
+- </ClCompile>
+- <Link>
+- <SubSystem>Console</SubSystem>
+- <GenerateDebugInformation>true</GenerateDebugInformation>
+- <EnableCOMDATFolding>true</EnableCOMDATFolding>
+- <OptimizeReferences>true</OptimizeReferences>
+- <AdditionalDependencies>
+- </AdditionalDependencies>
+- <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
+- </Link>
+- </ItemDefinitionGroup>
+- <ItemGroup>
+- <ClInclude Include="..\..\test\utest.h" />
+- </ItemGroup>
+- <ItemGroup>
+- <ClCompile Include="..\..\test\utest.c" />
+- </ItemGroup>
+- <ItemGroup>
+- <ProjectReference Include="common.vcxproj">
+- <Project>{3f9c7116-c287-40d7-865c-d8c89cf4ff31}</Project>
+- </ProjectReference>
+- <ProjectReference Include="libuavs3d.vcxproj">
+- <Project>{40b445e8-306a-4c77-9b19-fc76c2379f79}</Project>
+- </ProjectReference>
+- </ItemGroup>
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+- <ImportGroup Label="ExtensionTargets">
+- </ImportGroup>
++<?xml version="1.0" encoding="utf-8"?>
++<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
++ <ItemGroup Label="ProjectConfigurations">
++ <ProjectConfiguration Include="Debug|Win32">
++ <Configuration>Debug</Configuration>
++ <Platform>Win32</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Debug|x64">
++ <Configuration>Debug</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Release|Win32">
++ <Configuration>Release</Configuration>
++ <Platform>Win32</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Release|x64">
++ <Configuration>Release</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
++ </ItemGroup>
++ <PropertyGroup Label="Globals">
++ <ProjectGuid>{798F7D68-C94D-41AF-86A4-98F7726D172C}</ProjectGuid>
++ <Keyword>Win32Proj</Keyword>
++ <RootNamespace>dec_test_vs17</RootNamespace>
++ <ProjectName>uavs3d</ProjectName>
++ <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++ </PropertyGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
++ <ConfigurationType>Application</ConfigurationType>
++ <UseDebugLibraries>true</UseDebugLibraries>
++ <CharacterSet>MultiByte</CharacterSet>
++ <PlatformToolset>v141</PlatformToolset>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
++ <ConfigurationType>Application</ConfigurationType>
++ <UseDebugLibraries>true</UseDebugLibraries>
++ <CharacterSet>MultiByte</CharacterSet>
++ <PlatformToolset>v141</PlatformToolset>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
++ <ConfigurationType>Application</ConfigurationType>
++ <UseDebugLibraries>false</UseDebugLibraries>
++ <WholeProgramOptimization>true</WholeProgramOptimization>
++ <CharacterSet>MultiByte</CharacterSet>
++ <PlatformToolset>v141</PlatformToolset>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
++ <ConfigurationType>Application</ConfigurationType>
++ <UseDebugLibraries>false</UseDebugLibraries>
++ <WholeProgramOptimization>true</WholeProgramOptimization>
++ <CharacterSet>MultiByte</CharacterSet>
++ <PlatformToolset>v141</PlatformToolset>
++ </PropertyGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
++ <ImportGroup Label="ExtensionSettings">
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
++ <PropertyGroup Label="UserMacros" />
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++ <LinkIncremental>false</LinkIncremental>
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ <OutDir>$(SolutionDir)\..\..\bin</OutDir>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++ <LinkIncremental>false</LinkIncremental>
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++ <LinkIncremental>false</LinkIncremental>
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ <OutDir>$(SolutionDir)\..\..\bin</OutDir>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++ <LinkIncremental>false</LinkIncremental>
++ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
++ </PropertyGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++ <ClCompile>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ <WarningLevel>Level3</WarningLevel>
++ <Optimization>Disabled</Optimization>
++ <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions);_DEBUG</PreprocessorDefinitions>
++ <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <SubSystem>Console</SubSystem>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <AdditionalDependencies>
++ </AdditionalDependencies>
++ <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
++ </Link>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++ <ClCompile>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ <WarningLevel>Level3</WarningLevel>
++ <Optimization>Disabled</Optimization>
++ <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions);_DEBUG</PreprocessorDefinitions>
++ <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <SubSystem>Console</SubSystem>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <AdditionalDependencies>
++ </AdditionalDependencies>
++ <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
++ </Link>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++ <ClCompile>
++ <WarningLevel>Level3</WarningLevel>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ <Optimization>MaxSpeed</Optimization>
++ <FunctionLevelLinking>true</FunctionLevelLinking>
++ <IntrinsicFunctions>true</IntrinsicFunctions>
++ <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
++ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <SubSystem>Console</SubSystem>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <EnableCOMDATFolding>true</EnableCOMDATFolding>
++ <OptimizeReferences>true</OptimizeReferences>
++ <AdditionalDependencies>
++ </AdditionalDependencies>
++ <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
++ </Link>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++ <ClCompile>
++ <WarningLevel>Level3</WarningLevel>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ <Optimization>MaxSpeed</Optimization>
++ <FunctionLevelLinking>true</FunctionLevelLinking>
++ <IntrinsicFunctions>true</IntrinsicFunctions>
++ <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
++ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
++ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
++ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
++ <TreatWarningAsError>true</TreatWarningAsError>
++ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
++ </ClCompile>
++ <Link>
++ <SubSystem>Console</SubSystem>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <EnableCOMDATFolding>true</EnableCOMDATFolding>
++ <OptimizeReferences>true</OptimizeReferences>
++ <AdditionalDependencies>
++ </AdditionalDependencies>
++ <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
++ </Link>
++ </ItemDefinitionGroup>
++ <ItemGroup>
++ <ClInclude Include="..\..\test\utest.h" />
++ </ItemGroup>
++ <ItemGroup>
++ <ClCompile Include="..\..\test\utest.c" />
++ </ItemGroup>
++ <ItemGroup>
++ <ProjectReference Include="common.vcxproj">
++ <Project>{3f9c7116-c287-40d7-865c-d8c89cf4ff31}</Project>
++ </ProjectReference>
++ <ProjectReference Include="libuavs3d.vcxproj">
++ <Project>{40b445e8-306a-4c77-9b19-fc76c2379f79}</Project>
++ </ProjectReference>
++ </ItemGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
++ <ImportGroup Label="ExtensionTargets">
++ </ImportGroup>
+ </Project>
+\ No newline at end of file
+diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
+index 4530a63..b52363e 100644
+--- a/source/CMakeLists.txt
++++ b/source/CMakeLists.txt
+@@ -1,19 +1,93 @@
+
+ set(LIBNAME uavs3d)
+
++# check cpu
++if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR
++ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
++ if(${CMAKE_SIZEOF_VOID_P} EQUAL 4)
++ set(UAVS3D_TARGET_CPU "x86")
++ elseif(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
++ set(UAVS3D_TARGET_CPU "x86_64")
++ else()
++ message(FATAL_ERROR
++ " Unexpected pointer size ${CMAKE_SIZEOF_VOID_P} for ${CMAKE_SYSTEM_PROCESSOR}\n")
++ endif()
++elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386" OR
++ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86")
++ set(UAVS3D_TARGET_CPU "x86")
++elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64" OR
++ "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm64")
++ set(UAVS3D_TARGET_CPU "arm64")
++elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm")
++ set(UAVS3D_TARGET_CPU "armv7")
++elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "loongarch64")
++ set(UAVS3D_TARGET_CPU "loongarch64")
++else()
++ message(WARNING "unsupported architecture: ${CMAKE_SYSTEM_PROCESSOR}\n")
++ set(UAVS3D_TARGET_CPU "generic")
++endif()
++
+ # add source
+ aux_source_directory(./decoder DIR_UAVS3D_SRC)
+ aux_source_directory(./decore DIR_UAVS3D_CORE)
+-aux_source_directory(./decore/sse DIR_X86_SRC)
+-aux_source_directory(./decore/avx2 DIR_X86_256_SRC)
+
+ list(APPEND DIR_UAVS3D_SRC ${DIR_UAVS3D_CORE})
+
+ include_directories("decore")
++set(UAVS3D_ASM_FILES "")
++
++if("${UAVS3D_TARGET_CPU}" MATCHES "x86" OR
++ "${UAVS3D_TARGET_CPU}" MATCHES "x86_64")
++ aux_source_directory(./decore/sse DIR_X86_SRC)
++ aux_source_directory(./decore/avx2 DIR_X86_256_SRC)
++ set_source_files_properties(${DIR_X86_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -msse4.2")
++ set_source_files_properties(${DIR_X86_256_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -mavx2")
++
++ list(APPEND UAVS3D_ASM_FILES ${DIR_X86_SRC})
++ list(APPEND UAVS3D_ASM_FILES ${DIR_X86_256_SRC})
++elseif("${UAVS3D_TARGET_CPU}" MATCHES "armv7")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/armv7.c")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/alf_armv7.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/deblock_armv7.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/def_armv7.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/inter_pred_armv7.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/intra_pred_armv7.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/dct2_armv7.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/itrans_dct8_dst7_armv7.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/pixel_armv7.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/sao_armv7.c")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/sao_kernel_armv7.S")
++
++ add_definitions(-D _armv7a)
++ enable_language(ASM)
++elseif("${UAVS3D_TARGET_CPU}" MATCHES "arm64")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/arm64.c")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/alf_arm64.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/deblock_arm64.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/def_arm64.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/inter_pred_arm64.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/intra_pred_arm64.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/intra_pred_chroma_arm64.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/itrans_arm64.c")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/itrans_dct2_arm64.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/itrans_dct8_dst7_arm64.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/pixel_arm64.S")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/sao_arm64.c")
++ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/sao_kernel_arm64.S")
+
+-set_source_files_properties(${DIR_UAVS3D_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O3")
+-set_source_files_properties(${DIR_X86_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O3 -msse4.2")
+-set_source_files_properties(${DIR_X86_256_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O3 -mavx2")
++ add_definitions(-D _arm64)
++ enable_language(ASM)
++elseif("${UAVS3D_TARGET_CPU}" MATCHES "loongarch64")
++ # loongarch64
++endif()
++
++if(COMPILE_10BIT)
++ add_definitions(-DCOMPILE_10BIT=1)
++ message("-- compile 10bit")
++else()
++ add_definitions(-DCOMPILE_10BIT=0)
++ message("-- compile 8bit")
++endif()
+
+ # get version
+ set (CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..)
+@@ -30,6 +104,7 @@ endfunction()
+ extract_version_string("${CONFIG_DIR}/version.h" uavs3d_version)
+ MESSAGE(STATUS "uavs3d version \t\t: ${uavs3d_version}")
+
++MESSAGE(STATUS "Target CPU\t\t\t: ${UAVS3D_TARGET_CPU}")
+ # pkg-config
+ find_package(Threads REQUIRED)
+ set(prefix "${CMAKE_INSTALL_PREFIX}")
+@@ -65,9 +140,11 @@ MESSAGE(STATUS "BUILD_SHARED_LIBS \t\t: true")
+ else()
+ MESSAGE(STATUS "BUILD_SHARED_LIBS \t\t: false")
+ endif()
+-add_library(${LIBNAME} ${DIR_UAVS3D_SRC} ${DIR_X86_256_SRC} ${DIR_X86_SRC})
++add_library(${LIBNAME} ${DIR_UAVS3D_SRC} ${UAVS3D_ASM_FILES})
+
+-target_link_libraries(${LIBNAME} m)
++if (NOT MSVC)
++ target_link_libraries(${LIBNAME} m)
++endif()
+ if(CMAKE_USE_PTHREADS_INIT)
+ target_link_libraries(${LIBNAME} pthread)
+ endif()
+@@ -76,4 +153,3 @@ endif()
+ install(TARGETS uavs3d LIBRARY DESTINATION ${CMAKE_INSTALL_LIB_DIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIB_DIR})
+ install(FILES decoder/uavs3d.h DESTINATION ${CMAKE_INSTALL_INCLUDE_DIR})
+ install(FILES ${CONFIG_DIR}/${LIBNAME}.pc DESTINATION ${CMAKE_INSTALL_PKGCONFIG_DIR})
+-
+diff --git a/source/decoder/bitstream.c b/source/decoder/bitstream.c
+index 9c433ad..1c3aaac 100644
+--- a/source/decoder/bitstream.c
++++ b/source/decoder/bitstream.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decoder/bitstream.h b/source/decoder/bitstream.h
+index 60052b4..f1b1043 100644
+--- a/source/decoder/bitstream.h
++++ b/source/decoder/bitstream.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decoder/dec_type.h b/source/decoder/dec_type.h
+index 1761605..cfb0442 100644
+--- a/source/decoder/dec_type.h
++++ b/source/decoder/dec_type.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decoder/dec_util.c b/source/decoder/dec_util.c
+index e9374d9..e30e323 100644
+--- a/source/decoder/dec_util.c
++++ b/source/decoder/dec_util.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -250,7 +245,7 @@ static void uavs3d_always_inline com_mv_rounding_affine(s32 hor, s32 ver, s32 *
+ }
+ }
+
+-static void uavs3d_always_inline check_umve_motion_availability(int scup, int cu_width, int cu_height, int i_scu, int neighbor[NUM_SPATIAL_MV], int valid[NUM_SPATIAL_MV], com_scu_t * map_scu, s16(*map_mv)[REFP_NUM][MV_D], s8(*map_refi)[REFP_NUM])
++static void uavs3d_always_inline check_umve_motion_availability(int scup, int cu_width, int cu_height, int i_scu, int neighbor[5], int valid[5], com_scu_t * map_scu, s16(*map_mv)[REFP_NUM][MV_D], s8(*map_refi)[REFP_NUM])
+ {
+ int cu_width_in_scu = cu_width >> MIN_CU_LOG2;
+ int cu_height_in_scu = cu_height >> MIN_CU_LOG2;
+@@ -985,7 +980,6 @@ static int get_affine_merge_candidate(com_core_t *core, s8 mrg_list_refi[REFP_NU
+ int scup = core->cu_scup;
+ com_map_t *map = &core->map;
+ com_seqh_t *seqhdr = core->seqhdr;
+- com_ref_pic_t(*refp)[REFP_NUM] = core->refp;
+ int i_scu = seqhdr->i_scu;
+ int lidx, i, k;
+ int cu_width = core->cu_width;
+@@ -1112,6 +1106,7 @@ static int get_affine_merge_candidate(com_core_t *core, s8 mrg_list_refi[REFP_NU
+ int neb_addr_rb = scup + i_scu * (cu_height_in_scu - 1) + (cu_width_in_scu - 1);
+ int scu_y;
+ int scup_co = get_colocal_scup(neb_addr_rb, i_scu, seqhdr->pic_width_in_scu, seqhdr->pic_height_in_scu, &scu_y);
++ com_ref_pic_t(*refp)[REFP_NUM] = core->refp;
+
+ if (core->pichdr->slice_type == SLICE_B) {
+ uavs3d_check_ref_avaliable(refp[0][REFP_1].pic, scu_y << MIN_CU_LOG2);
+diff --git a/source/decoder/dec_util.h b/source/decoder/dec_util.h
+index 77c00a6..9d46217 100644
+--- a/source/decoder/dec_util.h
++++ b/source/decoder/dec_util.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decoder/parser.c b/source/decoder/parser.c
+index 45bb26a..9405daa 100644
+--- a/source/decoder/parser.c
++++ b/source/decoder/parser.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -88,6 +83,9 @@ int dec_parse_sqh(com_bs_t * bs, com_seqh_t * seqhdr)
+ dec_bs_read1(bs, 1); //marker_bit
+ seqhdr->vertical_size = dec_bs_read(bs, 14, 0, COM_UINT32_MAX);
+
++ seqhdr->display_horizontal_size = seqhdr->horizontal_size;
++ seqhdr->display_vertical_size = seqhdr->vertical_size;
++
+ seqhdr->chroma_format = (u8)dec_bs_read(bs, 2, 1, 1);
+ seqhdr->sample_precision = (u8)dec_bs_read(bs, 3, 1, 2);
+
+@@ -262,19 +260,21 @@ static int user_data(com_pic_header_t *pichdr, com_bs_t * bs)
+ return RET_OK;
+ }
+
+-static int sequence_display_extension(com_bs_t * bs)
++static int sequence_display_extension(com_bs_t * bs, com_seqh_t *seqhdr)
+ {
+ dec_bs_read(bs, 3, 0, COM_UINT32_MAX); // video_format u(3)
+ dec_bs_read1(bs, -1); // sample_range u(1)
+- int colour_description = dec_bs_read1(bs, -1); // colour_description u(1)
+- if (colour_description) {
+- dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // colour_primaries u(8)
+- dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // transfer_characteristics u(8)
+- dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // matrix_coefficients u(8)
++
++ seqhdr->colour_description = dec_bs_read1(bs, -1); // colour_description u(1)
++
++ if (seqhdr->colour_description) {
++ seqhdr->colour_primaries = dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // colour_primaries u(8)
++ seqhdr->transfer_characteristics = dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // transfer_characteristics u(8)
++ seqhdr->matrix_coefficients = dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // matrix_coefficients u(8)
+ }
+- dec_bs_read(bs, 14, 0, COM_UINT32_MAX); // display_horizontal_size u(14)
++ seqhdr->display_horizontal_size = dec_bs_read(bs, 14, 0, COM_UINT32_MAX); // display_horizontal_size u(14)
+ dec_bs_read1(bs, 1); //marker_bit
+- dec_bs_read(bs, 14, 0, COM_UINT32_MAX); // display_vertical_size u(14)
++ seqhdr->display_vertical_size = dec_bs_read(bs, 14, 0, COM_UINT32_MAX); // display_vertical_size u(14)
+ char td_mode_flag = dec_bs_read1(bs, -1); // td_mode_flag u(1)
+
+ if (td_mode_flag == 1) {
+@@ -460,7 +460,7 @@ static int extension_data(com_bs_t * bs, com_seqh_t *seqhdr, com_pic_header_t *p
+ if (i == 0) {
+ int ret = dec_bs_read(bs, 4, 0, COM_UINT32_MAX);
+ if (ret == 2) {
+- sequence_display_extension(bs);
++ sequence_display_extension(bs, seqhdr);
+ } else if (ret == 3) {
+ temporal_scalability_extension(bs);
+ } else if (ret == 4) {
+@@ -1647,7 +1647,7 @@ static uavs3d_always_inline u32 lbac_read_unary_sym_ep(com_lbac_t * lbac)
+ low = lbac_refill2(lbac, low);
+ }
+ val += bin;
+- } while (bin);
++ } while (bin && lbac->cur < lbac->end);
+
+ lbac->range = range;
+ lbac->low = low;
+@@ -2834,8 +2834,7 @@ int dec_parse_lcu_delta_qp(com_lbac_t * lbac, int last_dqp)
+ bin = lbac_dec_bin(lbac, ctx->lcu_qp_delta + act_ctx);
+ act_ctx = min(3, act_ctx + 1);
+ act_sym += !bin;
+- }
+- while (!bin);
++ } while (!bin && lbac->cur < lbac->end);
+ }
+
+ dquant = (act_sym + 1) >> 1;
+diff --git a/source/decoder/parser.h b/source/decoder/parser.h
+index 20cd103..93fbb1a 100644
+--- a/source/decoder/parser.h
++++ b/source/decoder/parser.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decoder/uavs3d.c b/source/decoder/uavs3d.c
+index 9ac7dc2..7b0491d 100644
+--- a/source/decoder/uavs3d.c
++++ b/source/decoder/uavs3d.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -1060,7 +1055,7 @@ int __cdecl uavs3d_flush(void *h, uavs3d_io_frm_t* frm_out)
+
+ void* __cdecl uavs3d_create(uavs3d_cfg_t * dec_cfg, uavs3d_lib_output_callback_t callback, int * err)
+ {
+- uavs3d_dec_t *ctx = NULL;
++ uavs3d_dec_t *ctx;
+
+ printf("libuavs3d(%2d): %s_%s, %s\n", BIT_DEPTH, VERSION_STR, VERSION_TYPE, VERSION_SHA1);
+
+diff --git a/source/decoder/uavs3d.h b/source/decoder/uavs3d.h
+index f5ea2b0..1931917 100644
+--- a/source/decoder/uavs3d.h
++++ b/source/decoder/uavs3d.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -137,6 +132,9 @@ typedef struct uavs3d_com_seqh_t {
+ unsigned int bbv_buffer_size; /* 18 bits */
+ int horizontal_size; /* 14 bits */
+ int vertical_size; /* 14 bits */
++ int display_horizontal_size; /* 14 bits */
++ int display_vertical_size; /* 14 bits */
++
+ unsigned char log2_max_cu_width_height; /* 3 bits */
+ unsigned char min_cu_size;
+ unsigned char max_part_ratio_log2;
+@@ -211,6 +209,13 @@ typedef struct uavs3d_com_seqh_t {
+
+ /* alf map */
+ unsigned char *alf_idx_map;
++
++ /* hdr info */
++ unsigned char colour_description;
++ unsigned char colour_primaries;
++ unsigned char transfer_characteristics;
++ unsigned char matrix_coefficients;
++
+ } com_seqh_t;
+
+ #define FRAME_MAX_PLANES 3
+diff --git a/source/decore/alf.c b/source/decore/alf.c
+index 89a2411..111d99f 100644
+--- a/source/decore/alf.c
++++ b/source/decore/alf.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/arm64/alf_arm64.S b/source/decore/arm64/alf_arm64.S
+index 49a620f..9998073 100644
+--- a/source/decore/arm64/alf_arm64.S
++++ b/source/decore/arm64/alf_arm64.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/arm64/arm64.c b/source/decore/arm64/arm64.c
+index 0850349..74c2f81 100644
+--- a/source/decore/arm64/arm64.c
++++ b/source/decore/arm64/arm64.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -102,7 +97,7 @@ static void uavs3d_padding_rows_chroma_arm64(pel *src, int i_src, int width, int
+
+ void uavs3d_funs_init_arm64()
+ {
+-#if (BIT_DEPTH == 8)
++#if !COMPILE_10BIT
+ uavs3d_funs_handle.sao[ Y_C] = uavs3d_sao_on_lcu_arm64;
+ uavs3d_funs_handle.sao[UV_C] = uavs3d_sao_on_lcu_chroma_arm64;
+ uavs3d_funs_handle.alf[ Y_C] = uavs3d_alf_one_lcu_arm64;
+@@ -311,7 +306,7 @@ void uavs3d_funs_init_arm64()
+ uavs3d_funs_handle.itrans_dst7[1] = uavs3d_itrans_dct8_pb8_arm64;
+ uavs3d_funs_handle.itrans_dst7[2] = uavs3d_itrans_dct8_pb16_arm64;
+
+- uavs3d_funs_handle.conv_fmt_16bit = uavs3d_conv_fmt_16bit_arm64;
++ //uavs3d_funs_handle.conv_fmt_16bit = uavs3d_conv_fmt_16bit_arm64;
+ uavs3d_funs_handle.padding_rows_luma = uavs3d_padding_rows_luma_arm64;
+ uavs3d_funs_handle.padding_rows_chroma = uavs3d_padding_rows_chroma_arm64;
+
+diff --git a/source/decore/arm64/arm64.h b/source/decore/arm64/arm64.h
+index 6ba0566..b2410ef 100644
+--- a/source/decore/arm64/arm64.h
++++ b/source/decore/arm64/arm64.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/arm64/deblock_arm64.S b/source/decore/arm64/deblock_arm64.S
+index ff47274..b152147 100644
+--- a/source/decore/arm64/deblock_arm64.S
++++ b/source/decore/arm64/deblock_arm64.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -1540,12 +1535,12 @@ deblock_ver_filtered:
+ bif v17.16b, v1.16b, v25.16b
+ bif v18.16b, v6.16b, v25.16b
+
+- mov v1.2d, v17.2d
+- mov v2.2d, v28.2d
+- mov v3.2d, v30.2d
+- mov v4.2d, v31.2d
+- mov v5.2d, v29.2d
+- mov v6.2d, v18.2d
++ mov v1.16b, v17.16b
++ mov v2.16b, v28.16b
++ mov v3.16b, v30.16b
++ mov v4.16b, v31.16b
++ mov v5.16b, v29.16b
++ mov v6.16b, v18.16b
+
+ st4 {v0.H, v1.H, v2.H, v3.H}[0], [x2], #8
+ st4 {v4.H, v5.H, v6.H, v7.H}[0], [x2], x5
+diff --git a/source/decore/arm64/def_arm64.S b/source/decore/arm64/def_arm64.S
+index c6a219d..82e267d 100644
+--- a/source/decore/arm64/def_arm64.S
++++ b/source/decore/arm64/def_arm64.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -35,25 +30,23 @@
+ * For more information, contact us at rgwang@pkusz.edu.cn.
+ **************************************************************************************/
+
+-#if defined(__ANDROID__)
+-.macro function name
+- .text
+- .align 4
+- .global \name
+- .type \name, %function
+- \name:
+-.endm
+-
+ #if defined(__aarch64__) && !defined(__arm64__)
+ #define __arm64__ 1
+ #endif
+-#elif defined(__APPLE__)
++
++#if defined(__APPLE__)
+ .macro function name
+ .text
+ .align 4
+ .global _\name
+ _\name:
+ .endm
++#else
++.macro function name
++ .text
++ .align 4
++ .global \name
++ .type \name, %function
++ \name:
++.endm
+ #endif
+-
+-#define COMPILE_10BIT 0
+diff --git a/source/decore/arm64/inter_pred_arm64.S b/source/decore/arm64/inter_pred_arm64.S
+index e86addd..375f041 100644
+--- a/source/decore/arm64/inter_pred_arm64.S
++++ b/source/decore/arm64/inter_pred_arm64.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -1809,9 +1804,9 @@ if_hor_ver_chroma_w8_loop_y:
+ smlal v30.4s, v22.4h, v7.h[3]
+ smlal2 v31.4s, v22.8h, v7.h[3]
+
+- mov v16.2d, v20.2d
+- mov v17.2d, v21.2d
+- mov v18.2d, v22.2d
++ mov v16.16b, v20.16b
++ mov v17.16b, v21.16b
++ mov v18.16b, v22.16b
+
+ rshrn v24.4h, v24.4s, #12
+ rshrn2 v24.8h, v25.4s, #12
+@@ -2553,10 +2548,10 @@ if_hor_ver_luma_w4_loop_y:
+ smlal v29.4s, v21.4h, v8.h[7]
+ smlal2 v30.4s, v21.8h, v8.h[7]
+
+- mov v16.2d, v18.2d
+- mov v17.2d, v19.2d
+- mov v18.2d, v20.2d
+- mov v19.2d, v21.2d
++ mov v16.16b, v18.16b
++ mov v17.16b, v19.16b
++ mov v18.16b, v20.16b
++ mov v19.16b, v21.16b
+
+ rshrn v27.4h, v27.4s, #12
+ rshrn v28.4h, v28.4s, #12
+@@ -5268,7 +5263,7 @@ function uavs3d_if_hor_ver_luma_w8_arm64
+ ldr w8, [sp] // w8 = max_val
+
+ sub sp, sp, #80
+- sub x9, sp, #16
++ add x9, sp, #64
+ st1 {v12.2d, v13.2d, v14.2d, v15.2d}, [sp]
+ st1 {v11.2d}, [x9]
+
+diff --git a/source/decore/arm64/intra_pred_arm64.S b/source/decore/arm64/intra_pred_arm64.S
+index e2c4629..5689bd4 100644
+--- a/source/decore/arm64/intra_pred_arm64.S
++++ b/source/decore/arm64/intra_pred_arm64.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -2996,12 +2991,12 @@ intra_pred_bi_ipf_end:
+ // const s8 *flt_coef_hor, const s8 *flt_coef_ver, int w, int h, int bit_depth)
+ //src->x0, dst->x1, i_dst->x2, flt_range_hor->x3, flt_range_ver->x4, flt_coef_hor->x5, flt_coef_ver->x6, w->x7
+ function uavs3d_intra_pred_ipf_arm64
+-#if defined(__ANDROID__)
+- ldr w8, [sp] // w8 = h
+- ldr w9, [sp, #8] // w9 = bit_depth
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldr w8, [sp]
+ ldr w9, [sp, #4]
++#else
++ ldr w8, [sp] // w8 = h
++ ldr w9, [sp, #8] // w9 = bit_depth
+ #endif
+ add x0, x0, #1 // p_top = src + 1
+
+diff --git a/source/decore/arm64/intra_pred_chroma_arm64.S b/source/decore/arm64/intra_pred_chroma_arm64.S
+index 2c142f3..b12d02a 100644
+--- a/source/decore/arm64/intra_pred_chroma_arm64.S
++++ b/source/decore/arm64/intra_pred_chroma_arm64.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -555,7 +550,7 @@ intra_pred_dc_uv_fillblock_w8:
+ b intra_pred_dc_uv_end
+
+ intra_pred_dc_uv_fillblock_w16:
+- mov v1.8h, v0.8h
++ mov v1.16b, v0.16b
+ intra_pred_dc_uv_fillblock_w16_y:
+ st1 {v0.8h, v1.8h}, [x1], x2 // store dst[x]
+ st1 {v0.8h, v1.8h}, [x1], x2
+@@ -570,9 +565,9 @@ intra_pred_dc_uv_fillblock_w32x:
+ cmp w3, #64
+ beq intra_pred_dc_uv_fillblock_w64
+
+- mov v1.8h, v0.8h
+- mov v2.8h, v0.8h
+- mov v3.8h, v0.8h
++ mov v1.16b, v0.16b
++ mov v2.16b, v0.16b
++ mov v3.16b, v0.16b
+ intra_pred_dc_uv_fillblock_w32_y:
+ st1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x1], x2 // store dst[x]
+ st1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x1], x2
+@@ -585,9 +580,9 @@ intra_pred_dc_uv_fillblock_w32_y:
+ intra_pred_dc_uv_fillblock_w64:
+
+ sub x2, x2, #64
+- mov v1.8h, v0.8h
+- mov v2.8h, v0.8h
+- mov v3.8h, v0.8h
++ mov v1.16b, v0.16b
++ mov v2.16b, v0.16b
++ mov v3.16b, v0.16b
+ intra_pred_dc_uv_fillblock_w64_y:
+ st1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x1], #64
+ st1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x1], x2
+diff --git a/source/decore/arm64/itrans_arm64.c b/source/decore/arm64/itrans_arm64.c
+index d26ec5f..9b2362e 100644
+--- a/source/decore/arm64/itrans_arm64.c
++++ b/source/decore/arm64/itrans_arm64.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/arm64/itrans_arm64.h b/source/decore/arm64/itrans_arm64.h
+index c4977d0..15d9a4b 100644
+--- a/source/decore/arm64/itrans_arm64.h
++++ b/source/decore/arm64/itrans_arm64.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/arm64/itrans_dct2_arm64.S b/source/decore/arm64/itrans_dct2_arm64.S
+index 00b99e1..0f37c7e 100644
+--- a/source/decore/arm64/itrans_dct2_arm64.S
++++ b/source/decore/arm64/itrans_dct2_arm64.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -758,9 +753,9 @@ dct2_h16_1st_loopx:
+ dct2_h16_2nd_transform:
+
+ sub sp, sp, #48
+- sub x7, sp, #16
+- st1 {v10.8h, v11.8h}, [sp]
+- st1 {v12.8h}, [x7]
++ add x7, sp, #16
++ st1 {v10.8h, v11.8h}, [x7]
++ st1 {v12.8h}, [sp]
+
+ mov w8, #1
+ lsl w8, w8, w5
+@@ -1059,8 +1054,8 @@ dct2_h16_2nd_loopx:
+ cmp x8, x3
+ blt dct2_h16_2nd_loopx
+
+- ld1 {v10.8h, v11.8h}, [sp], #32
+ ld1 {v12.8h}, [sp], #16
++ ld1 {v10.8h, v11.8h}, [sp], #32
+ ld1 {v8.8h, v9.8h}, [sp], #32
+
+ dct2_h16_end:
+diff --git a/source/decore/arm64/itrans_dct8_dst7_arm64.S b/source/decore/arm64/itrans_dct8_dst7_arm64.S
+index 340865c..5ba39e5 100644
+--- a/source/decore/arm64/itrans_dct8_dst7_arm64.S
++++ b/source/decore/arm64/itrans_dct8_dst7_arm64.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/arm64/pixel_arm64.S b/source/decore/arm64/pixel_arm64.S
+index bc79826..81fa81c 100644
+--- a/source/decore/arm64/pixel_arm64.S
++++ b/source/decore/arm64/pixel_arm64.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -285,8 +280,8 @@ padding_rows_lr_y:
+
+ ld1r {v0.8h}, [x0]
+ ld1r {v2.8h}, [x5] // right reference pointer
+- mov v1.8h, v0.8h
+- mov v3.8h, v2.8h
++ mov v1.16b, v0.16b
++ mov v3.16b, v2.16b
+
+ sub x5, x0, x4
+ add x6, x0, x2
+@@ -332,8 +327,8 @@ padding_rows_chroma_lr_y:
+ ld1r {v0.4s}, [x0] // src[0] src[1]
+ ld1r {v2.4s}, [x5] // right reference pointer
+
+- mov v1.4s, v0.4s
+- mov v3.4s, v2.4s
++ mov v1.16b, v0.16b
++ mov v3.16b, v2.16b
+
+ sub x5, x0, x4
+ add x6, x0, x2
+diff --git a/source/decore/arm64/sao_arm64.c b/source/decore/arm64/sao_arm64.c
+index dc1a5b0..37cf9e0 100644
+--- a/source/decore/arm64/sao_arm64.c
++++ b/source/decore/arm64/sao_arm64.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/arm64/sao_kernel_arm64.S b/source/decore/arm64/sao_kernel_arm64.S
+index 1546b17..b0d0bb8 100644
+--- a/source/decore/arm64/sao_kernel_arm64.S
++++ b/source/decore/arm64/sao_kernel_arm64.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -451,10 +446,10 @@ loop_x_eo_90_chroma_end:
+ ************************************************************************************************************************************/
+ function uavs3d_sao_eo_135_arm64
+ // get start_x_r0 and end_x_r0
+-#if defined(__ANDROID__)
+- ldp x8, x9, [sp]
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w8, w9, [sp]
++#else
++ ldp x8, x9, [sp]
+ #endif
+ sxtw x8, w8 // start_x_r0
+ sxtw x9, w9 // end_x_r0
+@@ -537,10 +532,10 @@ test_loop_x_eo_135_end_r0:
+
+ // ------- middle rows -------
+ // get param
+-#if defined(__ANDROID__)
+- ldp x7, x8, [sp, #16]
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w7, w8, [sp, #8]
++#else
++ ldp x7, x8, [sp, #16]
+ #endif
+ sxtw x7, w7 // start_x_r
+ sxtw x8, w8 // end_x_r
+@@ -613,10 +608,10 @@ test_loop_x_eo_135_end_r:
+ bgt test_loop_y_eo_135_r
+
+ // ------- last row -------
+-#if defined(__ANDROID__)
+- ldp x6, x7, [sp, #32]
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w6, w7, [sp, #16]
++#else
++ ldp x6, x7, [sp, #32]
+ #endif
+ sxtw x6, w6 // start_x_rn
+ sxtw x7, w7 // end_x_rn
+@@ -691,10 +686,10 @@ test_loop_x_eo_135_end_rn:
+ ************************************************************************************************************************************/
+ function uavs3d_sao_eo_135_chroma_arm64
+
+-#if defined(__ANDROID__)
+- ldp x8, x9, [sp]
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w8, w9, [sp]
++#else
++ ldp x8, x9, [sp]
+ #endif
+ sxtw x8, w8 // start_x_r0
+ sxtw x9, w9 // end_x_r0
+@@ -793,10 +788,10 @@ loop_x_eo_135_chroma_end_r0:
+ add x1, x1, x3 //-- dst+=dst_stride
+
+ //--------------------------------middle rows--------------------------------
+-#if defined(__ANDROID__)
+- ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w7 , w8, [sp, #8] //-- x7=start_x_r; x8=end_x_r
++#else
++ ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
+ #endif
+ sxtw x7 , w7
+ sxtw x8 , w8
+@@ -886,10 +881,10 @@ loop_x_eo_135_chroma_end_r:
+ bgt loop_y_eo_135_chroma_r
+
+ //---------------------------------last row--------------------------------
+-#if defined(__ANDROID__)
+- ldp x6, x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w6, w7, [sp, #16] //-- x6=start_x_rn; x7=end_x_rn
++#else
++ ldp x6, x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
+ #endif
+ sxtw x7, w7
+ sxtw x6, w6
+@@ -979,10 +974,10 @@ loop_x_eo_135_chroma_end_rn:
+ * end_x_r0->x8, start_x_r->x9, end_x_r->x10, start_x_rn->x11, end_x_rn->x12
+ ************************************************************************************************************************************/
+ function uavs3d_sao_eo_45_arm64
+-#if defined(__ANDROID__)
+- ldp x8, x9, [sp]
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w8, w9, [sp]
++#else
++ ldp x8, x9, [sp]
+ #endif
+ sxtw x8, w8 // start_x_r0
+ sxtw x9, w9 // end_x_r0
+@@ -1064,10 +1059,10 @@ test_loop_x_eo_45_end_r0:
+
+ // ------- middle rows -------
+ // get param
+-#if defined(__ANDROID__)
+- ldp x7, x8, [sp, #16] // x7 start_x_r; x8 end_x_r
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w7, w8, [sp, #8] // x7 start_x_r; x8 end_x_r
++#else
++ ldp x7, x8, [sp, #16] // x7 start_x_r; x8 end_x_r
+ #endif
+ sxtw x7, w7
+ sxtw x8, w8
+@@ -1141,10 +1136,10 @@ test_loop_x_eo_45_end_r:
+ bgt test_loop_y_eo_45_r
+
+ // ------- last row -------
+-#if defined(__ANDROID__)
+- ldp x6, x7, [sp, #32] // $x6 start_x_rn; $x7 end_x_rn
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w6, w7, [sp, #16] // $x6 start_x_rn; $x7 end_x_rn
++#else
++ ldp x6, x7, [sp, #32] // $x6 start_x_rn; $x7 end_x_rn
+ #endif
+ sxtw x6, w6
+ sxtw x7, w7
+@@ -1217,10 +1212,10 @@ ret
+ * end_x_r0->x8, start_x_r->x9, end_x_r->x10, start_x_rn->x11, end_x_rn->x12
+ ************************************************************************************************************************************/
+ function uavs3d_sao_eo_45_chroma_arm64
+-#if defined(__ANDROID__)
+- ldp x8, x9, [sp]
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w8, w9, [sp]
++#else
++ ldp x8, x9, [sp]
+ #endif
+ sxtw x8, w8 // start_x_r0
+ sxtw x9, w9 // end_x_r0
+@@ -1315,10 +1310,10 @@ loop_x_eo_45_chroma_end_r0:
+ add x1, x1, x3 //-- dst+=dst_stride
+
+ //--------------------------------middle rows--------------------------------
+-#if defined(__ANDROID__)
+- ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w7 , w8, [sp, #8] //-- x7=start_x_r; x8=end_x_r
++#else
++ ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
+ #endif
+ sxtw x7 , w7
+ sxtw x8 , w8
+@@ -1405,10 +1400,10 @@ loop_x_eo_45_chroma_end_r:
+ bgt loop_y_eo_45_chroma_r
+
+ //---------------------------------last row--------------------------------
+-#if defined(__ANDROID__)
+- ldp x6 , x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w6 , w7, [sp, #16] //-- x6=start_x_rn; x7=end_x_rn
++#else
++ ldp x6 , x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
+ #endif
+ sxtw x7 , w7
+ sxtw x6 , w6
+@@ -2221,10 +2216,10 @@ loop_x_eo_90_chroma_end:
+ * src->x0, dst->x1, src_stride->x2, dst_stride->x3, offset->x4, mask->x5, mb_height->x6, bit_depth->x7
+ ************************************************************************************************************************************/
+ function uavs3d_sao_eo_135_arm64
+-#if defined(__ANDROID__)
+- ldp x8, x9, [sp] // start_x_r0 and end_x_r0
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w8, w9, [sp]
++#else
++ ldp x8, x9, [sp] // start_x_r0 and end_x_r0
+ #endif
+
+ sxtw x8, w8 // start_x_r0
+@@ -2336,10 +2331,10 @@ test_loop_x_eo_135_end_r0:
+
+ // ------- middle rows -------
+ // get param
+-#if defined(__ANDROID__)
+- ldp x7, x8, [sp, #16]
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w7, w8, [sp, #8]
++#else
++ ldp x7, x8, [sp, #16]
+ #endif
+ sxtw x7, w7 // x7 start_x_r
+ sxtw x8, w8 // x8 end_x_r
+@@ -2431,10 +2426,10 @@ test_loop_x_eo_135_end_r:
+ bgt test_loop_y_eo_135_r
+
+ // ------- last row -------
+-#if defined(__ANDROID__)
+- ldp x6, x7, [sp, #32]
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w6, w7, [sp, #16]
++#else
++ ldp x6, x7, [sp, #32]
+ #endif
+ sxtw x6, w6 // start_x_rn
+ sxtw x7, w7 // end_x_rn
+@@ -2527,10 +2522,10 @@ test_loop_x_eo_135_end_rn:
+ * src->x0, dst->x1, src_stride->x2, dst_stride->x3, offset->x4, mask->x5, mb_height->x6, bit_depth->x7
+ ************************************************************************************************************************************/
+ function uavs3d_sao_eo_135_chroma_arm64
+-#if defined(__ANDROID__)
+- ldp x8, x9, [sp] // start_x_r0 and end_x_r0
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w8, w9, [sp]
++#else
++ ldp x8, x9, [sp] // start_x_r0 and end_x_r0
+ #endif
+
+ mov w13, #1
+@@ -2636,10 +2631,10 @@ loop_x_eo_135_chroma_end_r0:
+ add x1, x1, x3 //-- dst+=dst_stride
+
+ //--------------------------------middle rows--------------------------------
+-#if defined(__ANDROID__)
+- ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w7 , w8, [sp, #8] //-- x7=start_x_r; x8=end_x_r
++#else
++ ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
+ #endif
+ sxtw x7 , w7
+ sxtw x8 , w8
+@@ -2730,10 +2725,10 @@ loop_x_eo_135_chroma_end_r:
+ bgt loop_y_eo_135_chroma_r
+
+ //---------------------------------last row--------------------------------
+-#if defined(__ANDROID__)
+- ldp x6, x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w6, w7, [sp, #16] //-- x6=start_x_rn; x7=end_x_rn
++#else
++ ldp x6, x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
+ #endif
+ sxtw x7, w7
+ sxtw x6, w6
+@@ -2822,10 +2817,10 @@ loop_x_eo_135_chroma_end_rn:
+ * src->x0, dst->x1, src_stride->x2, dst_stride->x3, offset->x4, mask->x5, mb_height->x6, bit_depth->x7
+ ************************************************************************************************************************************/
+ function uavs3d_sao_eo_45_arm64
+-#if defined(__ANDROID__)
+- ldp x8, x9, [sp] // start_x_r0 and end_x_r0
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w8, w9, [sp]
++#else
++ ldp x8, x9, [sp] // start_x_r0 and end_x_r0
+ #endif
+
+ mov w12, #1
+@@ -2936,10 +2931,10 @@ test_loop_x_eo_45_end_r0:
+
+ // ------- middle rows -------
+ // get param
+-#if defined(__ANDROID__)
+- ldp x7, x8, [sp, #16] // x7 start_x_r; x8 end_x_r
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w7, w8, [sp, #8] // x7 start_x_r; x8 end_x_r
++#else
++ ldp x7, x8, [sp, #16] // x7 start_x_r; x8 end_x_r
+ #endif
+ sxtw x7, w7
+ sxtw x8, w8
+@@ -3031,10 +3026,10 @@ test_loop_x_eo_45_end_r:
+ bgt test_loop_y_eo_45_r
+
+ // ------- last row -------
+-#if defined(__ANDROID__)
+- ldp x6, x7, [sp, #32]
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w6, w7, [sp, #16]
++#else
++ ldp x6, x7, [sp, #32]
+ #endif
+ sxtw x6, w6 // start_x_rn
+ sxtw x7, w7 // end_x_rn
+@@ -3126,10 +3121,10 @@ test_loop_x_eo_45_end_rn:
+ * src->x0, dst->x1, src_stride->x2, dst_stride->x3, offset->x4, mask->x5, mb_height->x6, bit_depth->x7
+ ************************************************************************************************************************************/
+ function uavs3d_sao_eo_45_chroma_arm64
+-#if defined(__ANDROID__)
+- ldp x8, x9, [sp] // start_x_r0 and end_x_r0
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w8, w9, [sp]
++#else
++ ldp x8, x9, [sp] // start_x_r0 and end_x_r0
+ #endif
+
+ mov w12, #1
+@@ -3236,10 +3231,10 @@ loop_x_eo_45_chroma_end_r0:
+ add x1, x1, x3 //-- dst+=dst_stride
+
+ //--------------------------------middle rows--------------------------------
+-#if defined(__ANDROID__)
+- ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w7 , w8, [sp, #8] //-- x7=start_x_r; x8=end_x_r
++#else
++ ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
+ #endif
+ sxtw x7 , w7
+ sxtw x8 , w8
+@@ -3328,10 +3323,10 @@ loop_x_eo_45_chroma_end_r:
+ bgt loop_y_eo_45_chroma_r
+
+ //---------------------------------last row--------------------------------
+-#if defined(__ANDROID__)
+- ldp x6 , x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ ldp w6 , w7, [sp, #16] //-- x6=start_x_rn; x7=end_x_rn
++#else
++ ldp x6 , x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
+ #endif
+ sxtw x7 , w7
+ sxtw x6 , w6
+diff --git a/source/decore/arm64/sao_kernel_arm64.h b/source/decore/arm64/sao_kernel_arm64.h
+index 03373ce..b9c448e 100644
+--- a/source/decore/arm64/sao_kernel_arm64.h
++++ b/source/decore/arm64/sao_kernel_arm64.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/armv7/alf_armv7.S b/source/decore/armv7/alf_armv7.S
+index 5b0e3e0..c87f29b 100644
+--- a/source/decore/armv7/alf_armv7.S
++++ b/source/decore/armv7/alf_armv7.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/armv7/armv7.c b/source/decore/armv7/armv7.c
+index 0be03a4..6ad9086 100644
+--- a/source/decore/armv7/armv7.c
++++ b/source/decore/armv7/armv7.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -242,7 +237,7 @@ void uavs3d_itrans_dct2_h64_w64_armv7(s16 *src, s16 *dst, int bit_depth)
+
+ void uavs3d_funs_init_armv7()
+ {
+-#if BIT_DEPTH == 8
++#if !COMPILE_10BIT
+ uavs3d_funs_handle.sao[ Y_C] = uavs3d_sao_on_lcu_armv7;
+ uavs3d_funs_handle.sao[UV_C] = uavs3d_sao_on_lcu_chroma_armv7;
+ uavs3d_funs_handle.alf[ Y_C] = uavs3d_alf_one_lcu_armv7;
+diff --git a/source/decore/armv7/armv7.h b/source/decore/armv7/armv7.h
+index 60efd7e..0114927 100644
+--- a/source/decore/armv7/armv7.h
++++ b/source/decore/armv7/armv7.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/armv7/dct2_armv7.S b/source/decore/armv7/dct2_armv7.S
+index 82c2f82..05e965f 100644
+--- a/source/decore/armv7/dct2_armv7.S
++++ b/source/decore/armv7/dct2_armv7.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/armv7/deblock_armv7.S b/source/decore/armv7/deblock_armv7.S
+index 202d121..dcdeabf 100644
+--- a/source/decore/armv7/deblock_armv7.S
++++ b/source/decore/armv7/deblock_armv7.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/armv7/def_armv7.S b/source/decore/armv7/def_armv7.S
+index fdc3d27..861f016 100644
+--- a/source/decore/armv7/def_armv7.S
++++ b/source/decore/armv7/def_armv7.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -35,23 +30,18 @@
+ * For more information, contact us at rgwang@pkusz.edu.cn.
+ **************************************************************************************/
+
+-#if defined(__ANDROID__)
+-.macro function name
+- .global \name
+- .hidden \name
+- .type \name, %function
+-\name:
+-.endm
+-#elif defined(__APPLE__)
++#if defined(__APPLE__)
+ .macro function name
+ .text
+ .align 4
+ .global _\name
+ _\name:
+ .endm
+-
++#else
++.macro function name
++ .global \name
++ .hidden \name
++ .type \name, %function
++\name:
++.endm
+ #endif
+-
+-#define COMPILE_10BIT 0
+-
+-
+diff --git a/source/decore/armv7/inter_pred_armv7.S b/source/decore/armv7/inter_pred_armv7.S
+index edbcc62..fd78ae4 100644
+--- a/source/decore/armv7/inter_pred_armv7.S
++++ b/source/decore/armv7/inter_pred_armv7.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/armv7/intra_pred_armv7.S b/source/decore/armv7/intra_pred_armv7.S
+index cbce583..807f6a5 100644
+--- a/source/decore/armv7/intra_pred_armv7.S
++++ b/source/decore/armv7/intra_pred_armv7.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/armv7/itrans_dct8_dst7_armv7.S b/source/decore/armv7/itrans_dct8_dst7_armv7.S
+index 129bbc3..d8d1ab1 100755
+--- a/source/decore/armv7/itrans_dct8_dst7_armv7.S
++++ b/source/decore/armv7/itrans_dct8_dst7_armv7.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/armv7/pixel_armv7.S b/source/decore/armv7/pixel_armv7.S
+index 83124a4..f88f474 100644
+--- a/source/decore/armv7/pixel_armv7.S
++++ b/source/decore/armv7/pixel_armv7.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/armv7/sao_armv7.c b/source/decore/armv7/sao_armv7.c
+index cec6880..8b3070e 100644
+--- a/source/decore/armv7/sao_armv7.c
++++ b/source/decore/armv7/sao_armv7.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/armv7/sao_kernel_armv7.S b/source/decore/armv7/sao_kernel_armv7.S
+index 0449ecc..1652c99 100644
+--- a/source/decore/armv7/sao_kernel_armv7.S
++++ b/source/decore/armv7/sao_kernel_armv7.S
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/armv7/sao_kernel_armv7.h b/source/decore/armv7/sao_kernel_armv7.h
+index d30c690..49b020b 100644
+--- a/source/decore/armv7/sao_kernel_armv7.h
++++ b/source/decore/armv7/sao_kernel_armv7.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/avx2/alf_avx2.c b/source/decore/avx2/alf_avx2.c
+index 74226b6..cc2cf5f 100644
+--- a/source/decore/avx2/alf_avx2.c
++++ b/source/decore/avx2/alf_avx2.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -489,7 +484,7 @@ void uavs3d_alf_one_lcu_one_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src
+ __m256i T000, T001, T010, T011, T100, T101, T110, T111, T200, T201, T210, T211, T310, T311, T300, T301, T400, T401, T410, T411, T500, T501, T510, T511, T600, T601, T610, T611, T700, T701, T710, T711;
+ __m256i E00, E01, E10, E11;
+ __m256i C0, C1, C2, C3, C4, C5, C6, C7, C8;
+- __m256i S0, S00, S01, S1, S10, S11, S2, S20, S21, S3, S30, S31, S4, S40, S41, S5, S50, S51, S6, S7, S8, S60, S61, S70, S71, S80, S81, S82, S83, SS1, SS2, SS3, SS4;
++ __m256i S0, S00, S01, S1, S10, S11, S2, S20, S21, S3, S30, S31, S4, S40, S41, S5, S50, S51, S6, S7, S60, S61, S70, S71, S80, S81, S82, S83, SS1, SS2, SS3, SS4;
+ __m256i mAddOffset;
+ __m256i mZero = _mm256_set1_epi16(0);
+ __m256i mMax = _mm256_set1_epi16((short)((1 << sample_bit_depth) - 1));
+@@ -629,7 +624,7 @@ void uavs3d_alf_one_lcu_one_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src
+ S5 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S50, 1));
+ S6 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S60, 1));
+ S7 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S70, 1));
+- S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S80, 1));
++ //S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S80, 1));
+ S0 = _mm256_add_epi32(S0, S1);
+ S2 = _mm256_add_epi32(S2, S3);
+ S4 = _mm256_add_epi32(S4, S5);
+@@ -803,7 +798,7 @@ void uavs3d_alf_one_lcu_one_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src
+ S5 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S50, 1));
+ S6 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S60, 1));
+ S7 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S70, 1));
+- S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S80, 1));
++ //S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S80, 1));
+ S0 = _mm256_add_epi32(S0, S1);
+ S2 = _mm256_add_epi32(S2, S3);
+ S4 = _mm256_add_epi32(S4, S5);
+@@ -821,7 +816,7 @@ void uavs3d_alf_one_lcu_one_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src
+ S5 = _mm256_cvtepi16_epi32(_mm256_castsi256_si128(S51));
+ S6 = _mm256_cvtepi16_epi32(_mm256_castsi256_si128(S61));
+ S7 = _mm256_cvtepi16_epi32(_mm256_castsi256_si128(S71));
+- S8 = _mm256_cvtepi16_epi32(_mm256_castsi256_si128(S81));
++ //S8 = _mm256_cvtepi16_epi32(_mm256_castsi256_si128(S81));
+ S0 = _mm256_add_epi32(S0, S1);
+ S2 = _mm256_add_epi32(S2, S3);
+ S4 = _mm256_add_epi32(S4, S5);
+@@ -839,7 +834,7 @@ void uavs3d_alf_one_lcu_one_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src
+ S5 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S51, 1));
+ S6 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S61, 1));
+ S7 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S71, 1));
+- S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S81, 1));
++ //S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S81, 1));
+ S0 = _mm256_add_epi32(S0, S1);
+ S2 = _mm256_add_epi32(S2, S3);
+ S4 = _mm256_add_epi32(S4, S5);
+@@ -1055,7 +1050,6 @@ void uavs3d_alf_one_lcu_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src, in
+ int startPos = 0;
+ int endPos = lcu_height;
+ int xPosEnd = lcu_width << 1;
+- long long tmp[8];
+
+ src += (startPos*i_src);
+ dst += (startPos*i_dst);
+@@ -1066,22 +1060,14 @@ void uavs3d_alf_one_lcu_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src, in
+ T00 = _mm256_unpacklo_epi16(C8, C8);
+ T01 = _mm256_unpackhi_epi16(C8, C8);
+
+- tmp[0] = _mm256_extract_epi64(T00, 0); // win32 compile error if C0 = _mm256_set1_epi64x(_mm256_extract_epi64(T00, 0));
+- tmp[1] = _mm256_extract_epi64(T00, 1);
+- tmp[2] = _mm256_extract_epi64(T00, 2);
+- tmp[3] = _mm256_extract_epi64(T00, 3);
+- tmp[4] = _mm256_extract_epi64(T01, 0);
+- tmp[5] = _mm256_extract_epi64(T01, 1);
+- tmp[6] = _mm256_extract_epi64(T01, 2);
+- tmp[7] = _mm256_extract_epi64(T01, 3);
+- C0 = _mm256_set1_epi64x(tmp[0]);
+- C1 = _mm256_set1_epi64x(tmp[1]);
+- C2 = _mm256_set1_epi64x(tmp[2]);
+- C3 = _mm256_set1_epi64x(tmp[3]);
+- C4 = _mm256_set1_epi64x(tmp[4]);
+- C5 = _mm256_set1_epi64x(tmp[5]);
+- C6 = _mm256_set1_epi64x(tmp[6]);
+- C7 = _mm256_set1_epi64x(tmp[7]);
++ C0 = _mm256_permute4x64_epi64(T00, 0x00);
++ C1 = _mm256_permute4x64_epi64(T00, 0x55);
++ C2 = _mm256_permute4x64_epi64(T00, 0xaa);
++ C3 = _mm256_permute4x64_epi64(T00, 0xff);
++ C4 = _mm256_permute4x64_epi64(T01, 0x00);
++ C5 = _mm256_permute4x64_epi64(T01, 0x55);
++ C6 = _mm256_permute4x64_epi64(T01, 0xaa);
++ C7 = _mm256_permute4x64_epi64(T01, 0xff);
+ C8 = _mm256_set1_epi32((unsigned short)coef[16] + (((unsigned short)coef[17]) << 16));
+ C8 = _mm256_unpacklo_epi16(C8, C8);
+
+diff --git a/source/decore/avx2/avx2.c b/source/decore/avx2/avx2.c
+index a17dac5..d4b3ebf 100644
+--- a/source/decore/avx2/avx2.c
++++ b/source/decore/avx2/avx2.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -183,11 +178,13 @@ void uavs3d_funs_init_avx2()
+ uavs3d_funs_handle.ipcpy[4] = uavs3d_if_cpy_w64_avx2;
+ uavs3d_funs_handle.ipcpy[5] = uavs3d_if_cpy_w128_avx2;
+
++ uavs3d_funs_handle.ipflt[IPFILTER_H_4][1] = uavs3d_if_hor_chroma_w8_avx2;
+ uavs3d_funs_handle.ipflt[IPFILTER_H_4][2] = uavs3d_if_hor_chroma_w16_avx2;
+ uavs3d_funs_handle.ipflt[IPFILTER_H_4][3] = uavs3d_if_hor_chroma_w16x_avx2;
+ uavs3d_funs_handle.ipflt[IPFILTER_H_4][4] = uavs3d_if_hor_chroma_w16x_avx2;
+ uavs3d_funs_handle.ipflt[IPFILTER_H_4][5] = uavs3d_if_hor_chroma_w16x_avx2;
+
++ uavs3d_funs_handle.ipflt[IPFILTER_H_8][1] = uavs3d_if_hor_luma_w8_avx2;
+ uavs3d_funs_handle.ipflt[IPFILTER_H_8][2] = uavs3d_if_hor_luma_w16_avx2;
+ uavs3d_funs_handle.ipflt[IPFILTER_H_8][3] = uavs3d_if_hor_luma_w16x_avx2;
+ uavs3d_funs_handle.ipflt[IPFILTER_H_8][4] = uavs3d_if_hor_luma_w16x_avx2;
+@@ -198,6 +195,7 @@ void uavs3d_funs_init_avx2()
+ uavs3d_funs_handle.ipflt[IPFILTER_V_4][4] = uavs3d_if_ver_chroma_w32x_avx2;
+ uavs3d_funs_handle.ipflt[IPFILTER_V_4][5] = uavs3d_if_ver_chroma_w32x_avx2;
+
++ uavs3d_funs_handle.ipflt[IPFILTER_V_8][1] = uavs3d_if_ver_luma_w8_avx2;
+ uavs3d_funs_handle.ipflt[IPFILTER_V_8][2] = uavs3d_if_ver_luma_w16_avx2;
+ uavs3d_funs_handle.ipflt[IPFILTER_V_8][3] = uavs3d_if_ver_luma_w16x_avx2;
+ uavs3d_funs_handle.ipflt[IPFILTER_V_8][4] = uavs3d_if_ver_luma_w16x_avx2;
+@@ -209,6 +207,8 @@ void uavs3d_funs_init_avx2()
+ uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_4][4] = uavs3d_if_hor_ver_chroma_w16x_avx2;
+ uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_4][5] = uavs3d_if_hor_ver_chroma_w16x_avx2;
+
++ uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_8][0] = uavs3d_if_hor_ver_luma_w4_avx2;
++ uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_8][1] = uavs3d_if_hor_ver_luma_w8_avx2;
+ uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_8][2] = uavs3d_if_hor_ver_luma_w16x_avx2;
+ uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_8][3] = uavs3d_if_hor_ver_luma_w16x_avx2;
+ uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_8][4] = uavs3d_if_hor_ver_luma_w16x_avx2;
+diff --git a/source/decore/avx2/avx2.h b/source/decore/avx2/avx2.h
+index 43d0ad3..a29cfe8 100644
+--- a/source/decore/avx2/avx2.h
++++ b/source/decore/avx2/avx2.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/avx2/inter_pred_avx2.c b/source/decore/avx2/inter_pred_avx2.c
+index c7287d3..cbaa2fc 100644
+--- a/source/decore/avx2/inter_pred_avx2.c
++++ b/source/decore/avx2/inter_pred_avx2.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+-* Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++* Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+-* 3. All advertising materials mentioning features or use of this software
+-* must display the following acknowledgement:
+-* This product includes the software uAVS3d developed by
+-* Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+-* and Guangdong Bohua UHD Innovation Corporation.
+-* 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++* 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -33,7 +28,7 @@
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * For more information, contact us at rgwang@pkusz.edu.cn.
+-**************************************************************************************/
++**************************************************************************************/
+
+ #include "avx2.h"
+
+@@ -134,9 +129,11 @@ void uavs3d_if_hor_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst
+
+ __m256i mCoefy1_hor = _mm256_set1_epi16(*(s16*)coeff);
+ __m256i mCoefy2_hor = _mm256_set1_epi16(*(s16*)(coeff + 2));
+- __m256i mSwitch = _mm256_setr_epi8(0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9);
++ __m256i mSwitch0 = _mm256_setr_epi8(0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9);
++ __m256i mSwitch1 = _mm256_setr_epi8(0+4, 2+4, 1+4, 3+4, 2+4, 4+4, 3+4, 5+4, 4+4, 6+4, 5+4, 7+4, 6+4, 8+4, 7+4, 9+4,
++ 0+4, 2+4, 1+4, 3+4, 2+4, 4+4, 3+4, 5+4, 4+4, 6+4, 5+4, 7+4, 6+4, 8+4, 7+4, 9+4);
+ __m256i mAddOffset = _mm256_set1_epi16(offset);
+- __m256i T0, T1, S0, S1, R0, R1, sum;
++ __m256i T0, T1, S0, R0, R1, sum;
+ __m128i s0, s1;
+
+ src -= 2;
+@@ -144,27 +141,27 @@ void uavs3d_if_hor_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst
+ while (height > 0) {
+ s0 = _mm_loadu_si128((__m128i*)(src));
+ s1 = _mm_loadu_si128((__m128i*)(src + i_src));
++ src += i_src << 1;
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+
+ S0 = _mm256_set_m128i(s1, s0);
+- S1 = _mm256_srli_si256(S0, 4);
+
+- R0 = _mm256_shuffle_epi8(S0, mSwitch); // 4 rows s0 and s1
+- R1 = _mm256_shuffle_epi8(S1, mSwitch);
++ R0 = _mm256_shuffle_epi8(S0, mSwitch0); // 4 rows s0 and s1
++ R1 = _mm256_shuffle_epi8(S0, mSwitch1);
+
+ T0 = _mm256_maddubs_epi16(R0, mCoefy1_hor); // 4x4: s0*c0 + s1*c1
+ T1 = _mm256_maddubs_epi16(R1, mCoefy2_hor);
+ sum = _mm256_add_epi16(T0, T1);
+
+- sum = _mm256_add_epi16(sum, mAddOffset);
++ sum = _mm256_add_epi16(sum, mAddOffset);
+ sum = _mm256_srai_epi16(sum, shift);
+
+ s0 = _mm_packus_epi16(_mm256_castsi256_si128(sum), _mm256_extracti128_si256(sum, 1));
+- s1 = _mm_srli_si128(s0, 8);
+ _mm_storel_epi64((__m128i*)(dst), s0);
+- _mm_storel_epi64((__m128i*)(dst + i_dst), s1);
++ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(s0));
+
+ height -= 2;
+- src += i_src << 1;
+ dst += i_dst << 1;
+ }
+ }
+@@ -184,9 +181,11 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ src -= 2;
+
+ while (height) {
+- uavs3d_prefetch(src + i_src*2, _MM_HINT_NTA);
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
++ src += i_src << 1;
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+ S2 = _mm256_permute4x64_epi64(S0, 0x94);
+ S3 = _mm256_permute4x64_epi64(S1, 0x94);
+ R0 = _mm256_shuffle_epi8(S2, mSwitch1);
+@@ -200,6 +199,8 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ sum0 = _mm256_add_epi16(T0, T1);
+ sum1 = _mm256_add_epi16(T2, T3);
+
++ height -= 2;
++
+ sum0 = _mm256_add_epi16(sum0, mAddOffset);
+ sum1 = _mm256_add_epi16(sum1, mAddOffset);
+ sum0 = _mm256_srai_epi16(sum0, shift);
+@@ -207,8 +208,6 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ _mm_storeu_si128((__m128i*)(dst), _mm_packus_epi16(_mm256_castsi256_si128(sum0), _mm256_extracti128_si256(sum0, 1)));
+ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm_packus_epi16(_mm256_castsi256_si128(sum1), _mm256_extracti128_si256(sum1, 1)));
+
+- height -= 2;
+- src += i_src << 1;
+ dst += i_dst << 1;
+ }
+ }
+@@ -228,10 +227,10 @@ void uavs3d_if_hor_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ src -= 2;
+
+ while (height--) {
+- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+-
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S1 = _mm256_loadu_si256((__m256i*)(src + 16));
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
++
+ S2 = _mm256_permute4x64_epi64(S0, 0x94);
+ S3 = _mm256_permute4x64_epi64(S1, 0x94);
+ R0 = _mm256_shuffle_epi8(S2, mSwitch1);
+@@ -308,59 +307,52 @@ void uavs3d_if_hor_luma_w4_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ const int offset = 32;
+ const int shift = 6;
+ __m256i mAddOffset = _mm256_set1_epi16(offset);
+- __m256i mSwitch1 = _mm256_setr_epi8(0, 1, 1, 2, 2, 3, 3, 4, 8, 9, 9, 10, 10, 11, 11, 12, 0, 1, 1, 2, 2, 3, 3, 4, 8, 9, 9, 10, 10, 11, 11, 12);
+- __m256i mSwitch2 = _mm256_setr_epi8(2, 3, 3, 4, 4, 5, 5, 6, 10, 11, 11, 12, 12, 13, 13, 14, 2, 3, 3, 4, 4, 5, 5, 6, 10, 11, 11, 12, 12, 13, 13, 14);
+- __m256i T0, T1, T2, T3, S0, S1, S2, S3, sum;
++ __m256i mSwitch1 = _mm256_setr_epi8(0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 5, 6, 0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 5, 6);
++ __m256i mSwitch2 = _mm256_setr_epi8(4, 5, 6, 7, 5, 6, 7, 8, 6, 7, 8, 9, 7, 8, 9, 10, 4, 5, 6, 7, 5, 6, 7, 8, 6, 7, 8, 9, 7, 8, 9, 10);
++ __m256i T0, T1, T2, T3, S0, S1, sum;
+ __m256i r0, r1, r2, r3;
+ __m128i s0, s1, s2, s3;
+- __m256i mCoefy1_hor = _mm256_set1_epi16(*(s16*)coeff);
+- __m256i mCoefy2_hor = _mm256_set1_epi16(*(s16*)(coeff + 2));
+- __m256i mCoefy3_hor = _mm256_set1_epi16(*(s16*)(coeff + 4));
+- __m256i mCoefy4_hor = _mm256_set1_epi16(*(s16*)(coeff + 6));
++ __m256i mCoefy1_hor = _mm256_set1_epi32(*(s32*)coeff);
++ __m256i mCoefy2_hor = _mm256_set1_epi32(*(s32*)(coeff + 4));
+ src -= 3;
+
+ while (height > 0) {
+- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+ s0 = _mm_loadu_si128((__m128i*)(src));
+ s1 = _mm_loadu_si128((__m128i*)(src + i_src));
+ s2 = _mm_loadu_si128((__m128i*)(src + i_src * 2));
+ s3 = _mm_loadu_si128((__m128i*)(src + i_src * 3));
++ src += i_src << 2;
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+
+ S0 = _mm256_set_m128i(s2, s0);
+ S1 = _mm256_set_m128i(s3, s1);
+
+- S2 = _mm256_srli_si256(S0, 4);
+- S3 = _mm256_srli_si256(S1, 4);
+-
+- T0 = _mm256_unpacklo_epi64(S0, S1);
+- T1 = _mm256_unpacklo_epi64(S2, S3);
+-
+- r0 = _mm256_shuffle_epi8(T0, mSwitch1);
+- r1 = _mm256_shuffle_epi8(T0, mSwitch2);
+- r2 = _mm256_shuffle_epi8(T1, mSwitch1);
+- r3 = _mm256_shuffle_epi8(T1, mSwitch2);
++ r0 = _mm256_shuffle_epi8(S0, mSwitch1);
++ r1 = _mm256_shuffle_epi8(S0, mSwitch2);
++ r2 = _mm256_shuffle_epi8(S1, mSwitch1);
++ r3 = _mm256_shuffle_epi8(S1, mSwitch2);
+
+ T0 = _mm256_maddubs_epi16(r0, mCoefy1_hor);
+ T1 = _mm256_maddubs_epi16(r1, mCoefy2_hor);
+- T2 = _mm256_maddubs_epi16(r2, mCoefy3_hor);
+- T3 = _mm256_maddubs_epi16(r3, mCoefy4_hor);
++ T2 = _mm256_maddubs_epi16(r2, mCoefy1_hor);
++ T3 = _mm256_maddubs_epi16(r3, mCoefy2_hor);
+
+ T0 = _mm256_add_epi16(T0, T1);
+ T1 = _mm256_add_epi16(T2, T3);
+- sum = _mm256_add_epi16(T0, T1);
++ sum = _mm256_hadd_epi16(T0, T1);
+
+ sum = _mm256_add_epi16(sum, mAddOffset);
+ sum = _mm256_srai_epi16(sum, shift);
+
+ s0 = _mm_packus_epi16(_mm256_castsi256_si128(sum), _mm256_extracti128_si256(sum, 1));
+
++ height -= 4;
+ M32(dst) = _mm_extract_epi32(s0, 0);
+ M32(dst + i_dst) = _mm_extract_epi32(s0, 1);
+ M32(dst + i_dst * 2) = _mm_extract_epi32(s0, 2);
+ M32(dst + i_dst * 3) = _mm_extract_epi32(s0, 3);
+
+- height -= 4;
+- src += i_src << 2;
+ dst += i_dst << 2;
+ }
+ }
+@@ -385,9 +377,11 @@ void uavs3d_if_hor_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ src -= 3;
+
+ while (height) {
+- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+ s0 = _mm_loadu_si128((__m128i*)(src));
+ s1 = _mm_loadu_si128((__m128i*)(src + i_src));
++ src += i_src << 1;
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+ S = _mm256_set_m128i(s1, s0);
+
+ r0 = _mm256_shuffle_epi8(S, mSwitch1);
+@@ -407,13 +401,11 @@ void uavs3d_if_hor_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ sum = _mm256_add_epi16(sum, mAddOffset);
+ sum = _mm256_srai_epi16(sum, shift);
+
++ height -= 2;
+ s0 = _mm_packus_epi16(_mm256_castsi256_si128(sum), _mm256_extracti128_si256(sum, 1));
+- s1 = _mm_srli_si128(s0, 8);
+ _mm_storel_epi64((__m128i*)(dst), s0);
+- _mm_storel_epi64((__m128i*)(dst + i_dst), s1);
++ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(s0));
+
+- height -= 2;
+- src += i_src << 1;
+ dst += i_dst << 1;
+ }
+ }
+@@ -437,11 +429,13 @@ void uavs3d_if_hor_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ src -= 3;
+
+ while (height) {
+- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
+ S2 = _mm256_permute4x64_epi64(S0, 0x94);
+ S3 = _mm256_permute4x64_epi64(S1, 0x94);
++ src += i_src << 1;
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+
+ r0 = _mm256_shuffle_epi8(S2, mSwitch1);
+ r1 = _mm256_shuffle_epi8(S2, mSwitch2);
+@@ -475,11 +469,10 @@ void uavs3d_if_hor_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ sum0 = _mm256_srai_epi16(sum0, shift);
+ sum1 = _mm256_srai_epi16(sum1, shift);
+
++ height -= 2;
+ _mm_storeu_si128((__m128i*)(dst), _mm_packus_epi16(_mm256_castsi256_si128(sum0), _mm256_extracti128_si256(sum0, 1)));
+ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm_packus_epi16(_mm256_castsi256_si128(sum1), _mm256_extracti128_si256(sum1, 1)));
+
+- height -= 2;
+- src += i_src << 1;
+ dst += i_dst << 1;
+ }
+ }
+@@ -503,13 +496,14 @@ void uavs3d_if_hor_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ src -= 3;
+
+ while (height--) {
+- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+-
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S1 = _mm256_loadu_si256((__m256i*)(src + 16));
+ S2 = _mm256_permute4x64_epi64(S0, 0x94);
+ S3 = _mm256_permute4x64_epi64(S1, 0x94);
+
++ src += i_src;
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++
+ r0 = _mm256_shuffle_epi8(S2, mSwitch1);
+ r1 = _mm256_shuffle_epi8(S2, mSwitch2);
+ r2 = _mm256_shuffle_epi8(S2, mSwitch3);
+@@ -545,7 +539,6 @@ void uavs3d_if_hor_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ _mm_storeu_si128((__m128i*)(dst), _mm_packus_epi16(_mm256_castsi256_si128(sum0), _mm256_extracti128_si256(sum0, 1)));
+ _mm_storeu_si128((__m128i*)(dst + 16), _mm_packus_epi16(_mm256_castsi256_si128(sum1), _mm256_extracti128_si256(sum1, 1)));
+
+- src += i_src;
+ dst += i_dst;
+ }
+ }
+@@ -635,15 +628,17 @@ void uavs3d_if_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst
+ src -= i_src;
+
+ while (height) {
+- uavs3d_prefetch(src + 5 * i_src, _MM_HINT_NTA);
+- uavs3d_prefetch(src + 6 * i_src, _MM_HINT_NTA);
+- height -= 2;
+ s0 = _mm_loadl_epi64((__m128i*)(src));
+ s1 = _mm_loadl_epi64((__m128i*)(src + i_src));
+ s2 = _mm_loadl_epi64((__m128i*)(src + i_src2));
+ s3 = _mm_loadl_epi64((__m128i*)(src + i_src3));
+ s4 = _mm_loadl_epi64((__m128i*)(src + i_src4));
+
++ src += 2 * i_src;
++ height -= 2;
++ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src4, _MM_HINT_NTA);
++
+ S0 = _mm256_set_m128i(s1, s0);
+ S1 = _mm256_set_m128i(s2, s1);
+ S2 = _mm256_set_m128i(s3, s2);
+@@ -660,12 +655,10 @@ void uavs3d_if_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst
+ mVal = _mm256_add_epi16(mVal, mAddOffset);
+ mVal = _mm256_srai_epi16(mVal, shift);
+ s0 = _mm_packus_epi16(_mm256_castsi256_si128(mVal), _mm256_extracti128_si256(mVal, 1));
+- s1 = _mm_srli_si128(s0, 8);
+
+ _mm_storel_epi64((__m128i*)(dst), s0);
+- _mm_storel_epi64((__m128i*)(dst + i_dst), s1);
++ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(s0));
+
+- src += 2 * i_src;
+ dst += 2 * i_dst;
+ }
+ }
+@@ -687,15 +680,17 @@ void uavs3d_if_ver_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ src -= i_src;
+
+ while (height) {
+- uavs3d_prefetch(src + 5 * i_src, _MM_HINT_NTA);
+- uavs3d_prefetch(src + 6 * i_src, _MM_HINT_NTA);
+- height -= 2;
+ s0 = _mm_loadu_si128((__m128i*)(src));
+ s1 = _mm_loadu_si128((__m128i*)(src + i_src));
+ s2 = _mm_loadu_si128((__m128i*)(src + i_src2));
+ s3 = _mm_loadu_si128((__m128i*)(src + i_src3));
+ s4 = _mm_loadu_si128((__m128i*)(src + i_src4));
+
++ src += 2 * i_src;
++ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src4, _MM_HINT_NTA);
++ height -= 2;
++
+ S0 = _mm256_set_m128i(s1, s0);
+ S1 = _mm256_set_m128i(s2, s1);
+ S2 = _mm256_set_m128i(s3, s2);
+@@ -723,7 +718,6 @@ void uavs3d_if_ver_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ _mm_storeu_si128((__m128i*)dst, _mm256_castsi256_si128(mVal0));
+ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_extracti128_si256(mVal0, 1));
+
+- src += 2 * i_src;
+ dst += 2 * i_dst;
+ }
+ }
+@@ -744,15 +738,17 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ src -= i_src;
+
+ while (height) {
+- uavs3d_prefetch(src + 5 * i_src, _MM_HINT_NTA);
+- uavs3d_prefetch(src + 6 * i_src, _MM_HINT_NTA);
+- height -= 2;
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
+ S2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
+ S3 = _mm256_loadu_si256((__m256i*)(src + i_src3));
+ S4 = _mm256_loadu_si256((__m256i*)(src + i_src4));
+
++ src += 2 * i_src;
++ height -= 2;
++ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src4, _MM_HINT_NTA);
++
+ T0 = _mm256_unpacklo_epi8(S0, S1);
+ T1 = _mm256_unpackhi_epi8(S0, S1);
+ T2 = _mm256_unpacklo_epi8(S2, S3);
+@@ -790,7 +786,6 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ _mm256_storeu_si256((__m256i*)dst, mVal0);
+ _mm256_storeu_si256((__m256i*)(dst + i_dst), mVal2);
+
+- src += 2 * i_src;
+ dst += 2 * i_dst;
+
+ }
+@@ -811,7 +806,6 @@ void uavs3d_if_ver_chroma_w64_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ src -= i_src;
+
+ while (height--){
+- uavs3d_prefetch(src + 4 * i_src, _MM_HINT_NTA);
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S4 = _mm256_loadu_si256((__m256i*)(src + 32));
+ S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
+@@ -821,6 +815,7 @@ void uavs3d_if_ver_chroma_w64_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ S3 = _mm256_loadu_si256((__m256i*)(src + i_src3));
+ S7 = _mm256_loadu_si256((__m256i*)(src + i_src3 + 32));
+
++ src += i_src;
+ T0 = _mm256_unpacklo_epi8(S0, S1);
+ T1 = _mm256_unpacklo_epi8(S2, S3);
+ T2 = _mm256_unpackhi_epi8(S0, S1);
+@@ -830,6 +825,8 @@ void uavs3d_if_ver_chroma_w64_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ T6 = _mm256_unpackhi_epi8(S4, S5);
+ T7 = _mm256_unpackhi_epi8(S6, S7);
+
++ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
++
+ T0 = _mm256_maddubs_epi16(T0, coeff0);
+ T1 = _mm256_maddubs_epi16(T1, coeff1);
+ T2 = _mm256_maddubs_epi16(T2, coeff0);
+@@ -858,7 +855,6 @@ void uavs3d_if_ver_chroma_w64_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ _mm256_storeu_si256((__m256i*)(dst), mVal0);
+ _mm256_storeu_si256((__m256i*)(dst + 32), mVal1);
+
+- src += i_src;
+ dst += i_dst;
+ }
+ }
+@@ -878,7 +874,6 @@ void uavs3d_if_ver_chroma_w128_avx2(const pel *src, int i_src, pel *dst, int i_d
+ src -= i_src;
+
+ while (height--) {
+- uavs3d_prefetch(src + 4 * i_src, _MM_HINT_NTA);
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S4 = _mm256_loadu_si256((__m256i*)(src + 32));
+ S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
+@@ -934,6 +929,9 @@ void uavs3d_if_ver_chroma_w128_avx2(const pel *src, int i_src, pel *dst, int i_d
+ S3 = _mm256_loadu_si256((__m256i*)(src + i_src3 + 64));
+ S7 = _mm256_loadu_si256((__m256i*)(src + i_src3 + 96));
+
++ src += i_src;
++ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
++
+ T0 = _mm256_unpacklo_epi8(S0, S1);
+ T1 = _mm256_unpacklo_epi8(S2, S3);
+ T2 = _mm256_unpackhi_epi8(S0, S1);
+@@ -971,7 +969,6 @@ void uavs3d_if_ver_chroma_w128_avx2(const pel *src, int i_src, pel *dst, int i_d
+ _mm256_storeu_si256((__m256i*)(dst + 64), mVal0);
+ _mm256_storeu_si256((__m256i*)(dst + 96), mVal1);
+
+- src += i_src;
+ dst += i_dst;
+ }
+ }
+@@ -1078,7 +1075,6 @@ void uavs3d_if_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ while (height) {
+ __m128i S0, S1, S2, S3, S4, S5, S6, S7, S8;
+
+- height -= 2;
+ S0 = _mm_loadl_epi64((__m128i*)(src));
+ S1 = _mm_loadl_epi64((__m128i*)(src + i_src));
+ S2 = _mm_loadl_epi64((__m128i*)(src + i_src2));
+@@ -1098,6 +1094,11 @@ void uavs3d_if_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ R6 = _mm256_set_m128i(S7, S6);
+ R7 = _mm256_set_m128i(S8, S7);
+
++ src += 2 * i_src;
++ height -= 2;
++ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src8, _MM_HINT_NTA);
++
+ T0 = _mm256_unpacklo_epi8(R0, R1);
+ T1 = _mm256_unpacklo_epi8(R2, R3);
+ T2 = _mm256_unpacklo_epi8(R4, R5);
+@@ -1115,11 +1116,9 @@ void uavs3d_if_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ mVal = _mm256_add_epi16(mVal, mAddOffset);
+ mVal = _mm256_srai_epi16(mVal, shift);
+ S0 = _mm_packus_epi16(_mm256_castsi256_si128(mVal), _mm256_extracti128_si256(mVal, 1));
+- S1 = _mm_srli_si128(S0, 8);
+
+ _mm_storel_epi64((__m128i*)(dst), S0);
+- _mm_storel_epi64((__m128i*)(dst + i_dst), S1);
+- src += 2 * i_src;
++ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(S0));
+ dst += 2 * i_dst;
+ }
+ }
+@@ -1147,10 +1146,6 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+
+ while(height) {
+ __m128i S0, S1, S2, S3, S4, S5, S6, S7, S8;
+- uavs3d_prefetch(src + 9 * i_src, _MM_HINT_NTA);
+- uavs3d_prefetch(src + 10 * i_src, _MM_HINT_NTA);
+-
+- height -= 2;
+ S0 = _mm_loadu_si128((__m128i*)(src));
+ S1 = _mm_loadu_si128((__m128i*)(src + i_src));
+ S2 = _mm_loadu_si128((__m128i*)(src + i_src2));
+@@ -1170,6 +1165,12 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ R6 = _mm256_set_m128i(S6, S7);
+ R7 = _mm256_set_m128i(S7, S8);
+
++ src += 2 * i_src;
++ height -= 2;
++
++ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src8, _MM_HINT_NTA);
++
+ T0 = _mm256_unpacklo_epi8(R0, R1);
+ T1 = _mm256_unpackhi_epi8(R0, R1);
+ T2 = _mm256_unpacklo_epi8(R2, R3);
+@@ -1203,7 +1204,6 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+
+ _mm_storeu_si128((__m128i*)dst, _mm256_extractf128_si256(mVal1, 1));
+ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_castsi256_si128(mVal1));
+- src += 2 * i_src;
+ dst += 2 * i_dst;
+ }
+ }
+@@ -1230,7 +1230,6 @@ void uavs3d_if_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ src -= 3 * i_src;
+ while (height--) {
+ __m256i S0, S1, S2, S3, S4, S5, S6, S7;
+- uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
+ S2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
+@@ -1240,6 +1239,7 @@ void uavs3d_if_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ S6 = _mm256_loadu_si256((__m256i*)(src + i_src6));
+ S7 = _mm256_loadu_si256((__m256i*)(src + i_src7));
+
++ src += i_src;
+ T0 = _mm256_unpacklo_epi8(S0, S1);
+ T1 = _mm256_unpacklo_epi8(S2, S3);
+ T2 = _mm256_unpacklo_epi8(S4, S5);
+@@ -1249,6 +1249,8 @@ void uavs3d_if_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ T6 = _mm256_unpackhi_epi8(S4, S5);
+ T7 = _mm256_unpackhi_epi8(S6, S7);
+
++ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
++
+ T0 = _mm256_maddubs_epi16(T0, coeff0);
+ T1 = _mm256_maddubs_epi16(T1, coeff1);
+ T2 = _mm256_maddubs_epi16(T2, coeff2);
+@@ -1273,7 +1275,6 @@ void uavs3d_if_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+
+ _mm256_storeu_si256((__m256i*)(dst), mVal1);
+
+- src += i_src;
+ dst += i_dst;
+ }
+ }
+@@ -1295,12 +1296,11 @@ void uavs3d_if_ver_luma_w64_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ __m256i coeff3 = _mm256_set1_epi16(*(s16*)(coeff + 6));
+ __m256i T0, T1, T2, T3, T4, T5, T6, T7, mVal1, mVal2;
+
+- src -= 3 * i_src;
++ src -= i_src3;
+
+ while (height--) {
+ const pel *p = src + 32;
+ __m256i S0, S1, S2, S3, S4, S5, S6, S7;
+- uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
+ S2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
+@@ -1352,6 +1352,7 @@ void uavs3d_if_ver_luma_w64_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ S6 = _mm256_loadu_si256((__m256i*)(p + i_src6));
+ S7 = _mm256_loadu_si256((__m256i*)(p + i_src7));
+
++ src += i_src;
+ T0 = _mm256_unpacklo_epi8(S0, S1);
+ T1 = _mm256_unpacklo_epi8(S2, S3);
+ T2 = _mm256_unpacklo_epi8(S4, S5);
+@@ -1361,6 +1362,8 @@ void uavs3d_if_ver_luma_w64_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ T6 = _mm256_unpackhi_epi8(S4, S5);
+ T7 = _mm256_unpackhi_epi8(S6, S7);
+
++ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
++
+ T0 = _mm256_maddubs_epi16(T0, coeff0);
+ T1 = _mm256_maddubs_epi16(T1, coeff1);
+ T2 = _mm256_maddubs_epi16(T2, coeff2);
+@@ -1385,7 +1388,6 @@ void uavs3d_if_ver_luma_w64_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+
+ _mm256_storeu_si256((__m256i*)(dst + 32), mVal1);
+
+- src += i_src;
+ dst += i_dst;
+ }
+ }
+@@ -1412,7 +1414,6 @@ void uavs3d_if_ver_luma_w128_avx2(const pel *src, int i_src, pel *dst, int i_dst
+ while (height--) {
+ const pel *p = src + 32;
+ __m256i S0, S1, S2, S3, S4, S5, S6, S7;
+- uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
+ S2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
+@@ -1552,6 +1553,8 @@ void uavs3d_if_ver_luma_w128_avx2(const pel *src, int i_src, pel *dst, int i_dst
+ S6 = _mm256_loadu_si256((__m256i*)(p + i_src6));
+ S7 = _mm256_loadu_si256((__m256i*)(p + i_src7));
+
++ src += i_src;
++ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
+ T0 = _mm256_unpacklo_epi8(S0, S1);
+ T1 = _mm256_unpacklo_epi8(S2, S3);
+ T2 = _mm256_unpacklo_epi8(S4, S5);
+@@ -1585,7 +1588,6 @@ void uavs3d_if_ver_luma_w128_avx2(const pel *src, int i_src, pel *dst, int i_dst
+
+ _mm256_storeu_si256((__m256i*)(dst + 96), mVal1);
+
+- src += i_src;
+ dst += i_dst;
+ }
+ }
+@@ -1668,6 +1670,8 @@ void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i
+ S2 = _mm256_permute2x128_si256(mVal[1], mVal[2], 0x21);
+ S3 = mVal[2];
+
++ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
++
+ T0 = _mm256_unpacklo_epi16(S0, S1);
+ T1 = _mm256_unpacklo_epi16(S2, S3);
+ T2 = _mm256_unpackhi_epi16(S0, S1);
+@@ -1709,17 +1713,15 @@ void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i
+ T0 = _mm256_srai_epi32(T0, shift);
+ T2 = _mm256_srai_epi32(T2, shift);
+
+- s0 = _mm_packus_epi16(_mm256_castsi256_si128(R0), _mm256_extracti128_si256(R0, 1));
+- s1 = _mm_srli_si128(s0, 8);
++ s2 = _mm_packus_epi16(_mm256_castsi256_si128(R0), _mm256_extracti128_si256(R0, 1));
+
+ T0 = _mm256_packs_epi32(T0, T2);
+- s2 = _mm_packus_epi16(_mm256_castsi256_si128(T0), _mm256_extracti128_si256(T0, 1));
+- s3 = _mm_srli_si128(s2, 8);
++ s3 = _mm_packus_epi16(_mm256_castsi256_si128(T0), _mm256_extracti128_si256(T0, 1));
+
+- _mm_storel_epi64((__m128i*)(dst), s0);
+- _mm_storel_epi64((__m128i*)(dst + i_dst), s1);
+- _mm_storel_epi64((__m128i*)(dst + i_dst*2), s2);
+- _mm_storel_epi64((__m128i*)(dst + i_dst*3), s3);
++ _mm_storel_epi64((__m128i*)(dst), s2);
++ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(s2));
++ _mm_storel_epi64((__m128i*)(dst + i_dst*2), s3);
++ _mm_storeh_pi((__m64*)(dst + i_dst*3), _mm_castsi128_ps(s3));
+
+ dst += i_dst << 2;
+ height -= 4;
+@@ -1756,17 +1758,17 @@ void uavs3d_if_hor_ver_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int
+ row = height + 3;
+
+ while (row--) {
+- uavs3d_prefetch(src + i_src*2, _MM_HINT_NTA);
+ S0 = _mm256_loadu_si256((__m256i*)(src));
++ src += i_src;
+ S1 = _mm256_permute4x64_epi64(S0, 0x94);
++ uavs3d_prefetch(src, _MM_HINT_NTA);
+ R0 = _mm256_shuffle_epi8(S1, mSwitch1);
+ R1 = _mm256_shuffle_epi8(S1, mSwitch2);
+ T0 = _mm256_maddubs_epi16(R0, mCoefy1_hor);
+ T1 = _mm256_maddubs_epi16(R1, mCoefy2_hor);
+ sum = _mm256_add_epi16(T0, T1);
+
+- _mm256_storeu_si256((__m256i*)(tmp), sum);
+- src += i_src;
++ _mm256_store_si256((__m256i*)(tmp), sum);
+ tmp += i_tmp;
+ }
+
+@@ -1878,8 +1880,8 @@ void uavs3d_if_hor_ver_chroma_w32x_avx2(const pel *src, int i_src, pel *dst, int
+ sum0 = _mm256_add_epi16(T0, T1);
+ sum1 = _mm256_add_epi16(T2, T3);
+
+- _mm256_storeu_si256((__m256i*)(tmp + col), sum0);
+- _mm256_storeu_si256((__m256i*)(tmp + col + 16), sum1);
++ _mm256_store_si256((__m256i*)(tmp + col), sum0);
++ _mm256_store_si256((__m256i*)(tmp + col + 16), sum1);
+ }
+ src += i_src;
+ tmp += i_tmp;
+@@ -2055,8 +2057,8 @@ void uavs3d_if_hor_ver_luma_w4_avx2(const pel *src, int i_src, pel *dst, int i_d
+
+ s0 = _mm_loadu_si128((__m128i*)(src));
+ s1 = _mm_loadu_si128((__m128i*)(src + i_src));
+- s2 = _mm_loadu_si128((__m128i*)(src + i_src * 2));
+- s3 = _mm_loadu_si128((__m128i*)(src + i_src * 3));
++ s2 = _mm_loadu_si128((__m128i*)(src + i_src2));
++ s3 = _mm_loadu_si128((__m128i*)(src + i_src3));
+
+ S0 = _mm256_set_m128i(s2, s0);
+ S1 = _mm256_set_m128i(s3, s1);
+@@ -2090,8 +2092,8 @@ void uavs3d_if_hor_ver_luma_w4_avx2(const pel *src, int i_src, pel *dst, int i_d
+ // hor
+ s0 = _mm_loadu_si128((__m128i*)(src));
+ s1 = _mm_loadu_si128((__m128i*)(src + i_src));
+- s2 = _mm_loadu_si128((__m128i*)(src + i_src * 2));
+- s3 = _mm_loadu_si128((__m128i*)(src + i_src * 3));
++ s2 = _mm_loadu_si128((__m128i*)(src + i_src2));
++ s3 = _mm_loadu_si128((__m128i*)(src + i_src3));
+
+ S0 = _mm256_set_m128i(s2, s0);
+ S1 = _mm256_set_m128i(s3, s1);
+@@ -2173,19 +2175,7 @@ void uavs3d_if_hor_ver_luma_w4_avx2(const pel *src, int i_src, pel *dst, int i_d
+
+ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
+ {
+- const int i_tmp = 8;
+- const int i_tmp2 = 16;
+- const int i_tmp3 = 24;
+- const int i_tmp4 = 32;
+- const int i_tmp5 = 40;
+- const int i_tmp6 = 48;
+- const int i_tmp7 = 56;;
+- const int i_tmp8 = 64;
+- const int i_tmp9 = 72;;
+- const int i_tmp10 = 80;
+ const int i_src2 = i_src << 1;
+- int row;
+- int shift = 12;
+
+ __m256i T0, T1, T2, T3, T4, T5, T6, T7, T8, T9;
+ __m256i r0, r1, r2, r3, r4, r5, r6, r7, r8, r9;
+@@ -2201,12 +2191,16 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
+
+ //HOR
+ {
++ int row;
+ src = src - 3 * i_src - 3;
+
+ // first row
+ {
+ __m128i mSrc0 = _mm_loadu_si128((__m128i*)(src));
+ T0 = _mm256_set_m128i(mSrc0, mSrc0);
++ src += i_src;
++
++ uavs3d_prefetch(src, _MM_HINT_NTA);
+
+ r0 = _mm256_shuffle_epi8(T0, mSwitch1);
+ r1 = _mm256_shuffle_epi8(T0, mSwitch2);
+@@ -2224,13 +2218,16 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
+
+ mVal[0] = _mm256_permute4x64_epi64(mVal[0], 0x44);
+
+- src += i_src;
+ }
+
+ for (row = 1; row < 4; row++) {
+- __m128i mSrc0 = _mm_loadu_si128((__m128i*)(src));
++ __m128i mSrc0 = _mm_loadu_si128((__m128i*)(src));
+ __m128i mSrc1 = _mm_loadu_si128((__m128i*)(src + i_src));
+ T0 = _mm256_set_m128i(mSrc1, mSrc0);
++ src += i_src2;
++
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+
+ r0 = _mm256_shuffle_epi8(T0, mSwitch1);
+ r1 = _mm256_shuffle_epi8(T0, mSwitch2);
+@@ -2245,8 +2242,6 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
+ T0 = _mm256_add_epi16(T0, T1);
+ T1 = _mm256_add_epi16(T2, T3);
+ mVal[row] = _mm256_add_epi16(T0, T1);
+-
+- src += i_src2;
+ }
+ }
+
+@@ -2260,35 +2255,44 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
+ __m256i mCoefy2 = _mm256_cvtepi8_epi16(mCoefy22);
+ __m256i mCoefy3 = _mm256_cvtepi8_epi16(mCoefy33);
+ __m256i mCoefy4 = _mm256_cvtepi8_epi16(mCoefy44);
++ const int shift = 12;
+
+ while (height > 0) {
+ __m128i s0, s1;
+ //hor
+- s0 = _mm_loadu_si128((__m128i*)(src));
++ s0 = _mm_loadu_si128((__m128i*)(src));
+ s1 = _mm_loadu_si128((__m128i*)(src + i_src));
+ T0 = _mm256_set_m128i(s1, s0);
+
++ src += i_src2;
++
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
++
+ r0 = _mm256_shuffle_epi8(T0, mSwitch1);
+ r1 = _mm256_shuffle_epi8(T0, mSwitch2);
+ r2 = _mm256_shuffle_epi8(T0, mSwitch3);
+ r3 = _mm256_shuffle_epi8(T0, mSwitch4);
+
+- src += i_src2;
+-
+ T0 = _mm256_maddubs_epi16(r0, mCoefy1_hor);
+ T1 = _mm256_maddubs_epi16(r1, mCoefy2_hor);
+ T2 = _mm256_maddubs_epi16(r2, mCoefy3_hor);
+ T3 = _mm256_maddubs_epi16(r3, mCoefy4_hor);
+
+- s0 = _mm_loadu_si128((__m128i*)(src));
++ s0 = _mm_loadu_si128((__m128i*)(src));
+ s1 = _mm_loadu_si128((__m128i*)(src + i_src));
+
+ T0 = _mm256_add_epi16(T0, T1);
+ T1 = _mm256_add_epi16(T2, T3);
+ mVal[4] = _mm256_add_epi16(T0, T1);
+
++ src += i_src2;
++
+ T0 = _mm256_set_m128i(s1, s0);
+
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
++
+ r0 = _mm256_shuffle_epi8(T0, mSwitch1);
+ r1 = _mm256_shuffle_epi8(T0, mSwitch2);
+ r2 = _mm256_shuffle_epi8(T0, mSwitch3);
+@@ -2303,8 +2307,6 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
+ T1 = _mm256_add_epi16(T2, T3);
+ mVal[5] = _mm256_add_epi16(T0, T1);
+
+- src += i_src2;
+-
+ T0 = _mm256_permute2x128_si256(mVal[0], mVal[1], 0x21);
+ T1 = mVal[1];
+ T2 = _mm256_permute2x128_si256(mVal[1], mVal[2], 0x21);
+@@ -2352,10 +2354,9 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
+
+ T0 = _mm256_packs_epi32(T0, T4);
+ s0 = _mm_packus_epi16(_mm256_castsi256_si128(T0), _mm256_extracti128_si256(T0, 1));
+- s1 = _mm_srli_si128(s0, 8);
+
+ _mm_storel_epi64((__m128i*)(dst), s0);
+- _mm_storel_epi64((__m128i*)(dst + i_dst), s1);
++ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(s0));
+
+ r4 = _mm256_unpacklo_epi16(T8, T9);
+ r9 = _mm256_unpackhi_epi16(T8, T9);
+@@ -2382,13 +2383,12 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
+
+ T0 = _mm256_packs_epi32(T0, T4);
+ s0 = _mm_packus_epi16(_mm256_castsi256_si128(T0), _mm256_extracti128_si256(T0, 1));
+- s1 = _mm_srli_si128(s0, 8);
+
++ height -= 4;
+ _mm_storel_epi64((__m128i*)(dst + i_dst * 2), s0);
+- _mm_storel_epi64((__m128i*)(dst + i_dst * 3), s1);
++ _mm_storeh_pi((__m64*)(dst + i_dst * 3), _mm_castsi128_ps(s0));
+
+ dst += i_dst << 2;
+- height -= 4;
+ }
+ }
+ }
+@@ -2397,7 +2397,6 @@ void uavs3d_if_hor_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_
+ {
+ ALIGNED_32(s16 tmp_res[(128 + 7) * 16]);
+ s16 *tmp = tmp_res;
+- int row;
+ __m256i mVal1, mVal2, mVal;
+ __m256i T0, T1, T2, T3, T4, T5, T6, T7, T8, T9;
+ __m256i S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10;
+@@ -2406,6 +2405,7 @@ void uavs3d_if_hor_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_
+
+ //HOR
+ {
++ int row;
+ __m256i mSwitch1 = _mm256_setr_epi8(0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8);
+ __m256i mSwitch2 = _mm256_setr_epi8(2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10);
+ __m256i mSwitch3 = _mm256_setr_epi8(4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12);
+@@ -2421,8 +2421,9 @@ void uavs3d_if_hor_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_
+ row = height + 7;
+ while (row--) {
+ S = _mm256_loadu_si256((__m256i*)(src));
+- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
++ src += i_src;
+ S0 = _mm256_permute4x64_epi64(S, 0x94);
++ uavs3d_prefetch(src, _MM_HINT_NTA);
+
+ r0 = _mm256_shuffle_epi8(S0, mSwitch1);
+ r1 = _mm256_shuffle_epi8(S0, mSwitch2);
+@@ -2438,9 +2439,8 @@ void uavs3d_if_hor_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_
+ T1 = _mm256_add_epi16(T2, T3);
+ sum = _mm256_add_epi16(T0, T1);
+
+- _mm256_storeu_si256((__m256i*)(tmp), sum);
++ _mm256_store_si256((__m256i*)(tmp), sum);
+
+- src += i_src;
+ tmp += 16;
+ }
+ }
+@@ -2603,9 +2603,9 @@ void uavs3d_if_hor_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_
+ mVal = _mm256_packs_epi32(mVal1, mVal2);
+ _mm_storeu_si128((__m128i*)(dst + 3 * i_dst), _mm_packus_epi16(_mm256_castsi256_si128(mVal), _mm256_extracti128_si256(mVal, 1)));
+
++ height -= 4;
+ tmp += 4 * i_tmp;
+ dst += 4 * i_dst;
+- height -= 4;
+ }
+ }
+ }
+@@ -2614,10 +2614,10 @@ void uavs3d_if_hor_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_
+ {
+ ALIGNED_32(s16 tmp_res[(128 + 7) * 32]);
+ s16 *tmp = tmp_res;
+- int row, col;
+ const int i_tmp = 32;
+ //HOR
+ {
++ int row;
+ __m256i mSwitch1 = _mm256_setr_epi8(0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8);
+ __m256i mSwitch2 = _mm256_setr_epi8(2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10);
+ __m256i mSwitch3 = _mm256_setr_epi8(4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12);
+@@ -2629,26 +2629,25 @@ void uavs3d_if_hor_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_
+ __m256i mCoefy4_hor = _mm256_set1_epi16(*(s16*)(coef_x + 6));
+
+ __m256i T0, T1, T2, T3, T4, T5, T6, T7;
+- __m256i S0, S1, S2, S3;
++ __m256i S0, S1;
+
+ src = src - 3 * i_src - 3;
+
+ row = height + 7;
+ while (row--) {
+- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S1 = _mm256_loadu_si256((__m256i*)(src + 8));
+- S2 = _mm256_insertf128_si256(S0, _mm256_castsi256_si128(S1), 0x1);
+- S3 = _mm256_insertf128_si256(S1, _mm256_extracti128_si256(S0, 1), 0x0);
+-
+- T0 = _mm256_shuffle_epi8(S2, mSwitch1);
+- T1 = _mm256_shuffle_epi8(S2, mSwitch2);
+- T2 = _mm256_shuffle_epi8(S2, mSwitch3);
+- T3 = _mm256_shuffle_epi8(S2, mSwitch4);
+- T4 = _mm256_shuffle_epi8(S3, mSwitch1);
+- T5 = _mm256_shuffle_epi8(S3, mSwitch2);
+- T6 = _mm256_shuffle_epi8(S3, mSwitch3);
+- T7 = _mm256_shuffle_epi8(S3, mSwitch4);
++ src += i_src;
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++
++ T0 = _mm256_shuffle_epi8(S0, mSwitch1);
++ T1 = _mm256_shuffle_epi8(S0, mSwitch2);
++ T2 = _mm256_shuffle_epi8(S0, mSwitch3);
++ T3 = _mm256_shuffle_epi8(S0, mSwitch4);
++ T4 = _mm256_shuffle_epi8(S1, mSwitch1);
++ T5 = _mm256_shuffle_epi8(S1, mSwitch2);
++ T6 = _mm256_shuffle_epi8(S1, mSwitch3);
++ T7 = _mm256_shuffle_epi8(S1, mSwitch4);
+
+ T0 = _mm256_maddubs_epi16(T0, mCoefy1_hor);
+ T1 = _mm256_maddubs_epi16(T1, mCoefy2_hor);
+@@ -2666,10 +2665,11 @@ void uavs3d_if_hor_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_
+ T0 = _mm256_add_epi16(T0, T2);
+ T4 = _mm256_add_epi16(T4, T6);
+
+- _mm256_storeu_si256((__m256i*)(tmp), T0);
+- _mm256_storeu_si256((__m256i*)(tmp + 16), T4);
++ T1 = _mm256_permute2x128_si256(T0, T4, 0x20);
++ T3 = _mm256_permute2x128_si256(T0, T4, 0x31);
++ _mm256_store_si256((__m256i*)(tmp), T1);
++ _mm256_store_si256((__m256i*)(tmp + 16), T3);
+
+- src += i_src;
+ tmp += i_tmp;
+ }
+ }
+@@ -2685,8 +2685,8 @@ void uavs3d_if_hor_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_
+ const int i_tmp8 = 32 * 8;
+ const int i_tmp9 = 32 * 9;
+ const int i_tmp10 = 32 * 10;
+-
+- int shift = 12;
++ int col;
++ const int shift = 12;
+ __m256i mAddOffset = _mm256_set1_epi32(1 << 11);
+ __m128i mCoefy11 = _mm_set1_epi16(*(s16*)coef_y);
+ __m128i mCoefy22 = _mm_set1_epi16(*(s16*)(coef_y + 2));
+@@ -2850,7 +2850,6 @@ void uavs3d_if_hor_ver_luma_w32x_avx2(const pel *src, int i_src, pel *dst, int i
+ {
+ ALIGNED_32(s16 tmp_res[(128 + 7) * 128]);
+ s16 *tmp = tmp_res;
+- int row, col;
+ const int i_tmp = width;
+ __m256i mVal1, mVal2, mVal;
+ __m256i T0, T1, T2, T3, T4, T5, T6, T7, T8, T9;
+@@ -2859,6 +2858,7 @@ void uavs3d_if_hor_ver_luma_w32x_avx2(const pel *src, int i_src, pel *dst, int i
+
+ //HOR
+ {
++ int row, col;
+ __m256i mSwitch1 = _mm256_setr_epi8(0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8);
+ __m256i mSwitch2 = _mm256_setr_epi8(2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10);
+ __m256i mSwitch3 = _mm256_setr_epi8(4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12);
+@@ -2878,17 +2878,15 @@ void uavs3d_if_hor_ver_luma_w32x_avx2(const pel *src, int i_src, pel *dst, int i
+ {
+ S0 = _mm256_loadu_si256((__m256i*)(src + col));
+ S1 = _mm256_loadu_si256((__m256i*)(src + col + 8));
+- S2 = _mm256_insertf128_si256(S0, _mm256_castsi256_si128(S1), 0x1);
+- S3 = _mm256_insertf128_si256(S1, _mm256_extracti128_si256(S0, 1), 0x0);
+-
+- T0 = _mm256_shuffle_epi8(S2, mSwitch1);
+- T1 = _mm256_shuffle_epi8(S2, mSwitch2);
+- T2 = _mm256_shuffle_epi8(S2, mSwitch3);
+- T3 = _mm256_shuffle_epi8(S2, mSwitch4);
+- T4 = _mm256_shuffle_epi8(S3, mSwitch1);
+- T5 = _mm256_shuffle_epi8(S3, mSwitch2);
+- T6 = _mm256_shuffle_epi8(S3, mSwitch3);
+- T7 = _mm256_shuffle_epi8(S3, mSwitch4);
++
++ T0 = _mm256_shuffle_epi8(S0, mSwitch1);
++ T1 = _mm256_shuffle_epi8(S0, mSwitch2);
++ T2 = _mm256_shuffle_epi8(S0, mSwitch3);
++ T3 = _mm256_shuffle_epi8(S0, mSwitch4);
++ T4 = _mm256_shuffle_epi8(S1, mSwitch1);
++ T5 = _mm256_shuffle_epi8(S1, mSwitch2);
++ T6 = _mm256_shuffle_epi8(S1, mSwitch3);
++ T7 = _mm256_shuffle_epi8(S1, mSwitch4);
+
+ T0 = _mm256_maddubs_epi16(T0, mCoefy1_hor);
+ T1 = _mm256_maddubs_epi16(T1, mCoefy2_hor);
+@@ -2906,8 +2904,10 @@ void uavs3d_if_hor_ver_luma_w32x_avx2(const pel *src, int i_src, pel *dst, int i
+ T0 = _mm256_add_epi16(T0, T2);
+ T4 = _mm256_add_epi16(T4, T6);
+
+- _mm256_storeu_si256((__m256i*)(tmp + col), T0);
+- _mm256_storeu_si256((__m256i*)(tmp + col + 16), T4);
++ T1 = _mm256_permute2x128_si256(T0, T4, 0x20);
++ T3 = _mm256_permute2x128_si256(T0, T4, 0x31);
++ _mm256_store_si256((__m256i*)(tmp + col), T1);
++ _mm256_store_si256((__m256i*)(tmp + col + 16), T3);
+ }
+ src += i_src;
+ tmp += i_tmp;
+@@ -2927,6 +2927,7 @@ void uavs3d_if_hor_ver_luma_w32x_avx2(const pel *src, int i_src, pel *dst, int i
+ const int i_tmp10 = i_tmp5 << 1;
+
+ int shift = 12;
++ int col;
+ __m256i mAddOffset = _mm256_set1_epi32(1 << 11);
+ __m128i mCoefy11 = _mm_set1_epi16(*(s16*)coef_y);
+ __m128i mCoefy22 = _mm_set1_epi16(*(s16*)(coef_y + 2));
+@@ -3186,45 +3187,121 @@ void uavs3d_if_cpy_w128_avx2(const pel *src, int i_src, pel *dst, int i_dst, int
+ }
+ }
+
++void uavs3d_if_hor_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
++{
++ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
++ __m256i T0, T1, T2, T3, T4, T5;
++ __m256i M0, M1, M2, M3, M4, M5, M6, M7;
++ __m256i S0, S1, S2;
++ __m256i offset = _mm256_set1_epi32(32);
++ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
++ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
++ __m256i mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[0]));
++ __m256i mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[1]));
++ __m256i mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[2]));
++ __m256i mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[3]));
++ __m128i s0, s1;
++
++ src -= 3;
++
++ while (height) {
++ T0 = _mm256_loadu_si256((__m256i*)(src));
++ s0 = _mm_loadu_si128((__m128i*)(src + 4));
++ T1 = _mm256_loadu_si256((__m256i*)(src + i_src));
++ s1 = _mm_loadu_si128((__m128i*)(src + i_src + 4));
++ height -= 2;
++ src += i_src << 1;
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
++
++ S0 = _mm256_permute2x128_si256(T0, T1, 0x20);
++ S2 = _mm256_permute2x128_si256(T0, T1, 0x31);
++ S1 = _mm256_set_m128i(s1, s0);
++
++ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
++ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
++ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
++ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
++ T4 = _mm256_shuffle_epi8(S2, mShuffle0);
++ T5 = _mm256_shuffle_epi8(S2, mShuffle1);
++
++ M0 = _mm256_madd_epi16(T0, mCoef0);
++ M1 = _mm256_madd_epi16(T1, mCoef1);
++ M2 = _mm256_madd_epi16(T2, mCoef2);
++ M3 = _mm256_madd_epi16(T3, mCoef3);
++ M4 = _mm256_madd_epi16(T2, mCoef0);
++ M5 = _mm256_madd_epi16(T3, mCoef1);
++ M6 = _mm256_madd_epi16(T4, mCoef2);
++ M7 = _mm256_madd_epi16(T5, mCoef3);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
++ M2 = _mm256_add_epi32(M4, M5);
++ M3 = _mm256_add_epi32(M6, M7);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
++
++ M2 = _mm256_add_epi32(M0, offset);
++ M3 = _mm256_add_epi32(M1, offset);
++ M2 = _mm256_srai_epi32(M2, 6);
++ M3 = _mm256_srai_epi32(M3, 6);
++ M2 = _mm256_packus_epi32(M2, M3);
++ M2 = _mm256_min_epu16(M2, max_pel);
++
++ _mm_storeu_si128((__m128i*)(dst), _mm256_castsi256_si128(M2));
++ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_extracti128_si256(M2, 1));
++
++ dst += i_dst << 1;
++ }
++}
++
+ void uavs3d_if_hor_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
+ {
+ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
+- __m256i T0, T1, T2, T3, T4, T5, T6, T7;
++ __m256i T0, T1, T2, T3, T4, T5;
+ __m256i M0, M1, M2, M3, M4, M5, M6, M7;
++ __m256i S0, S1, S2;
+ __m256i offset = _mm256_set1_epi32(32);
+- s32* coef = (s32*)coeff;
+- __m128i mCoef0 = _mm_setr_epi32(coef[0], coef[1], coef[0], coef[1]);
+- __m256i mCoef = _mm256_cvtepi8_epi16(mCoef0);
++ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
++ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
++ __m256i mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[0]));
++ __m256i mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[1]));
++ __m256i mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[2]));
++ __m256i mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[3]));
+
+ src -= 3;
+
+ while (height--) {
+- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+- T0 = _mm256_loadu_si256((__m256i*)(src + 0));
+- T1 = _mm256_loadu_si256((__m256i*)(src + 1));
+- T2 = _mm256_loadu_si256((__m256i*)(src + 2));
+- T3 = _mm256_loadu_si256((__m256i*)(src + 3));
+- T4 = _mm256_loadu_si256((__m256i*)(src + 4));
+- T5 = _mm256_loadu_si256((__m256i*)(src + 5));
+- T6 = _mm256_loadu_si256((__m256i*)(src + 6));
+- T7 = _mm256_loadu_si256((__m256i*)(src + 7));
+-
+- M0 = _mm256_madd_epi16(T0, mCoef);
+- M1 = _mm256_madd_epi16(T1, mCoef);
+- M2 = _mm256_madd_epi16(T2, mCoef);
+- M3 = _mm256_madd_epi16(T3, mCoef);
+- M4 = _mm256_madd_epi16(T4, mCoef);
+- M5 = _mm256_madd_epi16(T5, mCoef);
+- M6 = _mm256_madd_epi16(T6, mCoef);
+- M7 = _mm256_madd_epi16(T7, mCoef);
+-
+- M0 = _mm256_hadd_epi32(M0, M1);
+- M1 = _mm256_hadd_epi32(M2, M3);
+- M2 = _mm256_hadd_epi32(M4, M5);
+- M3 = _mm256_hadd_epi32(M6, M7);
+-
+- M0 = _mm256_hadd_epi32(M0, M1);
+- M1 = _mm256_hadd_epi32(M2, M3);
++ S0 = _mm256_lddqu_si256((__m256i*)(src));
++ S1 = _mm256_loadu_si256((__m256i*)(src + 4));
++ S2 = _mm256_loadu_si256((__m256i*)(src + 8));
++
++ src += i_src;
++ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
++ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
++ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
++ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
++ T4 = _mm256_shuffle_epi8(S2, mShuffle0);
++ T5 = _mm256_shuffle_epi8(S2, mShuffle1);
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++
++ M0 = _mm256_madd_epi16(T0, mCoef0);
++ M1 = _mm256_madd_epi16(T1, mCoef1);
++ M2 = _mm256_madd_epi16(T2, mCoef2);
++ M3 = _mm256_madd_epi16(T3, mCoef3);
++ M4 = _mm256_madd_epi16(T2, mCoef0);
++ M5 = _mm256_madd_epi16(T3, mCoef1);
++ M6 = _mm256_madd_epi16(T4, mCoef2);
++ M7 = _mm256_madd_epi16(T5, mCoef3);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
++ M2 = _mm256_add_epi32(M4, M5);
++ M3 = _mm256_add_epi32(M6, M7);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
+
+ M2 = _mm256_add_epi32(M0, offset);
+ M3 = _mm256_add_epi32(M1, offset);
+@@ -3235,7 +3312,6 @@ void uavs3d_if_hor_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+
+ _mm256_storeu_si256((__m256i*)(dst), M2);
+
+- src += i_src;
+ dst += i_dst;
+ }
+ }
+@@ -3244,12 +3320,16 @@ void uavs3d_if_hor_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_dst
+ {
+ int col;
+ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
+- __m256i T0, T1, T2, T3, T4, T5, T6, T7;
++ __m256i T0, T1, T2, T3, T4, T5;
+ __m256i M0, M1, M2, M3, M4, M5, M6, M7;
++ __m256i S0, S1, S2;
+ __m256i offset = _mm256_set1_epi32(32);
+- s32 *coef = (s32*)coeff;
+- __m128i mCoef0 = _mm_setr_epi32(coef[0], coef[1], coef[0], coef[1]);
+- __m256i mCoef = _mm256_cvtepi8_epi16(mCoef0);
++ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
++ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
++ __m256i mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[0]));
++ __m256i mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[1]));
++ __m256i mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[2]));
++ __m256i mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[3]));
+
+ src -= 3;
+
+@@ -3258,31 +3338,33 @@ void uavs3d_if_hor_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_dst
+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+ for (col = 0; col < width; col += 16)
+ {
+- T0 = _mm256_loadu_si256((__m256i*)(p_src + 0));
+- T1 = _mm256_loadu_si256((__m256i*)(p_src + 1));
+- T2 = _mm256_loadu_si256((__m256i*)(p_src + 2));
+- T3 = _mm256_loadu_si256((__m256i*)(p_src + 3));
+- T4 = _mm256_loadu_si256((__m256i*)(p_src + 4));
+- T5 = _mm256_loadu_si256((__m256i*)(p_src + 5));
+- T6 = _mm256_loadu_si256((__m256i*)(p_src + 6));
+- T7 = _mm256_loadu_si256((__m256i*)(p_src + 7));
+-
+- M0 = _mm256_madd_epi16(T0, mCoef);
+- M1 = _mm256_madd_epi16(T1, mCoef);
+- M2 = _mm256_madd_epi16(T2, mCoef);
+- M3 = _mm256_madd_epi16(T3, mCoef);
+- M4 = _mm256_madd_epi16(T4, mCoef);
+- M5 = _mm256_madd_epi16(T5, mCoef);
+- M6 = _mm256_madd_epi16(T6, mCoef);
+- M7 = _mm256_madd_epi16(T7, mCoef);
+-
+- M0 = _mm256_hadd_epi32(M0, M1);
+- M1 = _mm256_hadd_epi32(M2, M3);
+- M2 = _mm256_hadd_epi32(M4, M5);
+- M3 = _mm256_hadd_epi32(M6, M7);
+-
+- M0 = _mm256_hadd_epi32(M0, M1);
+- M1 = _mm256_hadd_epi32(M2, M3);
++ S0 = _mm256_loadu_si256((__m256i*)(p_src));
++ S1 = _mm256_loadu_si256((__m256i*)(p_src + 4));
++ S2 = _mm256_loadu_si256((__m256i*)(p_src + 8));
++
++ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
++ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
++ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
++ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
++ T4 = _mm256_shuffle_epi8(S2, mShuffle0);
++ T5 = _mm256_shuffle_epi8(S2, mShuffle1);
++
++ M0 = _mm256_madd_epi16(T0, mCoef0);
++ M1 = _mm256_madd_epi16(T1, mCoef1);
++ M2 = _mm256_madd_epi16(T2, mCoef2);
++ M3 = _mm256_madd_epi16(T3, mCoef3);
++ M4 = _mm256_madd_epi16(T2, mCoef0);
++ M5 = _mm256_madd_epi16(T3, mCoef1);
++ M6 = _mm256_madd_epi16(T4, mCoef2);
++ M7 = _mm256_madd_epi16(T5, mCoef3);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
++ M2 = _mm256_add_epi32(M4, M5);
++ M3 = _mm256_add_epi32(M6, M7);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
+
+ M2 = _mm256_add_epi32(M0, offset);
+ M3 = _mm256_add_epi32(M1, offset);
+@@ -3299,6 +3381,47 @@ void uavs3d_if_hor_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_dst
+ }
+ }
+
++void uavs3d_if_hor_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
++{
++ const int offset = 32;
++ const int shift = 6;
++
++ __m128i coef0 = _mm_cvtepi8_epi16(_mm_set1_epi16(((s16*)coeff)[0]));
++ __m128i coef1 = _mm_cvtepi8_epi16(_mm_set1_epi16(((s16*)coeff)[1]));
++ __m256i mCoef0 = _mm256_set_m128i(coef1, coef0);
++ __m256i mCoef1 = _mm256_set_m128i(coef0, coef1);
++ __m256i mSwitch = _mm256_setr_epi8(0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11, 0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11);
++ __m256i mAddOffset = _mm256_set1_epi32((s16)offset);
++ __m256i T0, T1, S0, S1;
++ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
++ __m128i s0;
++
++ src -= 2;
++
++ while (height--) {
++ uavs3d_prefetch(src + i_src * 2, _MM_HINT_NTA);
++ S0 = _mm256_loadu_si256((__m256i*)(src));
++ s0 = _mm_loadu_si128((__m128i*)(src + 4));
++ src += i_src;
++ S1 = _mm256_set_m128i(s0, s0);
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ T0 = _mm256_shuffle_epi8(S0, mSwitch);
++ T1 = _mm256_shuffle_epi8(S1, mSwitch);
++ T0 = _mm256_madd_epi16(T0, mCoef0);
++ T1 = _mm256_madd_epi16(T1, mCoef1);
++ T0 = _mm256_add_epi32(T0, T1);
++
++ T0 = _mm256_add_epi32(T0, mAddOffset);
++ T0 = _mm256_srai_epi32(T0, shift);
++ T0 = _mm256_min_epu16(T0, max_pel);
++ s0 = _mm_packus_epi32(_mm256_castsi256_si128(T0), _mm256_extracti128_si256(T0, 1));
++
++ _mm_storeu_si128((__m128i*)(dst), s0);
++
++ dst += i_dst;
++ }
++}
++
+ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
+ {
+ const int offset = 32;
+@@ -3310,7 +3433,7 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ __m256i mCoef1 = _mm256_cvtepi8_epi16(coef1);
+ __m256i mSwitch = _mm256_setr_epi8(0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11, 0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11);
+ __m256i mAddOffset = _mm256_set1_epi32((s16)offset);
+- __m256i T0, T1, T2, T3, S0, S1, S2, S3;
++ __m256i T0, T1, T2, T3, S0, S1, S2;
+ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
+
+ src -= 2;
+@@ -3320,15 +3443,14 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S1 = _mm256_loadu_si256((__m256i*)(src + 4));
+ S2 = _mm256_loadu_si256((__m256i*)(src + 8));
+- S3 = _mm256_loadu_si256((__m256i*)(src + 12));
+- S0 = _mm256_permute4x64_epi64(S0, 0x94);
+- S1 = _mm256_permute4x64_epi64(S1, 0x94);
+- S2 = _mm256_permute4x64_epi64(S2, 0x94);
+- S3 = _mm256_permute4x64_epi64(S3, 0x94);
+- T0 = _mm256_madd_epi16(_mm256_shuffle_epi8(S0, mSwitch), mCoef0);
+- T1 = _mm256_madd_epi16(_mm256_shuffle_epi8(S1, mSwitch), mCoef1);
+- T2 = _mm256_madd_epi16(_mm256_shuffle_epi8(S2, mSwitch), mCoef0);
+- T3 = _mm256_madd_epi16(_mm256_shuffle_epi8(S3, mSwitch), mCoef1);
++ T0 = _mm256_shuffle_epi8(S0, mSwitch);
++ T1 = _mm256_shuffle_epi8(S1, mSwitch);
++ T2 = _mm256_shuffle_epi8(S1, mSwitch);
++ T3 = _mm256_shuffle_epi8(S2, mSwitch);
++ T0 = _mm256_madd_epi16(T0, mCoef0);
++ T1 = _mm256_madd_epi16(T1, mCoef1);
++ T2 = _mm256_madd_epi16(T2, mCoef0);
++ T3 = _mm256_madd_epi16(T3, mCoef1);
+ T0 = _mm256_add_epi32(T0, T1);
+ T2 = _mm256_add_epi32(T2, T3);
+
+@@ -3337,7 +3459,6 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ T0 = _mm256_srai_epi32(T0, shift);
+ T2 = _mm256_srai_epi32(T2, shift);
+ T0 = _mm256_packus_epi32(T0, T2);
+- T0 = _mm256_permute4x64_epi64(T0, 0xd8);
+
+ T0 = _mm256_min_epu16(T0, max_pel);
+ _mm256_storeu_si256((__m256i*)(dst), T0);
+@@ -3359,7 +3480,7 @@ void uavs3d_if_hor_chroma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_d
+ __m256i mCoef1 = _mm256_cvtepi8_epi16(coef1);
+ __m256i mSwitch = _mm256_setr_epi8(0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11, 0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11);
+ __m256i mAddOffset = _mm256_set1_epi32((s16)offset);
+- __m256i T0, T1, T2, T3, S0, S1, S2, S3;
++ __m256i T0, T1, T2, T3, S0, S1, S2;
+ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
+
+ src -= 2;
+@@ -3370,15 +3491,14 @@ void uavs3d_if_hor_chroma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_d
+ S0 = _mm256_loadu_si256((__m256i*)(src + col));
+ S1 = _mm256_loadu_si256((__m256i*)(src + col + 4));
+ S2 = _mm256_loadu_si256((__m256i*)(src + col + 8));
+- S3 = _mm256_loadu_si256((__m256i*)(src + col + 12));
+- S0 = _mm256_permute4x64_epi64(S0, 0x94);
+- S1 = _mm256_permute4x64_epi64(S1, 0x94);
+- S2 = _mm256_permute4x64_epi64(S2, 0x94);
+- S3 = _mm256_permute4x64_epi64(S3, 0x94);
+- T0 = _mm256_madd_epi16(_mm256_shuffle_epi8(S0, mSwitch), mCoef0);
+- T1 = _mm256_madd_epi16(_mm256_shuffle_epi8(S1, mSwitch), mCoef1);
+- T2 = _mm256_madd_epi16(_mm256_shuffle_epi8(S2, mSwitch), mCoef0);
+- T3 = _mm256_madd_epi16(_mm256_shuffle_epi8(S3, mSwitch), mCoef1);
++ T0 = _mm256_shuffle_epi8(S0, mSwitch);
++ T1 = _mm256_shuffle_epi8(S1, mSwitch);
++ T2 = _mm256_shuffle_epi8(S1, mSwitch);
++ T3 = _mm256_shuffle_epi8(S2, mSwitch);
++ T0 = _mm256_madd_epi16(T0, mCoef0);
++ T1 = _mm256_madd_epi16(T1, mCoef1);
++ T2 = _mm256_madd_epi16(T2, mCoef0);
++ T3 = _mm256_madd_epi16(T3, mCoef1);
+ T0 = _mm256_add_epi32(T0, T1);
+ T2 = _mm256_add_epi32(T2, T3);
+
+@@ -3387,9 +3507,8 @@ void uavs3d_if_hor_chroma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_d
+ T0 = _mm256_srai_epi32(T0, shift);
+ T2 = _mm256_srai_epi32(T2, shift);
+ T0 = _mm256_packus_epi32(T0, T2);
+- T0 = _mm256_permute4x64_epi64(T0, 0xd8);
+-
+ T0 = _mm256_min_epu16(T0, max_pel);
++
+ _mm256_storeu_si256((__m256i*)(dst + col), T0);
+ }
+ src += i_src;
+@@ -3397,6 +3516,93 @@ void uavs3d_if_hor_chroma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_d
+ }
+ }
+
++void uavs3d_if_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
++{
++ const int i_src2 = i_src * 2;
++ const int i_src3 = i_src * 3;
++ const int i_src4 = i_src * 4;
++ const int i_src5 = i_src * 5;
++ const int i_src6 = i_src * 6;
++ const int i_src7 = i_src * 7;
++ __m128i coeff0 = _mm_set1_epi16(*(s16*)coeff);
++ __m128i coeff1 = _mm_set1_epi16(*(s16*)(coeff + 2));
++ __m128i coeff2 = _mm_set1_epi16(*(s16*)(coeff + 4));
++ __m128i coeff3 = _mm_set1_epi16(*(s16*)(coeff + 6));
++ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
++ __m256i mAddOffset = _mm256_set1_epi32(32);
++ __m128i s0, s1, s2, s3, s4, s5, s6, s7, s8;
++ __m256i T0, T1, T2, T3, T4, T5, T6, T7;
++ __m256i N0, N1, N2, N3, N4, N5, N6, N7;
++ __m256i coeff00 = _mm256_cvtepi8_epi16(coeff0);
++ __m256i coeff01 = _mm256_cvtepi8_epi16(coeff1);
++ __m256i coeff02 = _mm256_cvtepi8_epi16(coeff2);
++ __m256i coeff03 = _mm256_cvtepi8_epi16(coeff3);
++
++ src -= i_src3;
++
++ while (height > 0) {
++ s0 = _mm_loadu_si128((__m128i*)(src));
++ s1 = _mm_loadu_si128((__m128i*)(src + i_src));
++ s2 = _mm_loadu_si128((__m128i*)(src + i_src2));
++ s3 = _mm_loadu_si128((__m128i*)(src + i_src3));
++ s4 = _mm_loadu_si128((__m128i*)(src + i_src4));
++ s5 = _mm_loadu_si128((__m128i*)(src + i_src5));
++ s6 = _mm_loadu_si128((__m128i*)(src + i_src6));
++ s7 = _mm_loadu_si128((__m128i*)(src + i_src7));
++ s8 = _mm_loadu_si128((__m128i*)(src + (i_src << 3)));
++
++ height -= 2;
++ src += i_src2;
++ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
++
++ T0 = _mm256_set_m128i(s1, s0);
++ T1 = _mm256_set_m128i(s2, s1);
++ T2 = _mm256_set_m128i(s3, s2);
++ T3 = _mm256_set_m128i(s4, s3);
++ T4 = _mm256_set_m128i(s5, s4);
++ T5 = _mm256_set_m128i(s6, s5);
++ T6 = _mm256_set_m128i(s7, s6);
++ T7 = _mm256_set_m128i(s8, s7);
++
++ N0 = _mm256_unpacklo_epi16(T0, T1);
++ N1 = _mm256_unpacklo_epi16(T2, T3);
++ N2 = _mm256_unpacklo_epi16(T4, T5);
++ N3 = _mm256_unpacklo_epi16(T6, T7);
++ N4 = _mm256_unpackhi_epi16(T0, T1);
++ N5 = _mm256_unpackhi_epi16(T2, T3);
++ N6 = _mm256_unpackhi_epi16(T4, T5);
++ N7 = _mm256_unpackhi_epi16(T6, T7);
++
++ N0 = _mm256_madd_epi16(N0, coeff00);
++ N1 = _mm256_madd_epi16(N1, coeff01);
++ N2 = _mm256_madd_epi16(N2, coeff02);
++ N3 = _mm256_madd_epi16(N3, coeff03);
++ N4 = _mm256_madd_epi16(N4, coeff00);
++ N5 = _mm256_madd_epi16(N5, coeff01);
++ N6 = _mm256_madd_epi16(N6, coeff02);
++ N7 = _mm256_madd_epi16(N7, coeff03);
++
++ N0 = _mm256_add_epi32(N0, N1);
++ N1 = _mm256_add_epi32(N2, N3);
++ N2 = _mm256_add_epi32(N4, N5);
++ N3 = _mm256_add_epi32(N6, N7);
++
++ N0 = _mm256_add_epi32(N0, N1);
++ N1 = _mm256_add_epi32(N2, N3);
++
++ N0 = _mm256_add_epi32(N0, mAddOffset);
++ N1 = _mm256_add_epi32(N1, mAddOffset);
++ N0 = _mm256_srai_epi32(N0, 6);
++ N1 = _mm256_srai_epi32(N1, 6);
++ N0 = _mm256_packus_epi32(N0, N1);
++ N0 = _mm256_min_epu16(N0, max_pel);
++ _mm_storeu_si128((__m128i*)(dst), _mm256_castsi256_si128(N0));
++ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_extracti128_si256(N0, 1));
++
++ dst += i_dst << 1;
++ }
++}
++
+ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
+ {
+ const int i_src2 = i_src * 2;
+@@ -3412,7 +3618,6 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
+ __m256i mAddOffset = _mm256_set1_epi32(32);
+ __m256i T0, T1, T2, T3, T4, T5, T6, T7;
+- __m256i M0, M1, M2, M3, M4, M5, M6, M7;
+ __m256i N0, N1, N2, N3, N4, N5, N6, N7;
+ __m256i coeff00 = _mm256_cvtepi8_epi16(coeff0);
+ __m256i coeff01 = _mm256_cvtepi8_epi16(coeff1);
+@@ -3422,7 +3627,6 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ src -= 3 * i_src;
+
+ while (height--) {
+- uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
+ T0 = _mm256_loadu_si256((__m256i*)(src));
+ T1 = _mm256_loadu_si256((__m256i*)(src + i_src));
+ T2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
+@@ -3431,24 +3635,25 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
+ T5 = _mm256_loadu_si256((__m256i*)(src + i_src5));
+ T6 = _mm256_loadu_si256((__m256i*)(src + i_src6));
+ T7 = _mm256_loadu_si256((__m256i*)(src + i_src7));
++ uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
+
+- M0 = _mm256_unpacklo_epi16(T0, T1);
+- M1 = _mm256_unpacklo_epi16(T2, T3);
+- M2 = _mm256_unpacklo_epi16(T4, T5);
+- M3 = _mm256_unpacklo_epi16(T6, T7);
+- M4 = _mm256_unpackhi_epi16(T0, T1);
+- M5 = _mm256_unpackhi_epi16(T2, T3);
+- M6 = _mm256_unpackhi_epi16(T4, T5);
+- M7 = _mm256_unpackhi_epi16(T6, T7);
+-
+- N0 = _mm256_madd_epi16(M0, coeff00);
+- N1 = _mm256_madd_epi16(M1, coeff01);
+- N2 = _mm256_madd_epi16(M2, coeff02);
+- N3 = _mm256_madd_epi16(M3, coeff03);
+- N4 = _mm256_madd_epi16(M4, coeff00);
+- N5 = _mm256_madd_epi16(M5, coeff01);
+- N6 = _mm256_madd_epi16(M6, coeff02);
+- N7 = _mm256_madd_epi16(M7, coeff03);
++ N0 = _mm256_unpacklo_epi16(T0, T1);
++ N1 = _mm256_unpacklo_epi16(T2, T3);
++ N2 = _mm256_unpacklo_epi16(T4, T5);
++ N3 = _mm256_unpacklo_epi16(T6, T7);
++ N4 = _mm256_unpackhi_epi16(T0, T1);
++ N5 = _mm256_unpackhi_epi16(T2, T3);
++ N6 = _mm256_unpackhi_epi16(T4, T5);
++ N7 = _mm256_unpackhi_epi16(T6, T7);
++
++ N0 = _mm256_madd_epi16(N0, coeff00);
++ N1 = _mm256_madd_epi16(N1, coeff01);
++ N2 = _mm256_madd_epi16(N2, coeff02);
++ N3 = _mm256_madd_epi16(N3, coeff03);
++ N4 = _mm256_madd_epi16(N4, coeff00);
++ N5 = _mm256_madd_epi16(N5, coeff01);
++ N6 = _mm256_madd_epi16(N6, coeff02);
++ N7 = _mm256_madd_epi16(N7, coeff03);
+
+ N0 = _mm256_add_epi32(N0, N1);
+ N1 = _mm256_add_epi32(N2, N3);
+@@ -3568,20 +3773,23 @@ void uavs3d_if_ver_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
+
+ while (height) {
+ __m256i S0, S1, S2, S3, S4;
+- uavs3d_prefetch(src + 5 * i_src, _MM_HINT_NTA);
+- uavs3d_prefetch(src + 6 * i_src, _MM_HINT_NTA);
+- height -= 2;
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
+ S2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
+ S3 = _mm256_loadu_si256((__m256i*)(src + i_src3));
+ S4 = _mm256_loadu_si256((__m256i*)(src + i_src4));
+
++ height -= 2;
++ src += i_src2;
++
+ T0 = _mm256_unpacklo_epi16(S0, S1);
+ T1 = _mm256_unpackhi_epi16(S0, S1);
+ T2 = _mm256_unpacklo_epi16(S2, S3);
+ T3 = _mm256_unpackhi_epi16(S2, S3);
+
++ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src4, _MM_HINT_NTA);
++
+ T0 = _mm256_madd_epi16(T0, coeff0);
+ T1 = _mm256_madd_epi16(T1, coeff0);
+ T2 = _mm256_madd_epi16(T2, coeff1);
+@@ -3621,7 +3829,6 @@ void uavs3d_if_ver_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ mVal1 = _mm256_min_epu16(mVal1, max_pel);
+ _mm256_storeu_si256((__m256i*)(dst + i_dst), mVal1);
+
+- src += 2 * i_src;
+ dst += 2 * i_dst;
+ }
+ }
+@@ -3645,9 +3852,6 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ src -= i_src;
+
+ while (height) {
+- uavs3d_prefetch(src + 5 * i_src, _MM_HINT_NTA);
+- uavs3d_prefetch(src + 6 * i_src, _MM_HINT_NTA);
+- height -= 2;
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+ S5 = _mm256_loadu_si256((__m256i*)(src + 16));
+ S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
+@@ -3659,6 +3863,9 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ S4 = _mm256_loadu_si256((__m256i*)(src + i_src4));
+ S9 = _mm256_loadu_si256((__m256i*)(src + i_src4 + 16));
+
++ height -= 2;
++ src += i_src2;
++
+ T0 = _mm256_unpacklo_epi16(S0, S1);
+ T1 = _mm256_unpackhi_epi16(S0, S1);
+ T2 = _mm256_unpacklo_epi16(S2, S3);
+@@ -3668,6 +3875,9 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ T6 = _mm256_unpacklo_epi16(S7, S8);
+ T7 = _mm256_unpackhi_epi16(S7, S8);
+
++ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src4, _MM_HINT_NTA);
++
+ T0 = _mm256_madd_epi16(T0, coeff0);
+ T1 = _mm256_madd_epi16(T1, coeff0);
+ T2 = _mm256_madd_epi16(T2, coeff1);
+@@ -3738,7 +3948,6 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
+ _mm256_storeu_si256((__m256i*)(dst + i_dst), T0);
+ _mm256_storeu_si256((__m256i*)(dst + i_dst + 16), T2);
+
+- src += 2 * i_src;
+ dst += 2 * i_dst;
+ }
+ }
+@@ -3820,22 +4029,18 @@ void uavs3d_if_ver_chroma_w32x_avx2(const pel *src, int i_src, pel *dst, int i_d
+ }
+ }
+
+-void uavs3d_if_hor_ver_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
++void uavs3d_if_hor_ver_luma_w4_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
+ {
+- ALIGNED_32(s16 tmp_res[(128 + 7) * 128]);
++ ALIGNED_32(s16 tmp_res[(32 + 7) * 4]);
+ s16 *tmp = tmp_res;
+- int row, i;;
++ int row;
+ int add1, shift1;
+ int add2, shift2;
+- __m128i mCoef0;
+- __m256i mCoef, offset;
+- __m256i T0, T1, T2, T3, T4, T5, T6, T7;
+- __m256i M0, M1, M2, M3, M4, M5, M6, M7;
+- __m256i N0, N1, N2, N3, N4, N5, N6, N7;
+- int i_tmp = width;
+- s32 * coef;
+- __m128i coeff0, coeff1, coeff2, coeff3;
+- __m256i coeff00, coeff01, coeff02, coeff03;
++ __m256i offset;
++ __m256i T0, T1, T2, T3;
++ __m256i M0, M1, M2, M3;
++ const int i_tmp = 4;
++ __m256i mCoef0, mCoef1, mCoef2, mCoef3;
+ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
+
+ if (max_val == 255) { // 8 bit_depth
+@@ -3851,80 +4056,311 @@ void uavs3d_if_hor_ver_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i
+ add2 = 1 << (shift2 - 1);
+
+ src += -3 * i_src - 3;
+- coef = (s32*)coef_x;
+- mCoef0 = _mm_setr_epi32(coef[0], coef[1], coef[0], coef[1]);
+- mCoef = _mm256_cvtepi8_epi16(mCoef0);
+- offset = _mm256_set1_epi32(add1);
+
+- row = height + 7;
++ {
++ __m128i s0, s1, s2, s3;
++ __m256i S0, S1;
++ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
++ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
++
++ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[0]));
++ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[1]));
++ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[2]));
++ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[3]));
++ offset = _mm256_set1_epi32(add1);
++
++ row = height + 6;
++
++ while (row > 0) {
++ s0 = _mm_loadu_si128((__m128i*)(src));
++ s1 = _mm_loadu_si128((__m128i*)(src + 4));
++ s2 = _mm_loadu_si128((__m128i*)(src + i_src));
++ s3 = _mm_loadu_si128((__m128i*)(src + i_src + 4));
++ row -= 2;
++ src += i_src << 1;
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+
+- while (row--) {
+- const pel *p = src;
+- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+- for (i = 0; i < width; i += 16) {
++ S0 = _mm256_set_m128i(s2, s0);
++ S1 = _mm256_set_m128i(s3, s1);
++
++ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
++ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
++ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
++ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
+
+- T0 = _mm256_loadu_si256((__m256i*)p++);
+- T1 = _mm256_loadu_si256((__m256i*)p++);
+- T2 = _mm256_loadu_si256((__m256i*)p++);
+- T3 = _mm256_loadu_si256((__m256i*)p++);
+- T4 = _mm256_loadu_si256((__m256i*)p++);
+- T5 = _mm256_loadu_si256((__m256i*)p++);
+- T6 = _mm256_loadu_si256((__m256i*)p++);
+- T7 = _mm256_loadu_si256((__m256i*)p++);
+-
+- M0 = _mm256_madd_epi16(T0, mCoef);
+- M1 = _mm256_madd_epi16(T1, mCoef);
+- M2 = _mm256_madd_epi16(T2, mCoef);
+- M3 = _mm256_madd_epi16(T3, mCoef);
+- M4 = _mm256_madd_epi16(T4, mCoef);
+- M5 = _mm256_madd_epi16(T5, mCoef);
+- M6 = _mm256_madd_epi16(T6, mCoef);
+- M7 = _mm256_madd_epi16(T7, mCoef);
+-
+- M0 = _mm256_hadd_epi32(M0, M1);
+- M1 = _mm256_hadd_epi32(M2, M3);
+- M2 = _mm256_hadd_epi32(M4, M5);
+- M3 = _mm256_hadd_epi32(M6, M7);
+-
+- M0 = _mm256_hadd_epi32(M0, M1);
+- M1 = _mm256_hadd_epi32(M2, M3);
++ M0 = _mm256_madd_epi16(T0, mCoef0);
++ M1 = _mm256_madd_epi16(T1, mCoef1);
++ M2 = _mm256_madd_epi16(T2, mCoef2);
++ M3 = _mm256_madd_epi16(T3, mCoef3);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
++
++ M0 = _mm256_add_epi32(M0, M1);
++
++ M2 = _mm256_add_epi32(M0, offset);
++ M2 = _mm256_srai_epi32(M2, shift1);
++
++ s0 = _mm_packs_epi32(_mm256_castsi256_si128(M2), _mm256_extracti128_si256(M2, 1));
++ _mm_store_si128((__m128i*)(tmp), s0);
++
++ tmp += i_tmp * 2;
++ }
++ {
++ // the last row
++ __m128i t0, t1, t2, t3;
++ __m128i m0, m1, m2, m3;
++ s0 = _mm_loadu_si128((__m128i*)(src));
++ s1 = _mm_loadu_si128((__m128i*)(src + 4));
++ src += i_src;
++
++ t0 = _mm_shuffle_epi8(s0, _mm256_castsi256_si128(mShuffle0));
++ t1 = _mm_shuffle_epi8(s0, _mm256_castsi256_si128(mShuffle1));
++ t2 = _mm_shuffle_epi8(s1, _mm256_castsi256_si128(mShuffle0));
++ t3 = _mm_shuffle_epi8(s1, _mm256_castsi256_si128(mShuffle1));
++
++ m0 = _mm_madd_epi16(t0, _mm256_castsi256_si128(mCoef0));
++ m1 = _mm_madd_epi16(t1, _mm256_castsi256_si128(mCoef1));
++ m2 = _mm_madd_epi16(t2, _mm256_castsi256_si128(mCoef2));
++ m3 = _mm_madd_epi16(t3, _mm256_castsi256_si128(mCoef3));
++
++ m0 = _mm_add_epi32(m0, m1);
++ m1 = _mm_add_epi32(m2, m3);
++
++ m0 = _mm_add_epi32(m0, m1);
++
++ m0 = _mm_add_epi32(m0, _mm256_castsi256_si128(offset));
++ m0 = _mm_srai_epi32(m0, shift1);
++ m0 = _mm_packs_epi32(m0, m0);
++ _mm_storel_epi64((__m128i*)tmp, m0);
++ }
++ }
++
++ {
++ __m256i T4, T5, T6, T7, M4, M5, M6, M7;
++ __m128i d0, d1;
++
++ offset = _mm256_set1_epi32(add2);
++ tmp = tmp_res;
++
++ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[0]));
++ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[1]));
++ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[2]));
++ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[3]));
++
++ while (height > 0) {
++ T0 = _mm256_load_si256((__m256i*)(tmp));
++ T1 = _mm256_loadu_si256((__m256i*)(tmp + i_tmp));
++ T2 = _mm256_loadu_si256((__m256i*)(tmp + 2 * i_tmp));
++ T3 = _mm256_loadu_si256((__m256i*)(tmp + 3 * i_tmp));
++ T4 = _mm256_load_si256((__m256i*)(tmp + 4 * i_tmp));
++ T5 = _mm256_loadu_si256((__m256i*)(tmp + 5 * i_tmp));
++ T6 = _mm256_loadu_si256((__m256i*)(tmp + 6 * i_tmp));
++ T7 = _mm256_loadu_si256((__m256i*)(tmp + 7 * i_tmp));
++ height -= 4;
++ tmp += i_tmp * 4;
++
++ M0 = _mm256_unpacklo_epi16(T0, T1);
++ M1 = _mm256_unpacklo_epi16(T2, T3);
++ M2 = _mm256_unpacklo_epi16(T4, T5);
++ M3 = _mm256_unpacklo_epi16(T6, T7);
++ M4 = _mm256_unpackhi_epi16(T0, T1);
++ M5 = _mm256_unpackhi_epi16(T2, T3);
++ M6 = _mm256_unpackhi_epi16(T4, T5);
++ M7 = _mm256_unpackhi_epi16(T6, T7);
++
++ M0 = _mm256_madd_epi16(M0, mCoef0);
++ M1 = _mm256_madd_epi16(M1, mCoef1);
++ M2 = _mm256_madd_epi16(M2, mCoef2);
++ M3 = _mm256_madd_epi16(M3, mCoef3);
++ M4 = _mm256_madd_epi16(M4, mCoef0);
++ M5 = _mm256_madd_epi16(M5, mCoef1);
++ M6 = _mm256_madd_epi16(M6, mCoef2);
++ M7 = _mm256_madd_epi16(M7, mCoef3);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
++ M2 = _mm256_add_epi32(M4, M5);
++ M3 = _mm256_add_epi32(M6, M7);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
++
++ M0 = _mm256_add_epi32(M0, offset);
++ M1 = _mm256_add_epi32(M1, offset);
++ M0 = _mm256_srai_epi32(M0, shift2);
++ M1 = _mm256_srai_epi32(M1, shift2);
++ M0 = _mm256_packus_epi32(M0, M1);
++ M0 = _mm256_min_epu16(M0, max_pel);
++
++ d0 = _mm256_castsi256_si128(M0);
++ d1 = _mm256_extracti128_si256(M0, 1);
++ _mm_storel_epi64((__m128i*)(dst), d0);
++ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(d0));
++ _mm_storel_epi64((__m128i*)(dst + (i_dst << 1)), d1);
++ _mm_storeh_pi((__m64*)(dst + i_dst * 3), _mm_castsi128_ps(d1));
++
++ dst += i_dst << 2;
++ }
++ }
++}
++
++void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
++{
++ ALIGNED_32(s16 tmp_res[(64 + 7) * 8]);
++ s16 *tmp = tmp_res;
++ int row;
++ int add1, shift1;
++ int add2, shift2;
++ __m256i offset;
++ __m256i T0, T1, T2, T3, T4, T5;
++ __m256i M0, M1, M2, M3, M4, M5, M6, M7;
++ const int i_tmp = 8;
++ __m256i mCoef0, mCoef1, mCoef2, mCoef3;
++ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
++
++ if (max_val == 255) { // 8 bit_depth
++ shift1 = 0;
++ shift2 = 12;
++ }
++ else { // 10 bit_depth
++ shift1 = 2;
++ shift2 = 10;
++ }
++
++ add1 = (1 << (shift1)) >> 1;
++ add2 = 1 << (shift2 - 1);
++
++ src += -3 * i_src - 3;
++
++ {
++ __m128i s0, s1;
++ __m256i S0, S1, S2;
++ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
++ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
++
++ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[0]));
++ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[1]));
++ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[2]));
++ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[3]));
++ offset = _mm256_set1_epi32(add1);
++
++ row = height + 6;
++
++ while (row > 0) {
++ T0 = _mm256_loadu_si256((__m256i*)(src));
++ s0 = _mm_loadu_si128((__m128i*)(src + 4));
++ T1 = _mm256_loadu_si256((__m256i*)(src + i_src));
++ s1 = _mm_loadu_si128((__m128i*)(src + i_src + 4));
++ row -= 2;
++ src += i_src << 1;
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
++
++ S0 = _mm256_permute2x128_si256(T0, T1, 0x20);
++ S2 = _mm256_permute2x128_si256(T0, T1, 0x31);
++ S1 = _mm256_set_m128i(s1, s0);
++
++ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
++ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
++ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
++ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
++ T4 = _mm256_shuffle_epi8(S2, mShuffle0);
++ T5 = _mm256_shuffle_epi8(S2, mShuffle1);
++
++ M0 = _mm256_madd_epi16(T0, mCoef0);
++ M1 = _mm256_madd_epi16(T1, mCoef1);
++ M2 = _mm256_madd_epi16(T2, mCoef2);
++ M3 = _mm256_madd_epi16(T3, mCoef3);
++ M4 = _mm256_madd_epi16(T2, mCoef0);
++ M5 = _mm256_madd_epi16(T3, mCoef1);
++ M6 = _mm256_madd_epi16(T4, mCoef2);
++ M7 = _mm256_madd_epi16(T5, mCoef3);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
++ M2 = _mm256_add_epi32(M4, M5);
++ M3 = _mm256_add_epi32(M6, M7);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
+
+ M2 = _mm256_add_epi32(M0, offset);
+ M3 = _mm256_add_epi32(M1, offset);
+ M2 = _mm256_srai_epi32(M2, shift1);
+ M3 = _mm256_srai_epi32(M3, shift1);
+ M2 = _mm256_packs_epi32(M2, M3);
+- _mm256_storeu_si256((__m256i*)(tmp + i), M2);
+
+- p += 8;
++ _mm256_store_si256((__m256i*)(tmp), M2);
++
++ tmp += i_tmp * 2;
++ }
++ {
++ // the last row
++ __m128i t0, t1, t2, t3, t4, t5;
++ __m128i m0, m1, m2, m3, m4, m5, m6, m7;
++ __m128i s2;
++ s0 = _mm_loadu_si128((__m128i*)(src));
++ s1 = _mm_loadu_si128((__m128i*)(src + 4));
++ s2 = _mm_loadu_si128((__m128i*)(src + 8));
++ src += i_src;
++
++ t0 = _mm_shuffle_epi8(s0, _mm256_castsi256_si128(mShuffle0));
++ t1 = _mm_shuffle_epi8(s0, _mm256_castsi256_si128(mShuffle1));
++ t2 = _mm_shuffle_epi8(s1, _mm256_castsi256_si128(mShuffle0));
++ t3 = _mm_shuffle_epi8(s1, _mm256_castsi256_si128(mShuffle1));
++ t4 = _mm_shuffle_epi8(s2, _mm256_castsi256_si128(mShuffle0));
++ t5 = _mm_shuffle_epi8(s2, _mm256_castsi256_si128(mShuffle1));
++
++ m0 = _mm_madd_epi16(t0, _mm256_castsi256_si128(mCoef0));
++ m1 = _mm_madd_epi16(t1, _mm256_castsi256_si128(mCoef1));
++ m2 = _mm_madd_epi16(t2, _mm256_castsi256_si128(mCoef2));
++ m3 = _mm_madd_epi16(t3, _mm256_castsi256_si128(mCoef3));
++ m4 = _mm_madd_epi16(t2, _mm256_castsi256_si128(mCoef0));
++ m5 = _mm_madd_epi16(t3, _mm256_castsi256_si128(mCoef1));
++ m6 = _mm_madd_epi16(t4, _mm256_castsi256_si128(mCoef2));
++ m7 = _mm_madd_epi16(t5, _mm256_castsi256_si128(mCoef3));
++
++ m0 = _mm_add_epi32(m0, m1);
++ m1 = _mm_add_epi32(m2, m3);
++ m2 = _mm_add_epi32(m4, m5);
++ m3 = _mm_add_epi32(m6, m7);
++
++ m0 = _mm_add_epi32(m0, m1);
++ m1 = _mm_add_epi32(m2, m3);
++
++ m2 = _mm_add_epi32(m0, _mm256_castsi256_si128(offset));
++ m3 = _mm_add_epi32(m1, _mm256_castsi256_si128(offset));
++ m2 = _mm_srai_epi32(m2, shift1);
++ m3 = _mm_srai_epi32(m3, shift1);
++ m2 = _mm_packs_epi32(m2, m3);
++ _mm_store_si128((__m128i*)tmp, m2);
+ }
+- tmp += i_tmp;
+- src += i_src;
+ }
+
+- offset = _mm256_set1_epi32(add2);
+- tmp = tmp_res;
++ {
++ __m256i N0, N1, N2, N3, N4, N5, N6, N7;
++ __m256i T6, T7;
++ offset = _mm256_set1_epi32(add2);
++ tmp = tmp_res;
+
+- coeff0 = _mm_set1_epi16(*(s16*)(coef_y));
+- coeff1 = _mm_set1_epi16(*(s16*)(coef_y + 2));
+- coeff2 = _mm_set1_epi16(*(s16*)(coef_y + 4));
+- coeff3 = _mm_set1_epi16(*(s16*)(coef_y + 6));
+- coeff00 = _mm256_cvtepi8_epi16(coeff0);
+- coeff01 = _mm256_cvtepi8_epi16(coeff1);
+- coeff02 = _mm256_cvtepi8_epi16(coeff2);
+- coeff03 = _mm256_cvtepi8_epi16(coeff3);
++ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[0]));
++ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[1]));
++ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[2]));
++ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[3]));
+
+- while (height--) {
+- const pel *p = (pel*)tmp;
+- for (i = 0; i < width; i += 16) {
+- T0 = _mm256_load_si256((__m256i*)(p));
+- T1 = _mm256_load_si256((__m256i*)(p + i_tmp));
+- T2 = _mm256_load_si256((__m256i*)(p + 2 * i_tmp));
+- T3 = _mm256_load_si256((__m256i*)(p + 3 * i_tmp));
+- T4 = _mm256_load_si256((__m256i*)(p + 4 * i_tmp));
+- T5 = _mm256_load_si256((__m256i*)(p + 5 * i_tmp));
+- T6 = _mm256_load_si256((__m256i*)(p + 6 * i_tmp));
+- T7 = _mm256_load_si256((__m256i*)(p + 7 * i_tmp));
++ while (height > 0) {
++ T0 = _mm256_load_si256((__m256i*)(tmp));
++ T1 = _mm256_loadu_si256((__m256i*)(tmp + i_tmp));
++ T2 = _mm256_load_si256((__m256i*)(tmp + 2 * i_tmp));
++ T3 = _mm256_loadu_si256((__m256i*)(tmp + 3 * i_tmp));
++ T4 = _mm256_load_si256((__m256i*)(tmp + 4 * i_tmp));
++ T5 = _mm256_loadu_si256((__m256i*)(tmp + 5 * i_tmp));
++ T6 = _mm256_load_si256((__m256i*)(tmp + 6 * i_tmp));
++ T7 = _mm256_loadu_si256((__m256i*)(tmp + 7 * i_tmp));
++ height -= 2;
++ tmp += i_tmp * 2;
+
+ M0 = _mm256_unpacklo_epi16(T0, T1);
+ M1 = _mm256_unpacklo_epi16(T2, T3);
+@@ -3935,14 +4371,14 @@ void uavs3d_if_hor_ver_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i
+ M6 = _mm256_unpackhi_epi16(T4, T5);
+ M7 = _mm256_unpackhi_epi16(T6, T7);
+
+- N0 = _mm256_madd_epi16(M0, coeff00);
+- N1 = _mm256_madd_epi16(M1, coeff01);
+- N2 = _mm256_madd_epi16(M2, coeff02);
+- N3 = _mm256_madd_epi16(M3, coeff03);
+- N4 = _mm256_madd_epi16(M4, coeff00);
+- N5 = _mm256_madd_epi16(M5, coeff01);
+- N6 = _mm256_madd_epi16(M6, coeff02);
+- N7 = _mm256_madd_epi16(M7, coeff03);
++ N0 = _mm256_madd_epi16(M0, mCoef0);
++ N1 = _mm256_madd_epi16(M1, mCoef1);
++ N2 = _mm256_madd_epi16(M2, mCoef2);
++ N3 = _mm256_madd_epi16(M3, mCoef3);
++ N4 = _mm256_madd_epi16(M4, mCoef0);
++ N5 = _mm256_madd_epi16(M5, mCoef1);
++ N6 = _mm256_madd_epi16(M6, mCoef2);
++ N7 = _mm256_madd_epi16(M7, mCoef3);
+
+ N0 = _mm256_add_epi32(N0, N1);
+ N1 = _mm256_add_epi32(N2, N3);
+@@ -3958,14 +4394,164 @@ void uavs3d_if_hor_ver_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i
+ N1 = _mm256_srai_epi32(N1, shift2);
+ N0 = _mm256_packus_epi32(N0, N1);
+ N0 = _mm256_min_epu16(N0, max_pel);
+- _mm256_storeu_si256((__m256i*)(dst + i), N0);
+
+- p += 16;
++ _mm_storeu_si128((__m128i*)(dst), _mm256_castsi256_si128(N0));
++ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_extracti128_si256(N0, 1));
++
++ dst += i_dst << 1;
+ }
+- dst += i_dst;
+- tmp += i_tmp;
++ }
++}
++
++void uavs3d_if_hor_ver_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
++{
++ ALIGNED_32(s16 tmp_res[(128 + 7) * 128]);
++ s16 *tmp = tmp_res;
++ int row, i;;
++ int add1, shift1;
++ int add2, shift2;
++ __m256i offset;
++ __m256i T0, T1, T2, T3, T4, T5;
++ __m256i M0, M1, M2, M3, M4, M5, M6, M7;
++ int i_tmp = width;
++ __m256i mCoef0, mCoef1, mCoef2, mCoef3;
++ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
++
++ if (max_val == 255) { // 8 bit_depth
++ shift1 = 0;
++ shift2 = 12;
++ }
++ else { // 10 bit_depth
++ shift1 = 2;
++ shift2 = 10;
+ }
+
++ add1 = (1 << (shift1)) >> 1;
++ add2 = 1 << (shift2 - 1);
++
++ src += -3 * i_src - 3;
++
++ {
++ __m256i S0, S1, S2;
++ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
++ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
++
++ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[0]));
++ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[1]));
++ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[2]));
++ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[3]));
++ offset = _mm256_set1_epi32(add1);
++
++ row = height + 7;
++
++ while (row--) {
++ const pel *p = src;
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
++ for (i = 0; i < width; i += 16) {
++ S0 = _mm256_loadu_si256((__m256i*)(p));
++ S1 = _mm256_loadu_si256((__m256i*)(p + 4));
++ S2 = _mm256_loadu_si256((__m256i*)(p + 8));
++
++ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
++ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
++ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
++ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
++ T4 = _mm256_shuffle_epi8(S2, mShuffle0);
++ T5 = _mm256_shuffle_epi8(S2, mShuffle1);
++
++ M0 = _mm256_madd_epi16(T0, mCoef0);
++ M1 = _mm256_madd_epi16(T1, mCoef1);
++ M2 = _mm256_madd_epi16(T2, mCoef2);
++ M3 = _mm256_madd_epi16(T3, mCoef3);
++ M4 = _mm256_madd_epi16(T2, mCoef0);
++ M5 = _mm256_madd_epi16(T3, mCoef1);
++ M6 = _mm256_madd_epi16(T4, mCoef2);
++ M7 = _mm256_madd_epi16(T5, mCoef3);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
++ M2 = _mm256_add_epi32(M4, M5);
++ M3 = _mm256_add_epi32(M6, M7);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M1 = _mm256_add_epi32(M2, M3);
++
++ p += 16;
++ M2 = _mm256_add_epi32(M0, offset);
++ M3 = _mm256_add_epi32(M1, offset);
++ M2 = _mm256_srai_epi32(M2, shift1);
++ M3 = _mm256_srai_epi32(M3, shift1);
++ M2 = _mm256_packs_epi32(M2, M3);
++ _mm256_storeu_si256((__m256i*)(tmp + i), M2);
++ }
++ tmp += i_tmp;
++ src += i_src;
++ }
++ }
++
++ {
++ __m256i N0, N1, N2, N3, N4, N5, N6, N7;
++ __m256i T6, T7;
++ offset = _mm256_set1_epi32(add2);
++ tmp = tmp_res;
++
++ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[0]));
++ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[1]));
++ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[2]));
++ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[3]));
++
++ while (height--) {
++ const pel *p = (pel*)tmp;
++ for (i = 0; i < width; i += 16) {
++ T0 = _mm256_load_si256((__m256i*)(p));
++ T1 = _mm256_load_si256((__m256i*)(p + i_tmp));
++ T2 = _mm256_load_si256((__m256i*)(p + 2 * i_tmp));
++ T3 = _mm256_load_si256((__m256i*)(p + 3 * i_tmp));
++ T4 = _mm256_load_si256((__m256i*)(p + 4 * i_tmp));
++ T5 = _mm256_load_si256((__m256i*)(p + 5 * i_tmp));
++ T6 = _mm256_load_si256((__m256i*)(p + 6 * i_tmp));
++ T7 = _mm256_load_si256((__m256i*)(p + 7 * i_tmp));
++
++ M0 = _mm256_unpacklo_epi16(T0, T1);
++ M1 = _mm256_unpacklo_epi16(T2, T3);
++ M2 = _mm256_unpacklo_epi16(T4, T5);
++ M3 = _mm256_unpacklo_epi16(T6, T7);
++ M4 = _mm256_unpackhi_epi16(T0, T1);
++ M5 = _mm256_unpackhi_epi16(T2, T3);
++ M6 = _mm256_unpackhi_epi16(T4, T5);
++ M7 = _mm256_unpackhi_epi16(T6, T7);
++
++ N0 = _mm256_madd_epi16(M0, mCoef0);
++ N1 = _mm256_madd_epi16(M1, mCoef1);
++ N2 = _mm256_madd_epi16(M2, mCoef2);
++ N3 = _mm256_madd_epi16(M3, mCoef3);
++ N4 = _mm256_madd_epi16(M4, mCoef0);
++ N5 = _mm256_madd_epi16(M5, mCoef1);
++ N6 = _mm256_madd_epi16(M6, mCoef2);
++ N7 = _mm256_madd_epi16(M7, mCoef3);
++
++ N0 = _mm256_add_epi32(N0, N1);
++ N1 = _mm256_add_epi32(N2, N3);
++ N2 = _mm256_add_epi32(N4, N5);
++ N3 = _mm256_add_epi32(N6, N7);
++
++ N0 = _mm256_add_epi32(N0, N1);
++ N1 = _mm256_add_epi32(N2, N3);
++
++ N0 = _mm256_add_epi32(N0, offset);
++ N1 = _mm256_add_epi32(N1, offset);
++ N0 = _mm256_srai_epi32(N0, shift2);
++ N1 = _mm256_srai_epi32(N1, shift2);
++ N0 = _mm256_packus_epi32(N0, N1);
++ N0 = _mm256_min_epu16(N0, max_pel);
++ _mm256_storeu_si256((__m256i*)(dst + i), N0);
++
++ p += 16;
++ }
++ dst += i_dst;
++ tmp += i_tmp;
++ }
++ }
+ }
+
+ void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
+@@ -3979,14 +4565,6 @@ void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i
+ int shift1, shift2;
+ int add1, add2;
+
+- __m128i coef0 = _mm_set1_epi16(*(s16*)coef_x);
+- __m128i coef1 = _mm_set1_epi16(*(s16*)(coef_x + 2));
+- __m256i mCoef0 = _mm256_cvtepi8_epi16(coef0);
+- __m256i mCoef1 = _mm256_cvtepi8_epi16(coef1);
+- __m256i mSwitch = _mm256_setr_epi8(0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11, 0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11);
+- __m256i T0, T1, S0, S1, sum;
+- __m256i mAddOffset;
+-
+ if (max_val == 255) { // 8 bit_depth
+ shift1 = 0;
+ shift2 = 12;
+@@ -3999,25 +4577,34 @@ void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i
+ add1 = (1 << (shift1)) >> 1;
+ add2 = 1 << (shift2 - 1);
+
+- mAddOffset = _mm256_set1_epi32(add1);
+ //HOR
++ __m128i coef0 = _mm_cvtepi8_epi16(_mm_set1_epi16(((s16*)coef_x)[0]));
++ __m128i coef1 = _mm_cvtepi8_epi16(_mm_set1_epi16(((s16*)coef_x)[1]));
++ __m256i mCoef0 = _mm256_set_m128i(coef1, coef0);
++ __m256i mCoef1 = _mm256_set_m128i(coef0, coef1);
++ __m256i mSwitch = _mm256_setr_epi8(0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11, 0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11);
++ __m256i T0, T1, S0, S1, sum;
++ __m256i mAddOffset = _mm256_set1_epi32(add1);
++ __m128i mDst;
++ __m128i s0;
++
+ src = src - i_src - 2;
+ row = height + 3;
+ while (row--) {
+- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+ S0 = _mm256_loadu_si256((__m256i*)(src));
+- S1 = _mm256_loadu_si256((__m256i*)(src + 4));
+- S0 = _mm256_permute4x64_epi64(S0, 0x94);
+- S1 = _mm256_permute4x64_epi64(S1, 0x94);
+- T0 = _mm256_madd_epi16(_mm256_shuffle_epi8(S0, mSwitch), mCoef0);
+- T1 = _mm256_madd_epi16(_mm256_shuffle_epi8(S1, mSwitch), mCoef1);
++ s0 = _mm_loadu_si128((__m128i*)(src + 4));
++ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
++ S1 = _mm256_set_m128i(s0, s0);
++ T0 = _mm256_shuffle_epi8(S0, mSwitch);
++ T1 = _mm256_shuffle_epi8(S1, mSwitch);
++ T0 = _mm256_madd_epi16(T0, mCoef0);
++ T1 = _mm256_madd_epi16(T1, mCoef1);
+ sum = _mm256_add_epi32(T0, T1);
+
+ sum = _mm256_add_epi32(sum, mAddOffset);
+ sum = _mm256_srai_epi32(sum, shift1);
+- sum = _mm256_packs_epi32(sum, sum);
+- sum = _mm256_permute4x64_epi64(sum, 0xd8);
+- _mm_storeu_si128((__m128i*)(tmp), _mm256_castsi256_si128(sum));
++ mDst = _mm_packs_epi32(_mm256_castsi256_si128(sum), _mm256_extracti128_si256(sum, 1));
++ _mm_store_si128((__m128i*)(tmp), mDst);
+
+ src += i_src;
+ tmp += i_tmp;
+@@ -4027,46 +4614,49 @@ void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i
+ tmp = tmp_res;
+
+ {
+- __m128i max_val1 = _mm_set1_epi16((pel)max_val);
+- __m128i coeff0, coeff1, mVal, mAddOffset2;
+- __m128i M0, M1, M2, M3;
++ __m128i coeff0, coeff1;
++ __m256i MaxVal = _mm256_set1_epi16((pel)max_val);
++ __m256i C0, C1, mVal, mAddOffset2;
++ __m256i M0, M1, M2, M3;
+
+ coeff0 = _mm_set1_epi16(*(s16*)coef_y);
+ coeff1 = _mm_set1_epi16(*(s16*)(coef_y + 2));
+- mAddOffset2 = _mm_set1_epi32(add2);
+-
+- coeff0 = _mm_cvtepi8_epi16(coeff0);
+- coeff1 = _mm_cvtepi8_epi16(coeff1);
+- while (height--) {
+- __m128i T00 = _mm_load_si128((__m128i*)(tmp));
+- __m128i T10 = _mm_load_si128((__m128i*)(tmp + i_tmp));
+- __m128i T20 = _mm_load_si128((__m128i*)(tmp + i_tmp2));
+- __m128i T30 = _mm_load_si128((__m128i*)(tmp + i_tmp3));
++ mAddOffset2 = _mm256_set1_epi32(add2);
+
+- M0 = _mm_unpacklo_epi16(T00, T10);
+- M1 = _mm_unpacklo_epi16(T20, T30);
+- M2 = _mm_unpackhi_epi16(T00, T10);
+- M3 = _mm_unpackhi_epi16(T20, T30);
+-
+- M0 = _mm_madd_epi16(M0, coeff0);
+- M1 = _mm_madd_epi16(M1, coeff1);
+- M2 = _mm_madd_epi16(M2, coeff0);
+- M3 = _mm_madd_epi16(M3, coeff1);
+-
+- M0 = _mm_add_epi32(M0, M1);
+- M2 = _mm_add_epi32(M2, M3);
+-
+- M0 = _mm_add_epi32(M0, mAddOffset2);
+- M2 = _mm_add_epi32(M2, mAddOffset2);
+- M0 = _mm_srai_epi32(M0, shift2);
+- M2 = _mm_srai_epi32(M2, shift2);
+-
+- mVal = _mm_packus_epi32(M0, M2);
+- mVal = _mm_min_epu16(mVal, max_val1);
+- _mm_storeu_si128((__m128i*)dst, mVal);
+-
+- tmp += i_tmp;
+- dst += i_dst;
++ C0 = _mm256_cvtepi8_epi16(coeff0);
++ C1 = _mm256_cvtepi8_epi16(coeff1);
++ while (height) {
++ __m256i T00 = _mm256_load_si256((__m256i*)(tmp));
++ __m256i T10 = _mm256_loadu_si256((__m256i*)(tmp + i_tmp));
++ __m256i T20 = _mm256_load_si256((__m256i*)(tmp + i_tmp2));
++ __m256i T30 = _mm256_loadu_si256((__m256i*)(tmp + i_tmp3));
++
++ M0 = _mm256_unpacklo_epi16(T00, T10);
++ M1 = _mm256_unpacklo_epi16(T20, T30);
++ M2 = _mm256_unpackhi_epi16(T00, T10);
++ M3 = _mm256_unpackhi_epi16(T20, T30);
++
++ M0 = _mm256_madd_epi16(M0, C0);
++ M1 = _mm256_madd_epi16(M1, C1);
++ M2 = _mm256_madd_epi16(M2, C0);
++ M3 = _mm256_madd_epi16(M3, C1);
++
++ M0 = _mm256_add_epi32(M0, M1);
++ M2 = _mm256_add_epi32(M2, M3);
++
++ M0 = _mm256_add_epi32(M0, mAddOffset2);
++ M2 = _mm256_add_epi32(M2, mAddOffset2);
++ M0 = _mm256_srai_epi32(M0, shift2);
++ M2 = _mm256_srai_epi32(M2, shift2);
++
++ mVal = _mm256_packus_epi32(M0, M2);
++ mVal = _mm256_min_epu16(mVal, MaxVal);
++ _mm_storeu_si128((__m128i*)dst, _mm256_castsi256_si128(mVal));
++ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_extracti128_si256(mVal, 1));
++
++ height -= 2;
++ tmp += i_tmp2;
++ dst += i_dst << 1;
+ }
+ }
+ }
+@@ -4113,28 +4703,26 @@ void uavs3d_if_hor_ver_chroma_w16x_avx2(const pel *src, int i_src, pel *dst, int
+ while (row--) {
+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+ for (col = 0; col < width; col += 16) {
+- S0 = _mm256_loadu_si256((__m256i*)(src + col));
+- S1 = _mm256_loadu_si256((__m256i*)(src + col + 4));
++ S0 = _mm256_loadu_si256((__m256i*)(src + col));
++ S1 = _mm256_loadu_si256((__m256i*)(src + col + 4));
+ S2 = _mm256_loadu_si256((__m256i*)(src + col + 8));
+- S3 = _mm256_loadu_si256((__m256i*)(src + col + 12));
+- S0 = _mm256_permute4x64_epi64(S0, 0x94);
+- S1 = _mm256_permute4x64_epi64(S1, 0x94);
+- S2 = _mm256_permute4x64_epi64(S2, 0x94);
+- S3 = _mm256_permute4x64_epi64(S3, 0x94);
+- T0 = _mm256_madd_epi16(_mm256_shuffle_epi8(S0, mSwitch), mCoef0);
+- T1 = _mm256_madd_epi16(_mm256_shuffle_epi8(S1, mSwitch), mCoef1);
+- T2 = _mm256_madd_epi16(_mm256_shuffle_epi8(S2, mSwitch), mCoef0);
+- T3 = _mm256_madd_epi16(_mm256_shuffle_epi8(S3, mSwitch), mCoef1);
+- T0 = _mm256_add_epi32(T0, T1);
+- T2 = _mm256_add_epi32(T2, T3);
++ T0 = _mm256_shuffle_epi8(S0, mSwitch);
++ T1 = _mm256_shuffle_epi8(S1, mSwitch);
++ T2 = _mm256_shuffle_epi8(S1, mSwitch);
++ T3 = _mm256_shuffle_epi8(S2, mSwitch);
++ S0 = _mm256_madd_epi16(T0, mCoef0);
++ S1 = _mm256_madd_epi16(T1, mCoef1);
++ S2 = _mm256_madd_epi16(T2, mCoef0);
++ S3 = _mm256_madd_epi16(T3, mCoef1);
++ T0 = _mm256_add_epi32(S0, S1);
++ T2 = _mm256_add_epi32(S2, S3);
+
+ T0 = _mm256_add_epi32(T0, mAddOffset);
+ T2 = _mm256_add_epi32(T2, mAddOffset);
+ T0 = _mm256_srai_epi32(T0, shift1);
+ T2 = _mm256_srai_epi32(T2, shift1);
+ T0 = _mm256_packs_epi32(T0, T2);
+- T0 = _mm256_permute4x64_epi64(T0, 0xd8);
+- _mm256_storeu_si256((__m256i*)(tmp + col), T0);
++ _mm256_store_si256((__m256i*)(tmp + col), T0);
+ }
+ src += i_src;
+ tmp += i_tmp;
+diff --git a/source/decore/avx2/intra_pred_avx2.c b/source/decore/avx2/intra_pred_avx2.c
+index 07e19b2..18961f6 100644
+--- a/source/decore/avx2/intra_pred_avx2.c
++++ b/source/decore/avx2/intra_pred_avx2.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -204,7 +199,7 @@ void uavs3d_ipred_hor_avx2(pel *src, pel *dst, int i_dst, int width, int height)
+
+ void uavs3d_ipred_dc_avx2(pel *src, pel *dst, int i_dst, int width, int height, u16 avail_cu, int bit_depth)
+ {
+- int i, x, y;
++ int x, y;
+ int dc;
+ pel *p_src = src - 1;
+ int left_avail = IS_AVAIL(avail_cu, AVAIL_LE);
+@@ -212,6 +207,7 @@ void uavs3d_ipred_dc_avx2(pel *src, pel *dst, int i_dst, int width, int height,
+
+ if (left_avail && above_avail) {
+ int length = width + height + 1;
++ int i;
+ __m128i sum = _mm_setzero_si128();
+ __m128i val;
+
+@@ -2738,7 +2734,6 @@ void uavs3d_ipred_ang_xy_18_avx2(pel *src, pel *dst, int i_dst, int mode, int wi
+ dst += i_dst;
+ }
+ break;
+- break;
+ }
+
+ }
+@@ -3452,10 +3447,10 @@ void uavs3d_ipred_ver_avx2(pel *src, pel *dst, int i_dst, int width, int height)
+ T0 = _mm256_loadu_si256((__m256i *)(src));
+ T1 = _mm256_loadu_si256((__m256i *)(src + 16));
+ for (y = 0; y < height; y += 2) {
+- _mm256_store_si256((__m256i *)(dst), T0);
+- _mm256_store_si256((__m256i *)(dst + 16), T1);
+- _mm256_store_si256((__m256i *)(dst + i_dst), T0);
+- _mm256_store_si256((__m256i *)(dst + i_dst + 16), T1);
++ _mm256_storeu_si256((__m256i *)(dst), T0);
++ _mm256_storeu_si256((__m256i *)(dst + 16), T1);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst), T0);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst + 16), T1);
+ dst += i_dst2;
+ }
+ break;
+@@ -3468,14 +3463,14 @@ void uavs3d_ipred_ver_avx2(pel *src, pel *dst, int i_dst, int width, int height)
+ T2 = _mm256_loadu_si256((__m256i *)(src + 32));
+ T3 = _mm256_loadu_si256((__m256i *)(src + 48));
+ for (y = 0; y < height; y += 2) {
+- _mm256_store_si256((__m256i *)(dst), T0);
+- _mm256_store_si256((__m256i *)(dst + 16), T1);
+- _mm256_store_si256((__m256i *)(dst + 32), T2);
+- _mm256_store_si256((__m256i *)(dst + 48), T3);
+- _mm256_store_si256((__m256i *)(dst + i_dst), T0);
+- _mm256_store_si256((__m256i *)(dst + i_dst + 16), T1);
+- _mm256_store_si256((__m256i *)(dst + i_dst + 32), T2);
+- _mm256_store_si256((__m256i *)(dst + i_dst + 48), T3);
++ _mm256_storeu_si256((__m256i *)(dst), T0);
++ _mm256_storeu_si256((__m256i *)(dst + 16), T1);
++ _mm256_storeu_si256((__m256i *)(dst + 32), T2);
++ _mm256_storeu_si256((__m256i *)(dst + 48), T3);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst), T0);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst + 16), T1);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst + 32), T2);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst + 48), T3);
+ dst += i_dst2;
+ }
+ break;
+@@ -3539,10 +3534,10 @@ void uavs3d_ipred_hor_avx2(pel *src, pel *dst, int i_dst, int width, int height)
+ for (y = 0; y < height; y += 2) {
+ T0 = _mm256_set1_epi16(src[-y]);
+ T1 = _mm256_set1_epi16(src[-y - 1]);
+- _mm256_store_si256((__m256i *)(dst), T0);
+- _mm256_store_si256((__m256i *)(dst + 16), T0);
+- _mm256_store_si256((__m256i *)(dst + i_dst), T1);
+- _mm256_store_si256((__m256i *)(dst + i_dst + 16), T1);
++ _mm256_storeu_si256((__m256i *)(dst), T0);
++ _mm256_storeu_si256((__m256i *)(dst + 16), T0);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst), T1);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst + 16), T1);
+ dst += i_dst2;
+ }
+ break;
+@@ -3553,14 +3548,14 @@ void uavs3d_ipred_hor_avx2(pel *src, pel *dst, int i_dst, int width, int height)
+ for (y = 0; y < height; y += 2) {
+ T0 = _mm256_set1_epi16(src[-y]);
+ T1 = _mm256_set1_epi16(src[-y - 1]);
+- _mm256_store_si256((__m256i *)(dst), T0);
+- _mm256_store_si256((__m256i *)(dst + 16), T0);
+- _mm256_store_si256((__m256i *)(dst + 32), T0);
+- _mm256_store_si256((__m256i *)(dst + 48), T0);
+- _mm256_store_si256((__m256i *)(dst + i_dst), T1);
+- _mm256_store_si256((__m256i *)(dst + i_dst + 16), T1);
+- _mm256_store_si256((__m256i *)(dst + i_dst + 32), T1);
+- _mm256_store_si256((__m256i *)(dst + i_dst + 48), T1);
++ _mm256_storeu_si256((__m256i *)(dst), T0);
++ _mm256_storeu_si256((__m256i *)(dst + 16), T0);
++ _mm256_storeu_si256((__m256i *)(dst + 32), T0);
++ _mm256_storeu_si256((__m256i *)(dst + 48), T0);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst), T1);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst + 16), T1);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst + 32), T1);
++ _mm256_storeu_si256((__m256i *)(dst + i_dst + 48), T1);
+ dst += i_dst2;
+ }
+ break;
+diff --git a/source/decore/avx2/itrans_avx2.c b/source/decore/avx2/itrans_avx2.c
+index 9b1df21..d8766b6 100644
+--- a/source/decore/avx2/itrans_avx2.c
++++ b/source/decore/avx2/itrans_avx2.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -79,14 +74,14 @@
+ #define TRANSPOSE_16x8_32BIT_16BIT(I00, I01, I02, I03, I04, I05, I06, I07, I08, I09, I10, I11, I12, I13, I14, I15, O0, O1, O2, O3, O4, O5, O6, O7)\
+ TRANSPOSE_8x8_32BIT_16BIT(I00, I01, I02, I03, I04, I05, I06, I07, I04, I05, I06, I07); \
+ TRANSPOSE_8x8_32BIT_16BIT(I08, I09, I10, I11, I12, I13, I14, I15, I12, I13, I14, I15); \
+- O0 = _mm256_insertf128_si256(I04, _mm256_castsi256_si128(I12), 1); \
+- O1 = _mm256_insertf128_si256(I05, _mm256_castsi256_si128(I13), 1); \
+- O2 = _mm256_insertf128_si256(I06, _mm256_castsi256_si128(I14), 1); \
+- O3 = _mm256_insertf128_si256(I07, _mm256_castsi256_si128(I15), 1); \
+- O4 = _mm256_insertf128_si256(I12, _mm256_extracti128_si256(I04, 1), 0); \
+- O5 = _mm256_insertf128_si256(I13, _mm256_extracti128_si256(I05, 1), 0); \
+- O6 = _mm256_insertf128_si256(I14, _mm256_extracti128_si256(I06, 1), 0); \
+- O7 = _mm256_insertf128_si256(I15, _mm256_extracti128_si256(I07, 1), 0)
++ O0 = _mm256_permute2x128_si256(I04, I12, 0x20); \
++ O1 = _mm256_permute2x128_si256(I05, I13, 0x20); \
++ O2 = _mm256_permute2x128_si256(I06, I14, 0x20); \
++ O3 = _mm256_permute2x128_si256(I07, I15, 0x20); \
++ O4 = _mm256_permute2x128_si256(I04, I12, 0x31); \
++ O5 = _mm256_permute2x128_si256(I05, I13, 0x31); \
++ O6 = _mm256_permute2x128_si256(I06, I14, 0x31); \
++ O7 = _mm256_permute2x128_si256(I07, I15, 0x31)
+
+
+ static void uavs3d_always_inline dct2_butterfly_h4_avx2(s16* src, s16* dst, int line, int shift, int bit_depth)
+@@ -272,10 +267,10 @@ static void uavs3d_always_inline dct2_butterfly_h8_avx2(s16* src, int i_src, s16
+
+ // transpose 8x8 : 8 x 8(32bit) --> 4 x 16(16bit)
+ TRANSPOSE_8x8_32BIT_16BIT(d0, d1, d2, d3, d4, d5, d6, d7, d4, d5, d6, d7);
+- d0 = _mm256_insertf128_si256(d4, _mm256_castsi256_si128(d5), 1);
+- d1 = _mm256_insertf128_si256(d6, _mm256_castsi256_si128(d7), 1);
+- d2 = _mm256_insertf128_si256(d5, _mm256_extracti128_si256(d4, 1), 0);
+- d3 = _mm256_insertf128_si256(d7, _mm256_extracti128_si256(d6, 1), 0);
++ d0 = _mm256_permute2x128_si256(d4, d5, 0x20);
++ d2 = _mm256_permute2x128_si256(d4, d5, 0x31);
++ d1 = _mm256_permute2x128_si256(d6, d7, 0x20);
++ d3 = _mm256_permute2x128_si256(d6, d7, 0x31);
+
+ if (bit_depth != MAX_TX_DYNAMIC_RANGE) {
+ __m256i max_val = _mm256_set1_epi16((1 << bit_depth) - 1);
+diff --git a/source/decore/avx2/pixel_avx2.c b/source/decore/avx2/pixel_avx2.c
+index 8031fe7..10d48f9 100644
+--- a/source/decore/avx2/pixel_avx2.c
++++ b/source/decore/avx2/pixel_avx2.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -986,8 +981,8 @@ void uavs3d_recon_chroma_w16_avx2(s16 *resi_u, s16 *resi_v, pel *pred, int width
+ r1 = _mm256_loadu_si256((const __m256i*)(resi_v));
+ r2 = _mm256_unpacklo_epi16(r0, r1); // UV interlaced: uv0-uv4 uv8-uv12
+ r3 = _mm256_unpackhi_epi16(r0, r1);
+- r0 = _mm256_insertf128_si256(r2, _mm256_castsi256_si128(r3), 0x1); // uv0-uv8
+- r1 = _mm256_insertf128_si256(r3, _mm256_extracti128_si256(r2, 1), 0x0);
++ r0 = _mm256_permute2x128_si256(r2, r3, 0x20); // uv0-uv8
++ r1 = _mm256_permute2x128_si256(r2, r3, 0x31);
+ p0 = _mm256_adds_epi16(p0, r0);
+ p1 = _mm256_adds_epi16(p1, r1);
+
+@@ -1035,8 +1030,8 @@ void uavs3d_recon_chroma_w16_avx2(s16 *resi_u, s16 *resi_v, pel *pred, int width
+ r1 = _mm256_loadu_si256((const __m256i*)(resi_v));
+ r2 = _mm256_unpacklo_epi16(zero, r1); // UV interlaced: uv0-uv4 uv8-uv12
+ r3 = _mm256_unpackhi_epi16(zero, r1);
+- r0 = _mm256_insertf128_si256(r2, _mm256_castsi256_si128(r3), 0x1); // uv0-uv8
+- r1 = _mm256_insertf128_si256(r3, _mm256_extracti128_si256(r2, 1), 0x0);
++ r0 = _mm256_permute2x128_si256(r2, r3, 0x20); // uv0-uv8
++ r1 = _mm256_permute2x128_si256(r2, r3, 0x31);
+ p0 = _mm256_adds_epi16(p0, r0);
+ p1 = _mm256_adds_epi16(p1, r1);
+
+@@ -1073,8 +1068,8 @@ void uavs3d_recon_chroma_w16x_avx2(s16 *resi_u, s16 *resi_v, pel *pred, int widt
+ r1 = _mm256_loadu_si256((const __m256i*)(resi_v + j));
+ r2 = _mm256_unpacklo_epi16(r0, r1); // UV interlaced: uv0-uv4 uv8-uv12
+ r3 = _mm256_unpackhi_epi16(r0, r1);
+- r0 = _mm256_insertf128_si256(r2, _mm256_castsi256_si128(r3), 0x1); // uv0-uv8
+- r1 = _mm256_insertf128_si256(r3, _mm256_extracti128_si256(r2, 1), 0x0);
++ r0 = _mm256_permute2x128_si256(r2, r3, 0x20); // uv0-uv8
++ r1 = _mm256_permute2x128_si256(r2, r3, 0x31);
+ p0 = _mm256_adds_epi16(p0, r0);
+ p1 = _mm256_adds_epi16(p1, r1);
+
+@@ -1126,8 +1121,8 @@ void uavs3d_recon_chroma_w16x_avx2(s16 *resi_u, s16 *resi_v, pel *pred, int widt
+ r1 = _mm256_loadu_si256((const __m256i*)(resi_v + j));
+ r2 = _mm256_unpacklo_epi16(zero, r1); // UV interlaced: uv0-uv4 uv8-uv12
+ r3 = _mm256_unpackhi_epi16(zero, r1);
+- r0 = _mm256_insertf128_si256(r2, _mm256_castsi256_si128(r3), 0x1); // uv0-uv8
+- r1 = _mm256_insertf128_si256(r3, _mm256_extracti128_si256(r2, 1), 0x0);
++ r0 = _mm256_permute2x128_si256(r2, r3, 0x20); // uv0-uv8
++ r1 = _mm256_permute2x128_si256(r2, r3, 0x31);
+ p0 = _mm256_adds_epi16(p0, r0);
+ p1 = _mm256_adds_epi16(p1, r1);
+
+diff --git a/source/decore/avx2/sao_avx2.c b/source/decore/avx2/sao_avx2.c
+index 73c01b4..7d2d527 100644
+--- a/source/decore/avx2/sao_avx2.c
++++ b/source/decore/avx2/sao_avx2.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/com_def.h b/source/decore/com_def.h
+index a8e9446..8b7ad27 100644
+--- a/source/decore/com_def.h
++++ b/source/decore/com_def.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -40,14 +35,18 @@
+
+ #include "com_sys.h"
+
+-#define BIT_DEPTH 8
+-
+ #define CHECK_RAND_STRM 0
+
+-#if (BIT_DEPTH == 8)
+-typedef u8 pel; /* pixel type */
++#ifndef COMPILE_10BIT
++#define COMPILE_10BIT 0
++#endif
++
++#if COMPILE_10BIT
++typedef unsigned short pel; /* pixel type */
++#define BIT_DEPTH 10
+ #else
+-typedef s16 pel; /* pixel type */
++typedef unsigned char pel; /* pixel type */
++#define BIT_DEPTH 8
+ #endif
+
+ /************************* profile & level **********************************************/
+diff --git a/source/decore/com_sys.h b/source/decore/com_sys.h
+index 0cb4359..2ea3237 100644
+--- a/source/decore/com_sys.h
++++ b/source/decore/com_sys.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/com_table.c b/source/decore/com_table.c
+index bbc40d9..2042e6d 100644
+--- a/source/decore/com_table.c
++++ b/source/decore/com_table.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/com_table.h b/source/decore/com_table.h
+index 2c2bb3d..c419405 100644
+--- a/source/decore/com_table.h
++++ b/source/decore/com_table.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/com_type.h b/source/decore/com_type.h
+index 5bb8337..0a7db50 100644
+--- a/source/decore/com_type.h
++++ b/source/decore/com_type.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/com_util.c b/source/decore/com_util.c
+index 7e374c9..353804b 100644
+--- a/source/decore/com_util.c
++++ b/source/decore/com_util.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/com_util.h b/source/decore/com_util.h
+index b6887bb..721a0c1 100644
+--- a/source/decore/com_util.h
++++ b/source/decore/com_util.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -41,10 +36,10 @@
+ #include "com_type.h"
+
+ /* function selection define based on platforms */
+-#if (defined(__ANDROID__) && defined(__aarch64__)) || (defined(__APPLE__) && defined(__arm64__))
++#if defined(_arm64) || (defined(__APPLE__) && defined(__arm64__))
+ #define ENABLE_FUNCTION_C 1
+ #define ENABLE_FUNCTION_ARM64 1
+-#elif (defined(__ANDROID__) && defined(__arm__)) || (defined(__APPLE__) && defined(__ARM_NEON__))
++#elif defined(_armv7a) || (defined(__APPLE__) && defined(__ARM_NEON__))
+ #define ENABLE_FUNCTION_C 1
+ #define ENABLE_FUNCTION_ARM32 1
+ #elif (defined(__WIN32__) || defined(_WIN32)) || (defined(__MACOSX__) || defined(macintosh) || defined(__linux__) || defined(__unix__)) && (defined(__i386__) || defined(__x86_64__) || defined(__AMD64__))
+diff --git a/source/decore/deblock.c b/source/decore/deblock.c
+index 0996c57..f9764d6 100644
+--- a/source/decore/deblock.c
++++ b/source/decore/deblock.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -65,7 +60,7 @@ static int uavs3d_always_inline skip_filter(com_map_t *map, com_ref_pic_t refp[M
+ {
+ com_scu_t MbQ = map->map_scu[scup + offset];
+ com_pic_t *q_pic0, *q_pic1;
+- const com_scu_t mask = {0, 0, 0, 0, 1, 0, 0};
++ const com_scu_t mask = {0, 1, 0, 0, 1, 0, 0};
+
+ if ((*(u8*)&MbQ) & (*(u8*)&mask)) {
+ return 0;
+@@ -210,7 +205,7 @@ void com_deblock_set_edge(com_core_t *core)
+ int scu_x = core->cu_pix_x >> MIN_CU_LOG2;
+ int scu_y = core->cu_pix_y >> MIN_CU_LOG2;
+ const int grad_mask = (LOOPFILTER_GRID >> 2) - 1;
+- const com_scu_t mask = { 0, 0, 0, 0, 1, 0, 0 };
++ const com_scu_t mask = { 0, 1, 0, 0, 1, 0, 0 };
+ com_scu_t scu = map->map_scu[scup];
+
+ if ((*(u8*)&scu) & (*(u8*)&mask)) {
+diff --git a/source/decore/inter_pred.c b/source/decore/inter_pred.c
+index c53d399..470c84c 100644
+--- a/source/decore/inter_pred.c
++++ b/source/decore/inter_pred.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -486,10 +481,10 @@ void uavs3d_always_inline com_affine_mc_chroma(com_core_t *core, pel *dstc, int
+ int max_posx = (seqhdr->pic_width + 4) >> 1;
+ int max_posy = (seqhdr->pic_height + 4) >> 1;
+ int i_asb_mv = cu_width >> 2;
+- s32(*asb_mv1)[MV_D] = asb_mv0 + i_asb_mv;
+ int i_src = ref_pic->stride_chroma;
+
+ if (sub_blk_size == 4) {
++ s32(*asb_mv1)[MV_D] = asb_mv0 + i_asb_mv;
+ for (h = 0; h < cu_height; h += 8) {
+ int base_y = (y + h) << 4;
+ for (w = 0; w < cu_width; w += 8, asb_mv0 += 2, asb_mv1 += 2) {
+diff --git a/source/decore/intra_pred.c b/source/decore/intra_pred.c
+index de1eef6..c767be0 100644
+--- a/source/decore/intra_pred.c
++++ b/source/decore/intra_pred.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -320,7 +315,7 @@ void ipred_plane(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
+ int ib_shift[5] = { 7, 10, 11, 15, 19 };
+ int idx_w = g_tbl_log2[w] - 2;
+ int idx_h = g_tbl_log2[h] - 2;
+- int im_h, is_h, im_v, is_v, temp, temp2;
++ int im_h, is_h, im_v, is_v, temp;
+ int max_pel = (1 << bit_depth) - 1;
+ int val;
+
+@@ -343,7 +338,7 @@ void ipred_plane(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
+ temp = a - (h2 - 1) * c - (w2 - 1) * b + 16;
+
+ for (y = 0; y < h; y++) {
+- temp2 = temp;
++ int temp2 = temp;
+ for (x = 0; x < w; x++) {
+ val = temp2 >> 5;
+ dst[x] = (pel)COM_CLIP3(0, max_pel, val);
+@@ -368,7 +363,7 @@ void ipred_plane_ipf(pel *src, s16 *dst, int w, int h)
+ int ib_shift[5] = { 7, 10, 11, 15, 19 };
+ int idx_w = g_tbl_log2[w] - 2;
+ int idx_h = g_tbl_log2[h] - 2;
+- int im_h, is_h, im_v, is_v, temp, temp2;
++ int im_h, is_h, im_v, is_v, temp;
+ im_h = ib_mult[idx_w];
+ is_h = ib_shift[idx_w];
+ im_v = ib_mult[idx_h];
+@@ -388,7 +383,7 @@ void ipred_plane_ipf(pel *src, s16 *dst, int w, int h)
+ temp = a - (h2 - 1) * c - (w2 - 1) * b + 16;
+
+ for (y = 0; y < h; y++) {
+- temp2 = temp;
++ int temp2 = temp;
+ for (x = 0; x < w; x++) {
+ dst[x] = (s16)(temp2 >> 5);
+ temp2 += b;
+@@ -416,7 +411,7 @@ void ipred_plane_uv(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
+ int idx_w = g_tbl_log2[w] - 2;
+ int idx_h = g_tbl_log2[h] - 2;
+ int im_h, is_h, im_v, is_v;
+- int temp_u, temp_v, temp2_u, temp2_v;
++ int temp_u, temp_v;
+ int max_pel = (1 << bit_depth) - 1;
+ int val_u, val_v;
+
+@@ -448,8 +443,8 @@ void ipred_plane_uv(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
+ temp_v = a_v - (h2 - 1) * c_v - (w2 - 1) * b_v + 16;
+
+ for (y = 0; y < h; y++) {
+- temp2_u = temp_u;
+- temp2_v = temp_v;
++ int temp2_u = temp_u;
++ int temp2_v = temp_v;
+ for (x = 0; x < width2; x += 2) {
+ val_u = temp2_u >> 5;
+ val_v = temp2_v >> 5;
+@@ -475,8 +470,7 @@ void ipred_bi(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
+ int ishift = COM_MIN(ishift_x, ishift_y);
+ int ishift_xy = ishift_x + ishift_y + 1;
+ int offset = 1 << (ishift_x + ishift_y);
+- int a, b, c, wt, wxy, tmp;
+- int predx;
++ int a, b, c, wt, tmp;
+ int ref_up[MAX_CU_SIZE], ref_le[MAX_CU_SIZE], up[MAX_CU_SIZE], le[MAX_CU_SIZE], wy[MAX_CU_SIZE];
+ int wc, tbl_wc[6] = {-1, 21, 13, 7, 4, 2};
+ int max_pel = (1 << bit_depth) - 1;
+@@ -510,8 +504,8 @@ void ipred_bi(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
+ tmp += wt;
+ }
+ for( y = 0; y < h; y++ ) {
+- predx = ref_le[y];
+- wxy = 0;
++ int predx = ref_le[y];
++ int wxy = 0;
+ for( x = 0; x < w; x++ ) {
+ predx += le[y];
+ ref_up[x] += up[x];
+@@ -534,8 +528,7 @@ void ipred_bi_ipf(pel *src, s16 *dst, int w, int h)
+ int ishift = COM_MIN(ishift_x, ishift_y);
+ int ishift_xy = ishift_x + ishift_y + 1;
+ int offset = 1 << (ishift_x + ishift_y);
+- int a, b, c, wt, wxy, tmp;
+- int predx;
++ int a, b, c, wt, tmp;
+ int ref_up[MAX_CU_SIZE], ref_le[MAX_CU_SIZE], up[MAX_CU_SIZE], le[MAX_CU_SIZE], wy[MAX_CU_SIZE];
+ int wc, tbl_wc[6] = { -1, 21, 13, 7, 4, 2 };
+ wc = ishift_x > ishift_y ? ishift_x - ishift_y : ishift_y - ishift_x;
+@@ -566,8 +559,8 @@ void ipred_bi_ipf(pel *src, s16 *dst, int w, int h)
+ tmp += wt;
+ }
+ for (y = 0; y < h; y++) {
+- predx = ref_le[y];
+- wxy = 0;
++ int predx = ref_le[y];
++ int wxy = 0;
+ for (x = 0; x < w; x++) {
+ predx += le[y];
+ ref_up[x] += up[x];
+@@ -589,9 +582,8 @@ void ipred_bi_uv(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
+ int ishift = COM_MIN(ishift_x, ishift_y);
+ int ishift_xy = ishift_x + ishift_y + 1;
+ int offset = 1 << (ishift_x + ishift_y);
+- int a_u, b_u, c_u, wt_u, wxy_u, tmp_u;
+- int a_v, b_v, c_v, wt_v, wxy_v, tmp_v;
+- int predx_u, predx_v;
++ int a_u, b_u, c_u, wt_u, tmp_u;
++ int a_v, b_v, c_v, wt_v, tmp_v;
+ int ref_up[MAX_CU_SIZE], ref_le[MAX_CU_SIZE], up[MAX_CU_SIZE], le[MAX_CU_SIZE], wy[MAX_CU_SIZE];
+ int wc, tbl_wc[6] = { -1, 21, 13, 7, 4, 2 };
+ int w2 = w << 1;
+@@ -640,9 +632,10 @@ void ipred_bi_uv(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
+ }
+ for (y = 0; y < h; y++) {
+ int y2 = y << 1;
+- predx_u = ref_le[y2 ];
+- predx_v = ref_le[y2 + 1];
+- wxy_u = wxy_v = 0;
++ int predx_u = ref_le[y2 ];
++ int predx_v = ref_le[y2 + 1];
++ int wxy_u = 0;
++ int wxy_v = 0;
+ for (x = 0; x < w2; x += 2) {
+ predx_u += le[y2];
+ predx_v += le[y2 + 1];
+@@ -1034,7 +1027,6 @@ static void uavs3d_always_inline ipf_core_s16(pel *src, pel *dst, int i_dst, s16
+ s32 filter_idx_ver = (s32)g_tbl_log2[h] - 2; //Block Size
+ s32 ver_filter_range = COM_MIN(h, 10);
+ s32 hor_filter_range = COM_MIN(w, 10);
+- int max_val = (1 << bit_depth) - 1;
+
+ // TODO: g_ipf_pred_param doesn't support 128
+ if (filter_idx_hor > 4) {
+@@ -1300,7 +1292,6 @@ static void xPredIntraAngAdi_X_8(pel *pSrc, pel *dst, int i_dst, int uiDirMode,
+ int line_size = iWidth + iHeight / 2 - 1;
+ int real_size = min(line_size, iWidth * 2 + 1);
+ int i;
+- int pad1, pad2;
+ int aligned_line_size = ((line_size + 15) >> 4) << 4;
+ pel *pfirst[2] = { first_line, first_line + aligned_line_size };
+
+@@ -1311,6 +1302,8 @@ static void xPredIntraAngAdi_X_8(pel *pSrc, pel *dst, int i_dst, int uiDirMode,
+
+ // padding
+ if (real_size < line_size) {
++ int pad1, pad2;
++
+ pfirst[1][real_size - 1] = pfirst[1][real_size - 2];
+
+ pad1 = pfirst[0][real_size - 1];
+@@ -1466,7 +1459,6 @@ static void xPredIntraAngAdi_Y_28(pel *pSrc, pel *dst, int i_dst, int uiDirMode,
+ int real_size = min(line_size, iHeight * 4 + 1);
+ int i;
+ int iHeight2 = iHeight << 1;
+- int pad1, pad2;
+
+ for (i = 0; i < real_size; i += 2, pSrc--) {
+ first_line[i] = (pSrc[0] + (pSrc[-1] + pSrc[-2]) * 3 + pSrc[-3] + 4) >> 3;
+@@ -1475,6 +1467,7 @@ static void xPredIntraAngAdi_Y_28(pel *pSrc, pel *dst, int i_dst, int uiDirMode,
+
+ // padding
+ if (real_size < line_size) {
++ int pad1, pad2;
+ first_line[i - 1] = first_line[i - 3];
+
+ pad1 = first_line[i - 2];
+diff --git a/source/decore/inv_trans.c b/source/decore/inv_trans.c
+index 2be533a..2d60b20 100644
+--- a/source/decore/inv_trans.c
++++ b/source/decore/inv_trans.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/modules.h b/source/decore/modules.h
+index 026d237..00d65b1 100644
+--- a/source/decore/modules.h
++++ b/source/decore/modules.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/pic_manager.c b/source/decore/pic_manager.c
+index 1c9be09..1a09a38 100644
+--- a/source/decore/pic_manager.c
++++ b/source/decore/pic_manager.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/recon.c b/source/decore/recon.c
+index c6466ba..951957a 100644
+--- a/source/decore/recon.c
++++ b/source/decore/recon.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/sao.c b/source/decore/sao.c
+index b39466d..9004046 100644
+--- a/source/decore/sao.c
++++ b/source/decore/sao.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/sse/alf_sse.c b/source/decore/sse/alf_sse.c
+index 2880605..24e203e 100644
+--- a/source/decore/sse/alf_sse.c
++++ b/source/decore/sse/alf_sse.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/sse/deblock_sse.c b/source/decore/sse/deblock_sse.c
+index 271c2fc..ab88636 100644
+--- a/source/decore/sse/deblock_sse.c
++++ b/source/decore/sse/deblock_sse.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/sse/inter_pred_sse.c b/source/decore/sse/inter_pred_sse.c
+index 170d079..7faf0d7 100644
+--- a/source/decore/sse/inter_pred_sse.c
++++ b/source/decore/sse/inter_pred_sse.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -55,25 +50,59 @@ void uavs3d_if_cpy_sse(const pel *src, int i_src, pel *dst, int i_dst, int width
+
+ void uavs3d_if_cpy_w4_sse(const pel *src, int i_src, pel *dst, int i_dst, int width, int height)
+ {
+- while (height) {
++ if (height < 4) {
+ CP32(dst, src);
+ CP32(dst + i_dst, src + i_src);
+- height -= 2;
+- src += i_src << 1;
+- dst += i_dst << 1;
++ }
++ else {
++ int i_src2 = i_src << 1;
++ int i_dst2 = i_dst << 1;
++ int i_src3 = i_src + i_src2;
++ int i_dst3 = i_dst + i_dst2;
++ int i_src4 = i_src << 2;
++ int i_dst4 = i_dst << 2;
++ while (height > 0) {
++ CP32(dst, src);
++ CP32(dst + i_dst, src + i_src);
++ CP32(dst + i_dst2, src + i_src2);
++ CP32(dst + i_dst3, src + i_src3);
++ height -= 4;
++ src += i_src4;
++ dst += i_dst4;
++ }
+ }
+ }
+
+ void uavs3d_if_cpy_w8_sse(const pel *src, int i_src, pel *dst, int i_dst, int width, int height)
+ {
+- int i_src2 = i_src << 1;
+- int i_dst2 = i_dst << 1;
+- while (height) {
+- CP64(dst, src);
+- CP64(dst + i_dst, src + i_src);
+- src += i_src2;
+- dst += i_dst2;
+- height -= 2;
++ if (height < 4) {
++ __m128i m0, m1;
++ m0 = _mm_loadl_epi64((const __m128i*)src);
++ m1 = _mm_loadl_epi64((const __m128i*)(src + i_src));
++ _mm_storel_epi64((__m128i*)dst, m0);
++ _mm_storel_epi64((__m128i*)(dst + i_dst), m1);
++ } else {
++ __m128i m0, m1, m2, m3;
++ int i_src2 = i_src << 1;
++ int i_dst2 = i_dst << 1;
++ int i_src3 = i_src + i_src2;
++ int i_dst3 = i_dst + i_dst2;
++ int i_src4 = i_src << 2;
++ int i_dst4 = i_dst << 2;
++ while (height) {
++ m0 = _mm_loadl_epi64((const __m128i*)src);
++ m1 = _mm_loadl_epi64((const __m128i*)(src + i_src));
++ m2 = _mm_loadl_epi64((const __m128i*)(src + i_src2));
++ m3 = _mm_loadl_epi64((const __m128i*)(src + i_src3));
++ height -= 4;
++ src += i_src4;
++
++ _mm_storel_epi64((__m128i*)dst, m0);
++ _mm_storel_epi64((__m128i*)(dst + i_dst), m1);
++ _mm_storel_epi64((__m128i*)(dst + i_dst2), m2);
++ _mm_storel_epi64((__m128i*)(dst + i_dst3), m3);
++ dst += i_dst4;
++ }
+ }
+ }
+
+@@ -371,7 +400,7 @@ void uavs3d_if_hor_luma_w8_sse(const pel *src, int i_src, pel *dst, int i_dst, i
+ height -= 2;
+
+ _mm_storel_epi64((__m128i*)dst, T0);
+- M64(dst + i_dst) = _mm_extract_epi64(T0, 1);
++ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(T0));
+
+ src += i_src << 1;
+ dst += i_dst << 1;
+@@ -512,7 +541,6 @@ void uavs3d_if_ver_chroma_w16x_sse(const pel *src, int i_src, pel *dst, int i_ds
+ const int offset = 32;
+ const int shift = 6;
+ __m128i mAddOffset = _mm_set1_epi16(offset);
+- pel const *p;
+ __m128i coeff0 = _mm_set1_epi16(*(s16*)coeff);
+ __m128i coeff1 = _mm_set1_epi16(*(s16*)(coeff + 2));
+ __m128i mVal1, mVal2;
+@@ -520,7 +548,7 @@ void uavs3d_if_ver_chroma_w16x_sse(const pel *src, int i_src, pel *dst, int i_ds
+ src -= i_src;
+
+ while (height--) {
+- p = src;
++ pel const *p = src;
+ uavs3d_prefetch(src + 4 * i_src, _MM_HINT_NTA);
+ for (col = 0; col < width; col += 16) {
+ __m128i T01 = _mm_loadu_si128((__m128i*)(p));
+@@ -739,7 +767,6 @@ void uavs3d_if_ver_luma_w16x_sse(const pel *src, int i_src, pel *dst, int i_dst,
+ int col;
+ const int offset = 32;
+ const int shift = 6;
+- pel const *p;
+ __m128i mAddOffset = _mm_set1_epi16(offset);
+ __m128i coeff0 = _mm_set1_epi16(*(s16*)coeff);
+ __m128i coeff1 = _mm_set1_epi16(*(s16*)(coeff + 2));
+@@ -750,7 +777,7 @@ void uavs3d_if_ver_luma_w16x_sse(const pel *src, int i_src, pel *dst, int i_dst,
+ src -= 3 * i_src;
+
+ while (height--) {
+- p = src;
++ pel const *p = src;
+ uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
+ for (col = 0; col < width; col += 16) {
+ __m128i T01 = _mm_loadu_si128((__m128i*)(p));
+@@ -811,7 +838,6 @@ void uavs3d_if_hor_ver_chroma_w8x_sse(const pel *src, int i_src, pel *dst, int i
+ {
+ int row, col;
+ int shift;
+- s16 const *p;
+ ALIGNED_16(s16 tmp_res[(64 + 3) * 64*2]);
+ s16 *tmp = tmp_res;
+ const int i_tmp = width;
+@@ -856,7 +882,7 @@ void uavs3d_if_hor_ver_chroma_w8x_sse(const pel *src, int i_src, pel *dst, int i
+ coeff1_ver = _mm_cvtepi8_epi16(coeff1_ver);
+
+ while (height--) {
+- p = tmp;
++ s16 const *p = tmp;
+ for (col = 0; col < width; col += 8) {
+ __m128i T00 = _mm_load_si128((__m128i*)(p));
+ __m128i T10 = _mm_load_si128((__m128i*)(p + i_tmp));
+@@ -1411,7 +1437,6 @@ void uavs3d_if_hor_ver_luma_w8x_sse(const pel *src, int i_src, pel *dst, int i_d
+ {
+ int row, col;
+ int shift;
+- s16 const *p;
+
+ ALIGNED_16(s16 tmp_res[(128 + 7) * 128]);
+ s16 *tmp = tmp_res;
+@@ -1473,7 +1498,7 @@ void uavs3d_if_hor_ver_luma_w8x_sse(const pel *src, int i_src, pel *dst, int i_d
+ mCoefy4_ver = _mm_cvtepi8_epi16(mCoefy4_ver);
+
+ while (height--) {
+- p = tmp;
++ s16 const *p = tmp;
+ for (col = 0; col < width; col += 8) {
+ __m128i T00 = _mm_load_si128((__m128i*)(p));
+ __m128i T10 = _mm_load_si128((__m128i*)(p + i_tmp));
+@@ -2315,14 +2340,13 @@ void uavs3d_if_hor_ver_luma_w8_sse(const pel *src, int i_src, pel *dst, int i_ds
+ int rows;
+ int add1, shift1;
+ int add2, shift2;
+- __m128i T0, T1, T2, T3, T4, T5, T6, T7;
++ __m128i T0, T1, T2, T3, T4, T5;
+ __m128i M0, M1, M2, M3, M4, M5, M6, M7;
+- __m128i N0, N1, N2, N3, N4, N5, N6, N7;
+- __m128i mCoef, offset, max_pel;
++ __m128i offset, max_pel;
+ ALIGNED_16(s16 tmp_res[(64 + 7) * 8]);
+ s16 *tmp = tmp_res;
+ const int i_tmp = 8;
+- __m128i coeff00, coeff01, coeff02, coeff03;
++ __m128i mCoef0, mCoef1, mCoef2, mCoef3;
+
+ if (max_val == 255) { // 8 bit_depth
+ shift1 = 0;
+@@ -2338,110 +2362,129 @@ void uavs3d_if_hor_ver_luma_w8_sse(const pel *src, int i_src, pel *dst, int i_ds
+
+ src += -3 * i_src - 3;
+
+- mCoef = _mm_loadl_epi64((__m128i*)coef_x);
+- offset = _mm_set1_epi32(add1);
+- mCoef = _mm_cvtepi8_epi16(mCoef);
+-
+- // HOR
+- rows = height + 7;
+- while (rows--) {
+- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
+- T0 = _mm_loadu_si128((__m128i*)(src + 0));
+- T1 = _mm_loadu_si128((__m128i*)(src + 1));
+- T2 = _mm_loadu_si128((__m128i*)(src + 2));
+- T3 = _mm_loadu_si128((__m128i*)(src + 3));
+- T4 = _mm_loadu_si128((__m128i*)(src + 4));
+- T5 = _mm_loadu_si128((__m128i*)(src + 5));
+- T6 = _mm_loadu_si128((__m128i*)(src + 6));
+- T7 = _mm_loadu_si128((__m128i*)(src + 7));
+-
+- M0 = _mm_madd_epi16(T0, mCoef);
+- M1 = _mm_madd_epi16(T1, mCoef);
+- M2 = _mm_madd_epi16(T2, mCoef);
+- M3 = _mm_madd_epi16(T3, mCoef);
+- M4 = _mm_madd_epi16(T4, mCoef);
+- M5 = _mm_madd_epi16(T5, mCoef);
+- M6 = _mm_madd_epi16(T6, mCoef);
+- M7 = _mm_madd_epi16(T7, mCoef);
++ {
++ __m128i mShuffle0 = _mm_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
++ __m128i mShuffle1 = _mm_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
++ __m128i S0, S1, S2;
++
++ mCoef0 = _mm_set1_epi16(((s16*)coef_x)[0]);
++ mCoef1 = _mm_set1_epi16(((s16*)coef_x)[1]);
++ mCoef2 = _mm_set1_epi16(((s16*)coef_x)[2]);
++ mCoef3 = _mm_set1_epi16(((s16*)coef_x)[3]);
++ mCoef0 = _mm_cvtepi8_epi16(mCoef0);
++ mCoef1 = _mm_cvtepi8_epi16(mCoef1);
++ mCoef2 = _mm_cvtepi8_epi16(mCoef2);
++ mCoef3 = _mm_cvtepi8_epi16(mCoef3);
++ offset = _mm_set1_epi32(add1);
++
++ // HOR
++ rows = height + 7;
++ while (rows--) {
++ S0 = _mm_loadu_si128((__m128i*)(src));
++ S1 = _mm_loadu_si128((__m128i*)(src + 4));
++ S2 = _mm_loadu_si128((__m128i*)(src + 8));
++ src += i_src;
++ uavs3d_prefetch(src, _MM_HINT_NTA);
++
++ T0 = _mm_shuffle_epi8(S0, mShuffle0);
++ T1 = _mm_shuffle_epi8(S0, mShuffle1);
++ T2 = _mm_shuffle_epi8(S1, mShuffle0);
++ T3 = _mm_shuffle_epi8(S1, mShuffle1);
++ T4 = _mm_shuffle_epi8(S2, mShuffle0);
++ T5 = _mm_shuffle_epi8(S2, mShuffle1);
++
++ M0 = _mm_madd_epi16(T0, mCoef0);
++ M1 = _mm_madd_epi16(T1, mCoef1);
++ M2 = _mm_madd_epi16(T2, mCoef2);
++ M3 = _mm_madd_epi16(T3, mCoef3);
++ M4 = _mm_madd_epi16(T2, mCoef0);
++ M5 = _mm_madd_epi16(T3, mCoef1);
++ M6 = _mm_madd_epi16(T4, mCoef2);
++ M7 = _mm_madd_epi16(T5, mCoef3);
+
+- M0 = _mm_hadd_epi32(M0, M1);
+- M1 = _mm_hadd_epi32(M2, M3);
+- M2 = _mm_hadd_epi32(M4, M5);
+- M3 = _mm_hadd_epi32(M6, M7);
++ M0 = _mm_add_epi32(M0, M1);
++ M1 = _mm_add_epi32(M2, M3);
++ M2 = _mm_add_epi32(M4, M5);
++ M3 = _mm_add_epi32(M6, M7);
+
+- M0 = _mm_hadd_epi32(M0, M1);
+- M1 = _mm_hadd_epi32(M2, M3);
++ M0 = _mm_add_epi32(M0, M1);
++ M1 = _mm_add_epi32(M2, M3);
+
+- M2 = _mm_add_epi32(M0, offset);
+- M3 = _mm_add_epi32(M1, offset);
+- M2 = _mm_srai_epi32(M2, shift1);
+- M3 = _mm_srai_epi32(M3, shift1);
+- M2 = _mm_packs_epi32(M2, M3);
+- _mm_storeu_si128((__m128i*)tmp, M2);
++ M2 = _mm_add_epi32(M0, offset);
++ M3 = _mm_add_epi32(M1, offset);
++ M2 = _mm_srai_epi32(M2, shift1);
++ M3 = _mm_srai_epi32(M3, shift1);
++ M2 = _mm_packs_epi32(M2, M3);
++ _mm_store_si128((__m128i*)tmp, M2);
+
+- tmp += i_tmp;
+- src += i_src;
++ tmp += i_tmp;
++ }
+ }
+
+- offset = _mm_set1_epi32(add2);
+- max_pel = _mm_set1_epi16((pel)max_val);
+- tmp = tmp_res;
+-
+- coeff00 = _mm_set1_epi16(*(s16*)coef_y);
+- coeff01 = _mm_set1_epi16(*(s16*)(coef_y + 2));
+- coeff02 = _mm_set1_epi16(*(s16*)(coef_y + 4));
+- coeff03 = _mm_set1_epi16(*(s16*)(coef_y + 6));
+- coeff00 = _mm_cvtepi8_epi16(coeff00);
+- coeff01 = _mm_cvtepi8_epi16(coeff01);
+- coeff02 = _mm_cvtepi8_epi16(coeff02);
+- coeff03 = _mm_cvtepi8_epi16(coeff03);
+-
+- while (height--) {
+- T0 = _mm_load_si128((__m128i*)(tmp));
+- T1 = _mm_load_si128((__m128i*)(tmp + i_tmp));
+- T2 = _mm_load_si128((__m128i*)(tmp + 2 * i_tmp));
+- T3 = _mm_load_si128((__m128i*)(tmp + 3 * i_tmp));
+- T4 = _mm_load_si128((__m128i*)(tmp + 4 * i_tmp));
+- T5 = _mm_load_si128((__m128i*)(tmp + 5 * i_tmp));
+- T6 = _mm_load_si128((__m128i*)(tmp + 6 * i_tmp));
+- T7 = _mm_load_si128((__m128i*)(tmp + 7 * i_tmp));
++ {
++ __m128i N0, N1, N2, N3, N4, N5, N6, N7;
++ __m128i T6, T7;
++
++ offset = _mm_set1_epi32(add2);
++ max_pel = _mm_set1_epi16((pel)max_val);
++ tmp = tmp_res;
++
++ mCoef0 = _mm_set1_epi16(((s16*)coef_y)[0]);
++ mCoef1 = _mm_set1_epi16(((s16*)coef_y)[1]);
++ mCoef2 = _mm_set1_epi16(((s16*)coef_y)[2]);
++ mCoef3 = _mm_set1_epi16(((s16*)coef_y)[3]);
++ mCoef0 = _mm_cvtepi8_epi16(mCoef0);
++ mCoef1 = _mm_cvtepi8_epi16(mCoef1);
++ mCoef2 = _mm_cvtepi8_epi16(mCoef2);
++ mCoef3 = _mm_cvtepi8_epi16(mCoef3);
++
++ while (height--) {
++ T0 = _mm_load_si128((__m128i*)(tmp));
++ T1 = _mm_load_si128((__m128i*)(tmp + i_tmp));
++ T2 = _mm_load_si128((__m128i*)(tmp + 2 * i_tmp));
++ T3 = _mm_load_si128((__m128i*)(tmp + 3 * i_tmp));
++ T4 = _mm_load_si128((__m128i*)(tmp + 4 * i_tmp));
++ T5 = _mm_load_si128((__m128i*)(tmp + 5 * i_tmp));
++ T6 = _mm_load_si128((__m128i*)(tmp + 6 * i_tmp));
++ T7 = _mm_load_si128((__m128i*)(tmp + 7 * i_tmp));
+
+- M0 = _mm_unpacklo_epi16(T0, T1);
+- M1 = _mm_unpacklo_epi16(T2, T3);
+- M2 = _mm_unpacklo_epi16(T4, T5);
+- M3 = _mm_unpacklo_epi16(T6, T7);
+- M4 = _mm_unpackhi_epi16(T0, T1);
+- M5 = _mm_unpackhi_epi16(T2, T3);
+- M6 = _mm_unpackhi_epi16(T4, T5);
+- M7 = _mm_unpackhi_epi16(T6, T7);
++ M0 = _mm_unpacklo_epi16(T0, T1);
++ M1 = _mm_unpacklo_epi16(T2, T3);
++ M2 = _mm_unpacklo_epi16(T4, T5);
++ M3 = _mm_unpacklo_epi16(T6, T7);
++ M4 = _mm_unpackhi_epi16(T0, T1);
++ M5 = _mm_unpackhi_epi16(T2, T3);
++ M6 = _mm_unpackhi_epi16(T4, T5);
++ M7 = _mm_unpackhi_epi16(T6, T7);
+
+- N0 = _mm_madd_epi16(M0, coeff00);
+- N1 = _mm_madd_epi16(M1, coeff01);
+- N2 = _mm_madd_epi16(M2, coeff02);
+- N3 = _mm_madd_epi16(M3, coeff03);
+- N4 = _mm_madd_epi16(M4, coeff00);
+- N5 = _mm_madd_epi16(M5, coeff01);
+- N6 = _mm_madd_epi16(M6, coeff02);
+- N7 = _mm_madd_epi16(M7, coeff03);
++ N0 = _mm_madd_epi16(M0, mCoef0);
++ N1 = _mm_madd_epi16(M1, mCoef1);
++ N2 = _mm_madd_epi16(M2, mCoef2);
++ N3 = _mm_madd_epi16(M3, mCoef3);
++ N4 = _mm_madd_epi16(M4, mCoef0);
++ N5 = _mm_madd_epi16(M5, mCoef1);
++ N6 = _mm_madd_epi16(M6, mCoef2);
++ N7 = _mm_madd_epi16(M7, mCoef3);
+
+- N0 = _mm_add_epi32(N0, N1);
+- N1 = _mm_add_epi32(N2, N3);
+- N2 = _mm_add_epi32(N4, N5);
+- N3 = _mm_add_epi32(N6, N7);
++ N0 = _mm_add_epi32(N0, N1);
++ N1 = _mm_add_epi32(N2, N3);
++ N2 = _mm_add_epi32(N4, N5);
++ N3 = _mm_add_epi32(N6, N7);
+
+- N0 = _mm_add_epi32(N0, N1);
+- N1 = _mm_add_epi32(N2, N3);
++ N0 = _mm_add_epi32(N0, N1);
++ N1 = _mm_add_epi32(N2, N3);
+
+- N0 = _mm_add_epi32(N0, offset);
+- N1 = _mm_add_epi32(N1, offset);
+- N0 = _mm_srai_epi32(N0, shift2);
+- N1 = _mm_srai_epi32(N1, shift2);
+- N0 = _mm_packus_epi32(N0, N1);
+- N0 = _mm_min_epu16(N0, max_pel);
+- _mm_storeu_si128((__m128i*)(dst), N0);
++ N0 = _mm_add_epi32(N0, offset);
++ N1 = _mm_add_epi32(N1, offset);
++ N0 = _mm_srai_epi32(N0, shift2);
++ N1 = _mm_srai_epi32(N1, shift2);
++ N0 = _mm_packus_epi32(N0, N1);
++ N0 = _mm_min_epu16(N0, max_pel);
++ _mm_storeu_si128((__m128i*)(dst), N0);
+
+- dst += i_dst;
+- tmp += i_tmp;
++ dst += i_dst;
++ tmp += i_tmp;
++ }
+ }
+ }
+
+diff --git a/source/decore/sse/intra_pred_sse.c b/source/decore/sse/intra_pred_sse.c
+index b877834..d77b556 100644
+--- a/source/decore/sse/intra_pred_sse.c
++++ b/source/decore/sse/intra_pred_sse.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -713,13 +708,14 @@ void uavs3d_ipred_chroma_hor_sse(pel *src, pel *dst, int i_dst, int width, int h
+
+ void uavs3d_ipred_dc_sse(pel *src, pel *dst, int i_dst, int width, int height, u16 avail_cu, int bit_depth)
+ {
+- int i, x, y;
++ int x, y;
+ int dc;
+ pel *p_src = src - 1;
+ int left_avail = IS_AVAIL(avail_cu, AVAIL_LE);
+ int above_avail = IS_AVAIL(avail_cu, AVAIL_UP);
+
+ if (left_avail && above_avail) {
++ int i;
+ int length = width + height + 1;
+ __m128i sum = _mm_setzero_si128();
+ __m128i val;
+@@ -828,7 +824,7 @@ void uavs3d_ipred_dc_sse(pel *src, pel *dst, int i_dst, int width, int height, u
+ void uavs3d_ipred_chroma_dc_sse(pel *src, pel *dst, int i_dst, int width, int height, u16 avail_cu, int bit_depth)
+ {
+ __m128i T;
+- int i, x, y;
++ int x, y;
+ int dcU, dcV;
+ pel *p_src = src - 2;
+ int left_avail = IS_AVAIL(avail_cu, AVAIL_LE);
+@@ -838,6 +834,7 @@ void uavs3d_ipred_chroma_dc_sse(pel *src, pel *dst, int i_dst, int width, int he
+ int height2 = height << 1;
+ int wh = width + height;
+ int length = (wh << 1) + 2; // 2*(width + height + 1)
++ int i;
+ __m128i sum = _mm_setzero_si128();
+ __m128i val;
+
+@@ -1787,7 +1784,6 @@ void uavs3d_ipred_ipf_s16_sse(pel *src, pel *dst, int i_dst, s16* pred, int flt_
+ {
+ pel *p_top = src + 1;
+ int row;
+- int max_val = (1 << bit_depth) - 1;
+ __m128i c_32 = _mm_set1_epi16(32);
+ __m128i zero = _mm_setzero_si128();
+ if (w == 4) {
+diff --git a/source/decore/sse/itrans_sse.c b/source/decore/sse/itrans_sse.c
+index f7a5051..217e88e 100644
+--- a/source/decore/sse/itrans_sse.c
++++ b/source/decore/sse/itrans_sse.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/sse/pixel_sse.c b/source/decore/sse/pixel_sse.c
+index 46ce33f..804b71d 100644
+--- a/source/decore/sse/pixel_sse.c
++++ b/source/decore/sse/pixel_sse.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/sse/sao_sse.c b/source/decore/sse/sao_sse.c
+index 3459b3e..5f4723b 100644
+--- a/source/decore/sse/sao_sse.c
++++ b/source/decore/sse/sao_sse.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/sse/sse.c b/source/decore/sse/sse.c
+index cb8c119..570edf5 100644
+--- a/source/decore/sse/sse.c
++++ b/source/decore/sse/sse.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/source/decore/sse/sse.h b/source/decore/sse/sse.h
+index 967808a..4e10ab7 100644
+--- a/source/decore/sse/sse.h
++++ b/source/decore/sse/sse.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -45,12 +40,18 @@
+
+ #include "modules.h"
+
+-#ifdef _WIN32
+-
+-#ifndef _WIN64
+-#define _mm_extract_epi64(a, i) (a.m128i_i64[i])
+-#endif
+-
++#if __x86_64__
++#elif __i386__ && !defined(_mm_extract_epi64)
++#define _mm_extract_epi64 _mm_extract_epi64
++#include <stdint.h>
++static inline int64_t _mm_extract_epi64(__m128i a, const int imm8) {
++ return imm8 ? ((int64_t)_mm_extract_epi16(a, 7) << 48) |
++ ((int64_t)_mm_extract_epi16(a, 6) << 32) |
++ (_mm_extract_epi16(a, 5) << 16) | _mm_extract_epi16(a, 4)
++ : ((int64_t)_mm_extract_epi16(a, 3) << 48) |
++ ((int64_t)_mm_extract_epi16(a, 2) << 32) |
++ (_mm_extract_epi16(a, 1) << 16) | _mm_extract_epi16(a, 0);
++}
+ #endif
+
+ ALIGNED_32(extern pel uavs3d_simd_mask[15][16]);
+diff --git a/source/decore/threadpool.h b/source/decore/threadpool.h
+index 3370beb..6a74bac 100644
+--- a/source/decore/threadpool.h
++++ b/source/decore/threadpool.h
+@@ -11,9 +11,6 @@ typedef volatile long atom_t; // 32 bits, signed
+ #if defined(_WIN32)
+ #include "win32thread.h"
+ #else
+-
+-#pragma comment(lib, "pthreadVC2.lib")
+-
+ #include <pthread.h>
+ #define uavs3d_pthread_t pthread_t
+ #define uavs3d_pthread_create pthread_create
+diff --git a/test/utest.c b/test/utest.c
+index 724c7d8..e4df366 100644
+--- a/test/utest.c
++++ b/test/utest.c
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+@@ -202,8 +197,8 @@ static int app_img_write(char * fname, uavs3d_io_frm_t * img, com_seqh_t *seqhdr
+ return -1;
+ }
+ for (i = 0; i < 3; i++) {
+- int hor_size = seqhdr->horizontal_size >> (i ? 1 : 0);
+- int ver_size = seqhdr->vertical_size >> (i ? 1 : 0);
++ int hor_size = seqhdr->display_horizontal_size >> (i ? 1 : 0);
++ int ver_size = seqhdr->display_vertical_size >> (i ? 1 : 0);
+ unsigned char * p8 = (unsigned char *)img->buffer[i];
+
+ for (j = 0; j < ver_size; j++) {
+@@ -412,10 +407,13 @@ void output_callback(uavs3d_io_frm_t *frm) {
+ }
+
+ #if defined(__APPLE__) && (defined(__arm64__) || defined(__ARM_NEON__))
+-int uavs3d_decode_sample(int argc, const char **argv)
+-#else
+-int main(int argc, const char **argv)
++#include <TargetConditionals.h>
++#if !TARGET_OS_OSX
++#define main uavs3d_decode_sample
++#endif
+ #endif
++
++int main(int argc, const char **argv)
+ {
+ int decoding = 1;
+ unsigned char * bs_buf = NULL;
+@@ -465,7 +463,7 @@ int main(int argc, const char **argv)
+ dec_cfg.log_level = 1;
+ dec_cfg.frm_threads = 1;
+
+- if (argc < 2) {
++ if ((argc < 2) || !(argc % 2)) {
+ log_level_0("Error config, please check arguments: \n");
+ print_help();
+ return -1;
+@@ -588,8 +586,8 @@ finished:
+ if (frame_num) {
+ width = dec_frame.width[0];
+ height = dec_frame.height[0];
+- hor_size = dec_frame.seqhdr->horizontal_size;
+- ver_size = dec_frame.seqhdr->vertical_size;
++ hor_size = dec_frame.seqhdr->display_horizontal_size;
++ ver_size = dec_frame.seqhdr->display_vertical_size;
+
+ log_level_1("=========================================================================================\n");
+ log_level_1(" Resolution = %d x %d (Coding: %d x %d)\n", hor_size, ver_size, width, height);
+diff --git a/test/utest.h b/test/utest.h
+index aceb8a4..1dbd239 100644
+--- a/test/utest.h
++++ b/test/utest.h
+@@ -1,5 +1,5 @@
+ /**************************************************************************************
+- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
++ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
+ * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
+ *
+ * All rights reserved.
+@@ -11,12 +11,7 @@
+ * 2. 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.
+- * 3. All advertising materials mentioning features or use of this software
+- * must display the following acknowledgement:
+- * This product includes the software uAVS3d developed by
+- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
+- * and Guangdong Bohua UHD Innovation Corporation.
+- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
++ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
+ * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+diff --git a/version.sh b/version.sh
+index 65e2df7..034d454 100755
+--- a/version.sh
++++ b/version.sh
+@@ -15,12 +15,12 @@ else
+ shell_dir=$1
+ fi
+
+-VER_R=`git rev-list origin/master | sort | wc -l | gawk '{print $1}'`
+-VER_L=`git rev-list HEAD | sort | wc -l | gawk '{print $1}'`
++VER_R=`git rev-list origin/master | sort | wc -l | awk '{print $1}'`
++VER_L=`git rev-list HEAD | sort | wc -l | awk '{print $1}'`
+ VER_SHA1=`git log -n 1 | head -n 1 | cut -d ' ' -f 2`
+
+ major_version="1"
+-minor_version="1"
++minor_version="2"
+ type_version="release"
+
+ # generate the file version.h
diff --git a/multimedia/uavs3d/fix-libdir-in-cmakelists.patch b/multimedia/uavs3d/fix-libdir-in-cmakelists.patch
new file mode 100644
index 0000000000..375a1e87e2
--- /dev/null
+++ b/multimedia/uavs3d/fix-libdir-in-cmakelists.patch
@@ -0,0 +1,25 @@
+--- /home/ben/sbo/ff/uavs3d/source/CMakeLists.txt 2024-02-21 15:38:58.265755999 +0530
++++ /home/ben/sbo/ff/uavs3d/source/CMakeListsn.txt 2024-02-21 16:03:45.133751729 +0530
+@@ -13,6 +13,8 @@
+ " Unexpected pointer size ${CMAKE_SIZEOF_VOID_P} for ${CMAKE_SYSTEM_PROCESSOR}\n")
+ endif()
+ elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386" OR
++ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i586" OR
++ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686" OR
+ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86")
+ set(UAVS3D_TARGET_CPU "x86")
+ elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64" OR
+@@ -109,7 +111,13 @@
+ find_package(Threads REQUIRED)
+ set(prefix "${CMAKE_INSTALL_PREFIX}")
+ set(includedir "include")
++if(${CMAKE_SIZEOF_VOID_P} EQUAL 4)
+ set(libdir "lib")
++elseif(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
++set(libdir "lib64")
++else()
++message(FATAL_ERROR " Compiling for wrong architecture in Slackware GNU/Linux \n")
++endif()
+ set(pc_file "${CONFIG_DIR}/${LIBNAME}.pc")
+
+ set(CMAKE_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/${includedir}")
diff --git a/multimedia/gtkpod/slack-desc b/multimedia/uavs3d/slack-desc
index 253cb62020..8779b976d1 100644
--- a/multimedia/gtkpod/slack-desc
+++ b/multimedia/uavs3d/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-gtkpod: gtkpod (iPod Manager)
-gtkpod:
-gtkpod: gtkpod is a graphical user interface for the Apple iPod for
-gtkpod: Unix-like systems, written using the GTK+ toolkit.
-gtkpod:
-gtkpod: Homepage: http://www.gtkpod.org/wiki/Home
-gtkpod:
-gtkpod:
-gtkpod:
-gtkpod:
-gtkpod:
+uavs3d: uavs3d (AVS3 Decoder)
+uavs3d:
+uavs3d: uavs3d is an open source and cross platform avs3 decoder
+uavs3d:
+uavs3d: Homepage: https://github.com/uavs3/uavs3d
+uavs3d:
+uavs3d:
+uavs3d:
+uavs3d:
+uavs3d:
+uavs3d:
diff --git a/multimedia/uavs3d/uavs3d.SlackBuild b/multimedia/uavs3d/uavs3d.SlackBuild
new file mode 100644
index 0000000000..141e072f29
--- /dev/null
+++ b/multimedia/uavs3d/uavs3d.SlackBuild
@@ -0,0 +1,116 @@
+#!/bin/bash
+
+# Slackware build script for uavs3d
+
+# Copyright 2022-24 Vijay Marcel
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=uavs3d
+VERSION=${VERSION:-1.1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+sys_arch=${sys_arch:-$(uname -m)}
+
+case "$sys_arch" in
+ i586) export ARCH=i586 ;;
+ i686) export ARCH=i686 ;;
+ x86_64) export ARCH=x86_64 ;;
+ *) echo "This program will not build on $sys_arch platform" && exit 1 ;;
+esac
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-march=i586 -mtune=i686 -O2 -pipe -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-march=i686 -mtune=i686 -O2 -pipe -fPIC"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ echo "This program will not build on $sys_arch platform" && exit 1
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+patch -p1 --verbose --unified < $CWD/fix-build-issue.patch
+cd source
+patch --verbose --unified < $CWD/fix-libdir-in-cmakelists.patch
+cd ..
+
+mkdir -pv build/linux
+
+cmake -B build/linux -S $TMP/$PRGNAM-$VERSION \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_BUILD_TYPE:STRING=Release \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_INSTALL_LIB_DIR:PATH=/usr/lib${LIBDIRSUFFIX} \
+ -DBUILD_SHARED_LIBS:BOOL=ON \
+ -DCOMPILE_10BIT=1
+
+cmake --build build/linux
+
+make -C $TMP/$PRGNAM-$VERSION/build/linux DESTDIR="$PKG" install
+
+install -D -m755 $TMP/$PRGNAM-$VERSION/build/linux/uavs3dec -t "$PKG/usr/bin"
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded --remove-section=.comment --remove-section=.note 2> /dev/null || true
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+mkdir -pv $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/uavs3d/uavs3d.info b/multimedia/uavs3d/uavs3d.info
new file mode 100644
index 0000000000..ee0adc5d16
--- /dev/null
+++ b/multimedia/uavs3d/uavs3d.info
@@ -0,0 +1,10 @@
+PRGNAM="uavs3d"
+VERSION="1.1"
+HOMEPAGE="https://github.com/uavs3/uavs3d"
+DOWNLOAD="https://github.com/uavs3/uavs3d/archive/v1.1/uavs3d-1.1.tar.gz"
+MD5SUM="a22d9d4f1da4d1e2d0b19a25754505c3"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/uavs3e/README b/multimedia/uavs3e/README
new file mode 100644
index 0000000000..28e015ad27
--- /dev/null
+++ b/multimedia/uavs3e/README
@@ -0,0 +1,3 @@
+uavs3e ia an open source and cross platform avs3 encoder.
+It supports AVS3-P2 baseline profile.
+
diff --git a/multimedia/uavs3e/changelog b/multimedia/uavs3e/changelog
new file mode 100644
index 0000000000..2e76dfcc48
--- /dev/null
+++ b/multimedia/uavs3e/changelog
@@ -0,0 +1,26 @@
+Changelog for the uavs3e SlackBuild script.
+--------------------------------------------------
+
+03/09/2022:
+
+Added to SBo.
+
+06/02/2023:
+
+When compiling on 32-bit systems you will run
+into an error during the linking stage with
+the error being: undefined reference to
+_mm_extract_epi64, even if you patched the
+CMakeLists.txt and adding the CFLAGS not
+to detect the AVX2 and SSE4.1 flags it will not
+work because then you will have another error-
+incompatible types when initializing type _m128i
+using type 'int' in the file cost_avx2.c in the
+src directory.So in short uavs3e is not
+supported on x86 or ARM-32 bit architecture.
+patched the CMakeLists to set the libdir properly.
+
+
+21/02/2023:
+
+Fixed the Slackbuild script and resubmitted to SBo.
diff --git a/multimedia/uavs3e/cmakelist.patch b/multimedia/uavs3e/cmakelist.patch
new file mode 100644
index 0000000000..8b64a40309
--- /dev/null
+++ b/multimedia/uavs3e/cmakelist.patch
@@ -0,0 +1,21 @@
+--- CMakeLists.txt 2022-08-23 14:57:53.000000000 +0530
++++ cmakelistn.txt 2023-02-06 18:26:55.129000000 +0530
+@@ -1,9 +1,9 @@
+-cmake_minimum_required(VERSION 2.8)
++cmake_minimum_required(VERSION 3.10)
+
+ project(uavs3e)
+
+ aux_source_directory(./test DIR_SRC_TEST)
+-set_source_files_properties(${DIR_SRC_TEST} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -std=c99 -O3")
++set_source_files_properties(${DIR_SRC_TEST} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -std=c99 -O2")
+
+ add_subdirectory(./src)
+ include_directories("./inc")
+@@ -20,5 +20,4 @@
+
+ target_link_libraries(uavs3enc m)
+ target_link_libraries(uavs3enc uavs3e)
+-#target_link_libraries(uavs3enc dl)
+-
++target_link_libraries(uavs3enc dl)
diff --git a/multimedia/ffmpeg/slack-desc b/multimedia/uavs3e/slack-desc
index 6d47b332b4..e3ee05a48a 100644
--- a/multimedia/ffmpeg/slack-desc
+++ b/multimedia/uavs3e/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-ffmpeg: ffmpeg (Software to record, convert and stream audio and video)
-ffmpeg:
-ffmpeg: FFmpeg is a complete solution to record, convert and stream audio
-ffmpeg: and video. It includes libavcodec, the leading audio/video codec
-ffmpeg: library. FFmpeg is developed under Linux, but it can compiled
-ffmpeg: under most operating systems, including Windows.
-ffmpeg:
-ffmpeg: Homepage: http://ffmpeg.mplayerhq.hu
-ffmpeg:
-ffmpeg:
-ffmpeg:
+uavs3e: uavs3e (AVS3 Encoder)
+uavs3e:
+uavs3e: uavs3e ia an open source and cross platform avs3 encoder.
+uavs3e: It supports AVS3-P2 baseline profile.This is the
+uavs3e: 10-bit version of the encoder.
+uavs3e:
+uavs3e: Homepage:https://github.com/uavs3/uavs3e
+uavs3e:
+uavs3e:
+uavs3e:
+uavs3e:
diff --git a/multimedia/uavs3e/src_cmakelist.patch b/multimedia/uavs3e/src_cmakelist.patch
new file mode 100644
index 0000000000..f8ec5e52fc
--- /dev/null
+++ b/multimedia/uavs3e/src_cmakelist.patch
@@ -0,0 +1,54 @@
+--- CMakeLists.txt 2022-08-23 14:57:53.000000000 +0530
++++ CMakeLists1.txt 2023-02-20 23:29:17.032740887 +0530
+@@ -1,6 +1,25 @@
+-
++cmake_minimum_required(VERSION 3.10)
+ set(LIBNAME uavs3e)
+
++# check cpu
++
++if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386" OR
++ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i486" OR
++ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i586" OR
++ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686" OR
++ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86")
++ message(FATAL_ERROR "Uavs3e Encoder does not run on 32-bit x86 systems \n")
++elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm")
++ mesasage(FATAL_ERROR "Uavs3e Encoder does not run on 32-bit ARM systems \n")
++elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm64")
++ message(STATUS "System Architecture is ARM-64 bit it runs on ARMv8 processor \n")
++elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR
++ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
++ message(STATUS "System Architecture is x86_64 \n")
++else()
++ message(FATAL_ERROR "This Program will not run on this platform, aborting... \n")
++endif()
++
+ # add source
+ aux_source_directory(. DIR_UAVS3E_SRC)
+ if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm64")
+@@ -36,9 +55,9 @@
+ add_definitions(-DCOMPILE_10BIT=0)
+ endif()
+
+-set_source_files_properties(${DIR_UAVS3E_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O3")
+-set_source_files_properties(${DIR_X86_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O3 -msse4.2")
+-set_source_files_properties(${DIR_X86_256_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O3 -mavx2")
++set_source_files_properties(${DIR_UAVS3E_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O2")
++set_source_files_properties(${DIR_X86_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O2 -msse4.2")
++set_source_files_properties(${DIR_X86_256_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O2 -mavx2")
+
+ # get version
+ set (CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..)
+@@ -59,7 +78,11 @@
+ find_package(Threads REQUIRED)
+ set(prefix "${CMAKE_INSTALL_PREFIX}")
+ set(includedir "include")
++if(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
++set(libdir "lib64")
++else()
+ set(libdir "lib")
++endif()
+ set(pc_file "${CONFIG_DIR}/${LIBNAME}.pc")
+
+ set(CMAKE_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/${includedir}")
diff --git a/multimedia/uavs3e/uavs3e.SlackBuild b/multimedia/uavs3e/uavs3e.SlackBuild
new file mode 100644
index 0000000000..d7088cdce0
--- /dev/null
+++ b/multimedia/uavs3e/uavs3e.SlackBuild
@@ -0,0 +1,120 @@
+#!/bin/bash
+
+# Slackware build script for uavs3e
+
+# Copyright 2022-2023 Vijay Marcel
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=uavs3e
+VERSION=${VERSION:-ea40065_20220823}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+GIT=${GIT:-ea40065982019a5b43f4ff61e37ba1fe7a7dbfe8}
+sys_arch=${sys_arch:-$(getconf LONG_BIT)}
+
+if [ "$sys_arch" == "32" ]; then
+ echo "This program will not run on 32-bit systems" && exit 1
+fi
+
+if [ -z "$ARCH" ]; then
+case "$ARCH" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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="-march=x86-64 -mtune=generic -O2 -pipe -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+rm -rf $PRGNAM-$GIT
+tar xvf $CWD/$PRGNAM-$GIT.tar.gz
+cd $PRGNAM-$GIT
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+patch --verbose --unified < $CWD/cmakelist.patch
+cd src
+patch --verbose --unified < $CWD/src_cmakelist.patch
+cd ..
+
+cmake -B build/linux -S $TMP/$PRGNAM-$GIT \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIB_DIR_PREFIX=/usr/lib${LIBDIRSUFFIX} \
+ -DBUILD_SHARED_LIBS:BOOL='ON' \
+ -DCOMPILE_10BIT='1'
+
+cmake --build build/linux
+make -C build/linux install DESTDIR=$PKG
+
+install -D -m755 $TMP/$PRGNAM-$GIT/build/linux/uavs3enc -t "${PKG}/usr/bin"
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING README.md ProgGuide.docx $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $CWD/changelog $PKG/usr/doc/$PRGNAM-$VERSION/slack-changelog
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/uavs3e/uavs3e.info b/multimedia/uavs3e/uavs3e.info
new file mode 100644
index 0000000000..4e5c08fd97
--- /dev/null
+++ b/multimedia/uavs3e/uavs3e.info
@@ -0,0 +1,10 @@
+PRGNAM="uavs3e"
+VERSION="ea40065_20220823"
+HOMEPAGE="https://github.com/uavs3/uavs3e"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/uavs3/uavs3e/archive/ea40065/uavs3e-ea40065982019a5b43f4ff61e37ba1fe7a7dbfe8.tar.gz"
+MD5SUM_x86_64="623adc8320fcea6aa59655b7bf4744d1"
+REQUIRES=""
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/ucview/README b/multimedia/ucview/README
index 1f62d36ca6..f093128631 100644
--- a/multimedia/ucview/README
+++ b/multimedia/ucview/README
@@ -1,6 +1,7 @@
-UCView is a video capture and display program based on the Unicap video
-imaging library. It allows high performance live video display, by using
-XVideo hardware acceleration where possible. It supports a broad range of
-video capture devices via the unicap library. It allows audio and video
-recording and encoding, by using the free Ogg Vorbis and Theora high
-performance codecs. It can also be extended via plugins.
+UCView is a video capture and display program based on the Unicap
+video imaging library. It allows high performance live video display,
+by using XVideo hardware acceleration where possible. It supports
+a broad range of video capture devices via the unicap library. It
+allows audio and video recording and encoding, by using the free Ogg
+Vorbis and Theora high performance codecs. It can also be extended via
+plugins.
diff --git a/multimedia/ucview/ucview.SlackBuild b/multimedia/ucview/ucview.SlackBuild
index 7321cd23df..fcba72646c 100644
--- a/multimedia/ucview/ucview.SlackBuild
+++ b/multimedia/ucview/ucview.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for ucview
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=ucview
VERSION=${VERSION:-20150221}
BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
# Source ID (GitHub).
SRCVER=${SRCVER:-29bd93aeef0573c58c9aee665dc43fdfd1f77a1f}
@@ -38,7 +41,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -108,4 +118,4 @@ cat $CWD/doinst.sh > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vapoursynth-mvtools/README b/multimedia/vapoursynth-mvtools/README
new file mode 100644
index 0000000000..e58694f6b9
--- /dev/null
+++ b/multimedia/vapoursynth-mvtools/README
@@ -0,0 +1 @@
+MVTools is a set of filters for motion estimation and compensation.
diff --git a/multimedia/vapoursynth-mvtools/slack-desc b/multimedia/vapoursynth-mvtools/slack-desc
new file mode 100644
index 0000000000..ec91c8a36a
--- /dev/null
+++ b/multimedia/vapoursynth-mvtools/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+vapoursynth-mvtools: vapoursynth-mvtools (motion estimation vapoursynth plugin)
+vapoursynth-mvtools:
+vapoursynth-mvtools: MVTools is a set of filters for motion estimation and compensation.
+vapoursynth-mvtools:
+vapoursynth-mvtools: Homepage: https://github.com/dubhater/vapoursynth-mvtools
+vapoursynth-mvtools:
+vapoursynth-mvtools:
+vapoursynth-mvtools:
+vapoursynth-mvtools:
+vapoursynth-mvtools:
+vapoursynth-mvtools:
diff --git a/multimedia/vapoursynth-mvtools/vapoursynth-mvtools.SlackBuild b/multimedia/vapoursynth-mvtools/vapoursynth-mvtools.SlackBuild
new file mode 100644
index 0000000000..761b17b8c3
--- /dev/null
+++ b/multimedia/vapoursynth-mvtools/vapoursynth-mvtools.SlackBuild
@@ -0,0 +1,108 @@
+#!/bin/bash
+
+# Slackware build script for vapoursynth-mvtools
+
+# Copyright 2021 Hunter Sezen California, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=vapoursynth-mvtools
+VERSION=${VERSION:-23}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -eu
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+autoreconf -fi
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX}/vapoursynth \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make
+make install DESTDIR=$PKG
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" |
+ grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a readme.rst $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+rm -f $PKG/usr/lib*/*.la
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vapoursynth-mvtools/vapoursynth-mvtools.info b/multimedia/vapoursynth-mvtools/vapoursynth-mvtools.info
new file mode 100644
index 0000000000..4151904dca
--- /dev/null
+++ b/multimedia/vapoursynth-mvtools/vapoursynth-mvtools.info
@@ -0,0 +1,10 @@
+PRGNAM="vapoursynth-mvtools"
+VERSION="23"
+HOMEPAGE="https://github.com/dubhater/vapoursynth-mvtools"
+DOWNLOAD="https://github.com/dubhater/vapoursynth-mvtools/archive/v23/vapoursynth-mvtools-23.tar.gz"
+MD5SUM="08bb2a31c63d0075ea3bf2dcb8370502"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="vapoursynth"
+MAINTAINER="Hunter Sezen"
+EMAIL="orbea@riseup.net"
diff --git a/multimedia/vapoursynth/650.patch b/multimedia/vapoursynth/650.patch
new file mode 100644
index 0000000000..6c2358b951
--- /dev/null
+++ b/multimedia/vapoursynth/650.patch
@@ -0,0 +1,560 @@
+From 14b36ee7a300aa47e08df06241bc409e213edff2 Mon Sep 17 00:00:00 2001
+From: orbea <orbea@riseup.net>
+Date: Fri, 1 Jan 2021 06:28:18 -0800
+Subject: [PATCH] Add missing pthread dependency.
+
+---
+ Makefile.am | 5 +-
+ configure.ac | 1 +
+ m4/ax_pthread.m4 | 507 +++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 511 insertions(+), 2 deletions(-)
+ create mode 100644 m4/ax_pthread.m4
+
+diff --git a/Makefile.am b/Makefile.am
+index 123a3488..3844afb7 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2,6 +2,7 @@ warningflags = -Wall -Wextra -Wno-unused-parameter -Wno-unused-function -Wno-ign
+ commoncflags = -O3 -fvisibility=hidden $(warningflags) -I$(srcdir)/include $(DEBUGCFLAGS) $(MFLAGS) $(UNICODECFLAGS) $(STACKREALIGN)
+ AM_CXXFLAGS = -std=c++11 $(commoncflags)
+ AM_CFLAGS = -std=c99 $(commoncflags)
++ACLOCAL_AMFLAGS = -I m4
+
+
+
+@@ -80,8 +81,8 @@ pkginclude_HEADERS = include/VapourSynth.h \
+ pkgconfig_DATA += pc/vapoursynth.pc
+
+ libvapoursynth_la_LDFLAGS = -no-undefined -avoid-version
+-libvapoursynth_la_CPPFLAGS = $(ZIMG_CFLAGS) -DVS_PATH_PLUGINDIR='"$(PLUGINDIR)"'
+-libvapoursynth_la_LIBADD = $(ZIMG_LIBS) $(DLOPENLIB) libexprfilter.la
++libvapoursynth_la_CPPFLAGS = $(PTHREAD_CFLAGS) $(ZIMG_CFLAGS) -DVS_PATH_PLUGINDIR='"$(PLUGINDIR)"'
++libvapoursynth_la_LIBADD = $(PTHREAD_LIBS) $(ZIMG_LIBS) $(DLOPENLIB) libexprfilter.la
+
+
+ if X86ASM
+diff --git a/configure.ac b/configure.ac
+index b898d411..1566c6e0 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -14,6 +14,7 @@ AC_PROG_CXX
+
+ AC_SYS_LARGEFILE
+ AC_FUNC_FSEEKO
++AX_PTHREAD
+
+
+ AC_ARG_ENABLE([debug], AS_HELP_STRING([--enable-debug], [Enable compilation options required for debugging. (default=no)]))
+diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4
+new file mode 100644
+index 00000000..1598d077
+--- /dev/null
++++ b/m4/ax_pthread.m4
+@@ -0,0 +1,507 @@
++# ===========================================================================
++# https://www.gnu.org/software/autoconf-archive/ax_pthread.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
++#
++# DESCRIPTION
++#
++# This macro figures out how to build C programs using POSIX threads. It
++# sets the PTHREAD_LIBS output variable to the threads library and linker
++# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
++# flags that are needed. (The user can also force certain compiler
++# flags/libs to be tested by setting these environment variables.)
++#
++# Also sets PTHREAD_CC to any special C compiler that is needed for
++# multi-threaded programs (defaults to the value of CC otherwise). (This
++# is necessary on AIX to use the special cc_r compiler alias.)
++#
++# NOTE: You are assumed to not only compile your program with these flags,
++# but also to link with them as well. For example, you might link with
++# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
++#
++# If you are only building threaded programs, you may wish to use these
++# variables in your default LIBS, CFLAGS, and CC:
++#
++# LIBS="$PTHREAD_LIBS $LIBS"
++# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
++# CC="$PTHREAD_CC"
++#
++# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
++# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
++# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
++#
++# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
++# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
++# PTHREAD_CFLAGS.
++#
++# ACTION-IF-FOUND is a list of shell commands to run if a threads library
++# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
++# is not found. If ACTION-IF-FOUND is not specified, the default action
++# will define HAVE_PTHREAD.
++#
++# Please let the authors know if this macro fails on any platform, or if
++# you have any other suggestions or comments. This macro was based on work
++# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
++# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
++# Alejandro Forero Cuervo to the autoconf macro repository. We are also
++# grateful for the helpful feedback of numerous users.
++#
++# Updated for Autoconf 2.68 by Daniel Richard G.
++#
++# LICENSE
++#
++# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
++# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
++# Copyright (c) 2019 Marc Stevens <marc.stevens@cwi.nl>
++#
++# 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 3 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 <https://www.gnu.org/licenses/>.
++#
++# As a special exception, the respective Autoconf Macro's copyright owner
++# gives unlimited permission to copy, distribute and modify the configure
++# scripts that are the output of Autoconf when processing the Macro. You
++# need not follow the terms of the GNU General Public License when using
++# or distributing such scripts, even though portions of the text of the
++# Macro appear in them. The GNU General Public License (GPL) does govern
++# all other use of the material that constitutes the Autoconf Macro.
++#
++# This special exception to the GPL applies to versions of the Autoconf
++# Macro released by the Autoconf Archive. When you make and distribute a
++# modified version of the Autoconf Macro, you may extend this special
++# exception to the GPL to apply to your modified version as well.
++
++#serial 27
++
++AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
++AC_DEFUN([AX_PTHREAD], [
++AC_REQUIRE([AC_CANONICAL_HOST])
++AC_REQUIRE([AC_PROG_CC])
++AC_REQUIRE([AC_PROG_SED])
++AC_LANG_PUSH([C])
++ax_pthread_ok=no
++
++# We used to check for pthread.h first, but this fails if pthread.h
++# requires special compiler flags (e.g. on Tru64 or Sequent).
++# It gets checked for in the link test anyway.
++
++# First of all, check if the user has set any of the PTHREAD_LIBS,
++# etcetera environment variables, and if threads linking works using
++# them:
++if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
++ ax_pthread_save_CC="$CC"
++ ax_pthread_save_CFLAGS="$CFLAGS"
++ ax_pthread_save_LIBS="$LIBS"
++ AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
++ LIBS="$PTHREAD_LIBS $LIBS"
++ AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
++ AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
++ AC_MSG_RESULT([$ax_pthread_ok])
++ if test "x$ax_pthread_ok" = "xno"; then
++ PTHREAD_LIBS=""
++ PTHREAD_CFLAGS=""
++ fi
++ CC="$ax_pthread_save_CC"
++ CFLAGS="$ax_pthread_save_CFLAGS"
++ LIBS="$ax_pthread_save_LIBS"
++fi
++
++# We must check for the threads library under a number of different
++# names; the ordering is very important because some systems
++# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
++# libraries is broken (non-POSIX).
++
++# Create a list of thread flags to try. Items with a "," contain both
++# C compiler flags (before ",") and linker flags (after ","). Other items
++# starting with a "-" are C compiler flags, and remaining items are
++# library names, except for "none" which indicates that we try without
++# any flags at all, and "pthread-config" which is a program returning
++# the flags for the Pth emulation library.
++
++ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
++
++# The ordering *is* (sometimes) important. Some notes on the
++# individual items follow:
++
++# pthreads: AIX (must check this before -lpthread)
++# none: in case threads are in libc; should be tried before -Kthread and
++# other compiler flags to prevent continual compiler warnings
++# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
++# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
++# (Note: HP C rejects this with "bad form for `-t' option")
++# -pthreads: Solaris/gcc (Note: HP C also rejects)
++# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
++# doesn't hurt to check since this sometimes defines pthreads and
++# -D_REENTRANT too), HP C (must be checked before -lpthread, which
++# is present but should not be used directly; and before -mthreads,
++# because the compiler interprets this as "-mt" + "-hreads")
++# -mthreads: Mingw32/gcc, Lynx/gcc
++# pthread: Linux, etcetera
++# --thread-safe: KAI C++
++# pthread-config: use pthread-config program (for GNU Pth library)
++
++case $host_os in
++
++ freebsd*)
++
++ # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
++ # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
++
++ ax_pthread_flags="-kthread lthread $ax_pthread_flags"
++ ;;
++
++ hpux*)
++
++ # From the cc(1) man page: "[-mt] Sets various -D flags to enable
++ # multi-threading and also sets -lpthread."
++
++ ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
++ ;;
++
++ openedition*)
++
++ # IBM z/OS requires a feature-test macro to be defined in order to
++ # enable POSIX threads at all, so give the user a hint if this is
++ # not set. (We don't define these ourselves, as they can affect
++ # other portions of the system API in unpredictable ways.)
++
++ AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
++ [
++# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
++ AX_PTHREAD_ZOS_MISSING
++# endif
++ ],
++ [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
++ ;;
++
++ solaris*)
++
++ # On Solaris (at least, for some versions), libc contains stubbed
++ # (non-functional) versions of the pthreads routines, so link-based
++ # tests will erroneously succeed. (N.B.: The stubs are missing
++ # pthread_cleanup_push, or rather a function called by this macro,
++ # so we could check for that, but who knows whether they'll stub
++ # that too in a future libc.) So we'll check first for the
++ # standard Solaris way of linking pthreads (-mt -lpthread).
++
++ ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags"
++ ;;
++esac
++
++# Are we compiling with Clang?
++
++AC_CACHE_CHECK([whether $CC is Clang],
++ [ax_cv_PTHREAD_CLANG],
++ [ax_cv_PTHREAD_CLANG=no
++ # Note that Autoconf sets GCC=yes for Clang as well as GCC
++ if test "x$GCC" = "xyes"; then
++ AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
++ [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
++# if defined(__clang__) && defined(__llvm__)
++ AX_PTHREAD_CC_IS_CLANG
++# endif
++ ],
++ [ax_cv_PTHREAD_CLANG=yes])
++ fi
++ ])
++ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
++
++
++# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
++
++# Note that for GCC and Clang -pthread generally implies -lpthread,
++# except when -nostdlib is passed.
++# This is problematic using libtool to build C++ shared libraries with pthread:
++# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460
++# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333
++# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555
++# To solve this, first try -pthread together with -lpthread for GCC
++
++AS_IF([test "x$GCC" = "xyes"],
++ [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"])
++
++# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first
++
++AS_IF([test "x$ax_pthread_clang" = "xyes"],
++ [ax_pthread_flags="-pthread,-lpthread -pthread"])
++
++
++# The presence of a feature test macro requesting re-entrant function
++# definitions is, on some systems, a strong hint that pthreads support is
++# correctly enabled
++
++case $host_os in
++ darwin* | hpux* | linux* | osf* | solaris*)
++ ax_pthread_check_macro="_REENTRANT"
++ ;;
++
++ aix*)
++ ax_pthread_check_macro="_THREAD_SAFE"
++ ;;
++
++ *)
++ ax_pthread_check_macro="--"
++ ;;
++esac
++AS_IF([test "x$ax_pthread_check_macro" = "x--"],
++ [ax_pthread_check_cond=0],
++ [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
++
++
++if test "x$ax_pthread_ok" = "xno"; then
++for ax_pthread_try_flag in $ax_pthread_flags; do
++
++ case $ax_pthread_try_flag in
++ none)
++ AC_MSG_CHECKING([whether pthreads work without any flags])
++ ;;
++
++ *,*)
++ PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"`
++ PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"`
++ AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"])
++ ;;
++
++ -*)
++ AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
++ PTHREAD_CFLAGS="$ax_pthread_try_flag"
++ ;;
++
++ pthread-config)
++ AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
++ AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
++ PTHREAD_CFLAGS="`pthread-config --cflags`"
++ PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
++ ;;
++
++ *)
++ AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
++ PTHREAD_LIBS="-l$ax_pthread_try_flag"
++ ;;
++ esac
++
++ ax_pthread_save_CFLAGS="$CFLAGS"
++ ax_pthread_save_LIBS="$LIBS"
++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
++ LIBS="$PTHREAD_LIBS $LIBS"
++
++ # Check for various functions. We must include pthread.h,
++ # since some functions may be macros. (On the Sequent, we
++ # need a special flag -Kthread to make this header compile.)
++ # We check for pthread_join because it is in -lpthread on IRIX
++ # while pthread_create is in libc. We check for pthread_attr_init
++ # due to DEC craziness with -lpthreads. We check for
++ # pthread_cleanup_push because it is one of the few pthread
++ # functions on Solaris that doesn't have a non-functional libc stub.
++ # We try pthread_create on general principles.
++
++ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
++# if $ax_pthread_check_cond
++# error "$ax_pthread_check_macro must be defined"
++# endif
++ static void *some_global = NULL;
++ static void routine(void *a)
++ {
++ /* To avoid any unused-parameter or
++ unused-but-set-parameter warning. */
++ some_global = a;
++ }
++ static void *start_routine(void *a) { return a; }],
++ [pthread_t th; pthread_attr_t attr;
++ pthread_create(&th, 0, start_routine, 0);
++ pthread_join(th, 0);
++ pthread_attr_init(&attr);
++ pthread_cleanup_push(routine, 0);
++ pthread_cleanup_pop(0) /* ; */])],
++ [ax_pthread_ok=yes],
++ [])
++
++ CFLAGS="$ax_pthread_save_CFLAGS"
++ LIBS="$ax_pthread_save_LIBS"
++
++ AC_MSG_RESULT([$ax_pthread_ok])
++ AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
++
++ PTHREAD_LIBS=""
++ PTHREAD_CFLAGS=""
++done
++fi
++
++
++# Clang needs special handling, because older versions handle the -pthread
++# option in a rather... idiosyncratic way
++
++if test "x$ax_pthread_clang" = "xyes"; then
++
++ # Clang takes -pthread; it has never supported any other flag
++
++ # (Note 1: This will need to be revisited if a system that Clang
++ # supports has POSIX threads in a separate library. This tends not
++ # to be the way of modern systems, but it's conceivable.)
++
++ # (Note 2: On some systems, notably Darwin, -pthread is not needed
++ # to get POSIX threads support; the API is always present and
++ # active. We could reasonably leave PTHREAD_CFLAGS empty. But
++ # -pthread does define _REENTRANT, and while the Darwin headers
++ # ignore this macro, third-party headers might not.)
++
++ # However, older versions of Clang make a point of warning the user
++ # that, in an invocation where only linking and no compilation is
++ # taking place, the -pthread option has no effect ("argument unused
++ # during compilation"). They expect -pthread to be passed in only
++ # when source code is being compiled.
++ #
++ # Problem is, this is at odds with the way Automake and most other
++ # C build frameworks function, which is that the same flags used in
++ # compilation (CFLAGS) are also used in linking. Many systems
++ # supported by AX_PTHREAD require exactly this for POSIX threads
++ # support, and in fact it is often not straightforward to specify a
++ # flag that is used only in the compilation phase and not in
++ # linking. Such a scenario is extremely rare in practice.
++ #
++ # Even though use of the -pthread flag in linking would only print
++ # a warning, this can be a nuisance for well-run software projects
++ # that build with -Werror. So if the active version of Clang has
++ # this misfeature, we search for an option to squash it.
++
++ AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
++ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
++ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
++ # Create an alternate version of $ac_link that compiles and
++ # links in two steps (.c -> .o, .o -> exe) instead of one
++ # (.c -> exe), because the warning occurs only in the second
++ # step
++ ax_pthread_save_ac_link="$ac_link"
++ ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
++ ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
++ ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
++ ax_pthread_save_CFLAGS="$CFLAGS"
++ for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
++ AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
++ CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
++ ac_link="$ax_pthread_save_ac_link"
++ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
++ [ac_link="$ax_pthread_2step_ac_link"
++ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
++ [break])
++ ])
++ done
++ ac_link="$ax_pthread_save_ac_link"
++ CFLAGS="$ax_pthread_save_CFLAGS"
++ AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
++ ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
++ ])
++
++ case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
++ no | unknown) ;;
++ *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
++ esac
++
++fi # $ax_pthread_clang = yes
++
++
++
++# Various other checks:
++if test "x$ax_pthread_ok" = "xyes"; then
++ ax_pthread_save_CFLAGS="$CFLAGS"
++ ax_pthread_save_LIBS="$LIBS"
++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
++ LIBS="$PTHREAD_LIBS $LIBS"
++
++ # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
++ AC_CACHE_CHECK([for joinable pthread attribute],
++ [ax_cv_PTHREAD_JOINABLE_ATTR],
++ [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
++ for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
++ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
++ [int attr = $ax_pthread_attr; return attr /* ; */])],
++ [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
++ [])
++ done
++ ])
++ AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
++ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
++ test "x$ax_pthread_joinable_attr_defined" != "xyes"],
++ [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
++ [$ax_cv_PTHREAD_JOINABLE_ATTR],
++ [Define to necessary symbol if this constant
++ uses a non-standard name on your system.])
++ ax_pthread_joinable_attr_defined=yes
++ ])
++
++ AC_CACHE_CHECK([whether more special flags are required for pthreads],
++ [ax_cv_PTHREAD_SPECIAL_FLAGS],
++ [ax_cv_PTHREAD_SPECIAL_FLAGS=no
++ case $host_os in
++ solaris*)
++ ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
++ ;;
++ esac
++ ])
++ AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
++ test "x$ax_pthread_special_flags_added" != "xyes"],
++ [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
++ ax_pthread_special_flags_added=yes])
++
++ AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
++ [ax_cv_PTHREAD_PRIO_INHERIT],
++ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
++ [[int i = PTHREAD_PRIO_INHERIT;
++ return i;]])],
++ [ax_cv_PTHREAD_PRIO_INHERIT=yes],
++ [ax_cv_PTHREAD_PRIO_INHERIT=no])
++ ])
++ AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
++ test "x$ax_pthread_prio_inherit_defined" != "xyes"],
++ [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
++ ax_pthread_prio_inherit_defined=yes
++ ])
++
++ CFLAGS="$ax_pthread_save_CFLAGS"
++ LIBS="$ax_pthread_save_LIBS"
++
++ # More AIX lossage: compile with *_r variant
++ if test "x$GCC" != "xyes"; then
++ case $host_os in
++ aix*)
++ AS_CASE(["x/$CC"],
++ [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
++ [#handle absolute path differently from PATH based program lookup
++ AS_CASE(["x$CC"],
++ [x/*],
++ [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
++ [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
++ ;;
++ esac
++ fi
++fi
++
++test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
++
++AC_SUBST([PTHREAD_LIBS])
++AC_SUBST([PTHREAD_CFLAGS])
++AC_SUBST([PTHREAD_CC])
++
++# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
++if test "x$ax_pthread_ok" = "xyes"; then
++ ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
++ :
++else
++ ax_pthread_ok=no
++ $2
++fi
++AC_LANG_POP
++])dnl AX_PTHREAD
diff --git a/multimedia/vapoursynth/README b/multimedia/vapoursynth/README
new file mode 100644
index 0000000000..76b8668386
--- /dev/null
+++ b/multimedia/vapoursynth/README
@@ -0,0 +1,3 @@
+VapourSynth is an application for video manipulation. Or a plugin. Or
+a library. It’s hard to tell because it has a core library written
+in C++ and a Python module to allow video scripts to be created.
diff --git a/multimedia/mythplugins/slack-desc b/multimedia/vapoursynth/slack-desc
index 6acd6f2fad..c247102a84 100644
--- a/multimedia/mythplugins/slack-desc
+++ b/multimedia/vapoursynth/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-mythplugins: mythplugins (https://www.mythtv.org/)
-mythplugins:
-mythplugins: Official MythTV plugins:
-mythplugins:
-mythplugins: MythBrowser, MythDVD, MythFlix,
-mythplugins: MythGallery, MythGame, MythMusic,
-mythplugins: MythNews, MythPhone, MythVideo,
-mythplugins: MythWeather, and MythWeb
-mythplugins:
-mythplugins:
-mythplugins:
+vapoursynth: vapoursynth (video processing framework)
+vapoursynth:
+vapoursynth: A video processing framework with simplicity in mind.
+vapoursynth:
+vapoursynth: Homepage: https://www.vapoursynth.com/
+vapoursynth:
+vapoursynth:
+vapoursynth:
+vapoursynth:
+vapoursynth:
+vapoursynth:
diff --git a/multimedia/vapoursynth/vapoursynth.SlackBuild b/multimedia/vapoursynth/vapoursynth.SlackBuild
new file mode 100644
index 0000000000..b307630785
--- /dev/null
+++ b/multimedia/vapoursynth/vapoursynth.SlackBuild
@@ -0,0 +1,119 @@
+#!/bin/bash
+
+# Slackware build script for vapoursynth
+
+# Copyright 2020 Hunter Sezen California, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=vapoursynth
+VERSION=${VERSION:-R52}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -eu
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# Fix undefined reference.
+# https://github.com/vapoursynth/vapoursynth/pull/650
+patch -p1 < $CWD/650.patch
+
+# Thanks to Lockywolf
+sed -i '38i#include <limits>' src/core/genericfilters.cpp
+sed -i '19a#include <limits>' src/core/kernel/generic.cpp
+sed -i '21i#include <limits>' src/core/exprfilter.cpp
+sed -i '21i#include <limits>' src/filters/misc/miscfilters.cpp
+sed -i '27i#include <limits>' src/filters/removegrain/clense.cpp
+
+autoreconf -fi
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make
+make install DESTDIR=$PKG
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" |
+ grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING.LESSER ChangeLog README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+rm -f $PKG/usr/lib*/*.la
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vapoursynth/vapoursynth.info b/multimedia/vapoursynth/vapoursynth.info
new file mode 100644
index 0000000000..e2c97cade7
--- /dev/null
+++ b/multimedia/vapoursynth/vapoursynth.info
@@ -0,0 +1,10 @@
+PRGNAM="vapoursynth"
+VERSION="R52"
+HOMEPAGE="https://www.vapoursynth.com/"
+DOWNLOAD="https://github.com/vapoursynth/vapoursynth/archive/R52/vapoursynth-R52.tar.gz"
+MD5SUM="e6b37c3c7af6902f3835182292668550"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="zimg"
+MAINTAINER="Hunter Sezen"
+EMAIL="orbea@riseup.net"
diff --git a/multimedia/vcdimager/README b/multimedia/vcdimager/README
index 63257f057e..e47a654f0d 100644
--- a/multimedia/vcdimager/README
+++ b/multimedia/vcdimager/README
@@ -1,4 +1,5 @@
-GNU VCDImager is a full-featured mastering suite for authoring, disassembling
-and analyzing Video CDs and Super Video CDs. Features include: Support for
-VCD 1.1 and 2.0, Support for SVCD 1.0 full playback control, automatic padding
-of MPEG streams on the fly ... and more!
+GNU VCDImager is a full-featured mastering suite for authoring,
+disassembling and analyzing Video CDs and Super Video CDs. Features
+include: Support for VCD 1.1 and 2.0, Support for SVCD 1.0 full
+playback control, automatic padding of MPEG streams on the fly ... and
+more!
diff --git a/multimedia/vcdimager/doinst.sh b/multimedia/vcdimager/doinst.sh
new file mode 100644
index 0000000000..1bef502028
--- /dev/null
+++ b/multimedia/vcdimager/doinst.sh
@@ -0,0 +1,6 @@
+if [ -x /usr/bin/install-info -a -d usr/info ]; then
+ ( cd usr/info
+ rm -f dir
+ for i in *.info*; do /usr/bin/install-info $i dir 2>/dev/null; done
+ )
+fi
diff --git a/multimedia/vcdimager/vcdimager.SlackBuild b/multimedia/vcdimager/vcdimager.SlackBuild
index c56f5c2779..6e3c8c3e7b 100644
--- a/multimedia/vcdimager/vcdimager.SlackBuild
+++ b/multimedia/vcdimager/vcdimager.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware Build script for vcdimager
@@ -23,10 +23,18 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230701 bkw: Modified by SlackBuilds.org:
+# - add doinst/douninst to handle /usr/info/dir.
+# - add missing SlackBuild to doc dir.
+# - rm generic INSTALL instructions from doc dir.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=vcdimager
-VERSION=${VERSION:-0.7.24}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-2.0.1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +44,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -61,12 +73,14 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z*
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 400 -o -perm 440 \) -exec chmod 644 {} \; -o \
- \( -perm 777 -o -perm 775 -o -perm 511 -o -perm 711 -o -perm 555 \) -exec chmod 755 {} \;
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} + -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -81,24 +95,22 @@ CXXFLAGS="$SLKCFLAGS" \
--build=$ARCH-slackware-linux
make
-make DESTDIR=$PKG install
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+make install-strip DESTDIR=$PKG
rm -f $PKG/usr/info/dir
-gzip -9 $PKG/usr/info/*.info*
+gzip -9 $PKG/usr/info/*.info* $PKG/usr/man/man*/*
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a AUTHORS BUGS COPYING ChangeLog* FAQ HACKING NEWS README THANKS TODO $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- AUTHORS BUGS COPYING ChangeLog* FAQ HACKING INSTALL NEWS README THANKS TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
+rm -f $PKG/usr/lib*/*.la
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+cat $CWD/doinst.sh > $PKG/install/douninst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vcdimager/vcdimager.info b/multimedia/vcdimager/vcdimager.info
index 05ec47da33..66be249cdb 100644
--- a/multimedia/vcdimager/vcdimager.info
+++ b/multimedia/vcdimager/vcdimager.info
@@ -1,8 +1,8 @@
PRGNAM="vcdimager"
-VERSION="0.7.24"
+VERSION="2.0.1"
HOMEPAGE="http://www.gnu.org/software/vcdimager/"
-DOWNLOAD="http://mirrors.kernel.org/gnu/vcdimager/vcdimager-0.7.24.tar.gz"
-MD5SUM="3af22978fd79c79d5fda6513b6811145"
+DOWNLOAD="ftp://ftp.gnu.org/gnu/vcdimager/vcdimager-2.0.1.tar.gz"
+MD5SUM="3890d73da62d0607c87962c41cd33a29"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/vgmplay/vgmplay.SlackBuild b/multimedia/vgmplay/vgmplay.SlackBuild
index de1ce539ff..00df60594f 100644
--- a/multimedia/vgmplay/vgmplay.SlackBuild
+++ b/multimedia/vgmplay/vgmplay.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for vgmplay
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=vgmplay
VERSION=${VERSION:-0.40.9}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ case "$( uname -m )" in
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -69,6 +79,8 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+SLKCFLAGS+=" -fcommon"
+
make PREFIX=/usr CFLAGS="$SLKCFLAGS" CXXFLAGS="$SLKCFLAGS"
mkdir -p $PKG/usr/bin $PKG/usr/man/man1 $PKG/usr/share/vgmplay
@@ -93,4 +105,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/videocut/videocut.SlackBuild b/multimedia/videocut/videocut.SlackBuild
index 88d2c77fa3..cc28d81621 100644
--- a/multimedia/videocut/videocut.SlackBuild
+++ b/multimedia/videocut/videocut.SlackBuild
@@ -1,29 +1,39 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for videocut
# Written by Pablo Santamaria (pablosantamaria@gmail.com)
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=videocut
VERSION=${VERSION:-0.2.0}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -57,7 +67,7 @@ sed -i "s%/usr/share/doc/videocut/%/usr/doc/$PRGNAM-$VERSION/%" videocut.pro
# Needed for gcc-4.7.x
echo "QMAKE_CXXFLAGS += $SLKCFLAGS -fpermissive" >> videocut.pro
-qmake
+qmake-qt4
make
make install INSTALL_ROOT=$PKG
@@ -82,4 +92,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/videocut/videocut.info b/multimedia/videocut/videocut.info
index 970fb0190e..aaa242567f 100644
--- a/multimedia/videocut/videocut.info
+++ b/multimedia/videocut/videocut.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://storage.googleapis.com/google-code-archive-downloads/v2/code.g
MD5SUM="470effa63836545391d6ff08c7e6e40e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="qt4"
MAINTAINER="Pablo Santamaria"
EMAIL="pablosantamaria@gmail.com"
diff --git a/multimedia/videomass/README b/multimedia/videomass/README
new file mode 100644
index 0000000000..776e06a460
--- /dev/null
+++ b/multimedia/videomass/README
@@ -0,0 +1,15 @@
+Videomass is a FLOSS, powerful, multitasking and cross-platform
+graphical user interface (GUI) for FFmpeg and yt-dlp. Designed for
+advanced and beginner users, it offers a wide range of features and
+functions, making it a comprehensive software solution.
+
+Videomass is Free (libre) Software, written in Python3 using the
+wxPython Phoenix toolkit; it works on Linux, MacOs, Windows and
+FreeBSD.
+
+Optional dependencies
+---------------------
+
+yt-dlp : Required if you intend to download audio and video from
+various sites. It can be installed after installing Videomass (which
+won't need a rebuild).
diff --git a/multimedia/videomass/doinst.sh b/multimedia/videomass/doinst.sh
new file mode 100644
index 0000000000..5a0b8c86f3
--- /dev/null
+++ b/multimedia/videomass/doinst.sh
@@ -0,0 +1,11 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+if [ -x /usr/bin/update-mime-database ]; then
+ usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
+fi
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/gst-libav/slack-desc b/multimedia/videomass/slack-desc
index 352ee23dbd..854e071dd7 100644
--- a/multimedia/gst-libav/slack-desc
+++ b/multimedia/videomass/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-gst-libav: gst-libav (A GStreamer libav/ffmpeg plugin)
-gst-libav:
-gst-libav: This module contains a GStreamer plugin for libav as well as an
-gst-libav: internal copy of the libav source code.
-gst-libav:
-gst-libav: http://gstreamer.freedesktop.org/
-gst-libav:
-gst-libav:
-gst-libav:
-gst-libav:
-gst-libav:
+videomass: videomass (GUI for FFmpeg and yt-dlp)
+videomass:
+videomass: Videomass is a free, open source and cross-platform GUI for FFmpeg
+videomass: and yt-dlp written in wxPython.
+videomass:
+videomass:
+videomass: Homepage: http://jeanslack.github.io/Videomass/
+videomass:
+videomass:
+videomass:
+videomass:
diff --git a/multimedia/videomass/videomass.SlackBuild b/multimedia/videomass/videomass.SlackBuild
new file mode 100644
index 0000000000..c7a39d82ce
--- /dev/null
+++ b/multimedia/videomass/videomass.SlackBuild
@@ -0,0 +1,102 @@
+#!/bin/bash
+
+# Slackware build script for videomass
+
+# Copyright 2024 Gianluca Pernigotto Verona, Italy
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=videomass
+VERSION=${VERSION:-5.0.11}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+SRCNAM=Videomass
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
+cd $SRCNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+python3 setup.py install --root=$PKG
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mv $PKG/usr/share/man $PKG/usr/man
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a README.md LICENSE TODO CHANGELOG $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/videomass/videomass.info b/multimedia/videomass/videomass.info
new file mode 100644
index 0000000000..55d41f4021
--- /dev/null
+++ b/multimedia/videomass/videomass.info
@@ -0,0 +1,10 @@
+PRGNAM="videomass"
+VERSION="5.0.11"
+HOMEPAGE="http://jeanslack.github.io/Videomass/"
+DOWNLOAD="https://github.com/jeanslack/Videomass/archive/v5.0.11/Videomass-5.0.11.tar.gz"
+MD5SUM="abc76d66e7731f031c3a6bc98406d58f"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="wxPython4 python3-pubsub"
+MAINTAINER="Gianluca Pernigotto"
+EMAIL="jeanlucperni@gmail.com"
diff --git a/multimedia/vitunes-mplayer/README b/multimedia/vitunes-mplayer/README
index b392b9fb49..2a8d009286 100644
--- a/multimedia/vitunes-mplayer/README
+++ b/multimedia/vitunes-mplayer/README
@@ -1,11 +1,11 @@
vitunes-mplayer (frontend for mplayer, with vi key bindings)
vitunes is a curses-based music player and playlist manager for *nix
-whose goals are: 1. a minimalistic appearance, 2. strong vi-like bindings,
-and 3. quick playlist creation/management. vitunes does not strive to be
-a feature-rich media player, but rather a quick, vi-like media indexer
-and playlist manager, that just happens to be able to play the music
-it indexes.
+whose goals are: 1. a minimalistic appearance, 2. strong vi-like
+bindings, and 3. quick playlist creation/management. vitunes does not
+strive to be a feature-rich media player, but rather a quick, vi-like
+media indexer and playlist manager, that just happens to be able to
+play the music it indexes.
Note about the package name: There exist 2 completely separate things
called "vitunes". If you're looking for the vim frontend for iTunes,
diff --git a/multimedia/vitunes-mplayer/vitunes-mplayer.SlackBuild b/multimedia/vitunes-mplayer/vitunes-mplayer.SlackBuild
index 0f9baf46f2..5bb8c2528d 100644
--- a/multimedia/vitunes-mplayer/vitunes-mplayer.SlackBuild
+++ b/multimedia/vitunes-mplayer/vitunes-mplayer.SlackBuild
@@ -1,15 +1,20 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for vitunes-mplayer
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20230103 bkw: BUILD=2, strip binary.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=vitunes-mplayer
VERSION=${VERSION:-2.3}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -19,7 +24,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -55,11 +64,8 @@ rm -rf $TARNAME-$VERSION
tar xvf $CWD/$TARNAME-$VERSION.tar.gz
cd $TARNAME-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
# Use /tmp/.vitunes-$USER for the socket, rather that /tmp/.vitunes for
# every single user. Allows multiple users to use vitunes. Without this,
@@ -78,7 +84,7 @@ sed -i \
make -f Makefile.linux PREFIX=/usr
mkdir -p $PKG/usr/bin $PKG/usr/man/man1
-install -m0755 $TARNAME $PKG/usr/bin/$TARNAME
+install -s -m0755 $TARNAME $PKG/usr/bin/$TARNAME
gzip -c < $TARNAME.1 > $PKG/usr/man/man1/$TARNAME.1.gz
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
@@ -89,4 +95,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vitunes-mplayer/vitunes-mplayer.info b/multimedia/vitunes-mplayer/vitunes-mplayer.info
index 44d3a19d8c..dc231eacfa 100644
--- a/multimedia/vitunes-mplayer/vitunes-mplayer.info
+++ b/multimedia/vitunes-mplayer/vitunes-mplayer.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/vkeybd/README b/multimedia/vkeybd/README
index d995e0173c..58fb76f817 100644
--- a/multimedia/vkeybd/README
+++ b/multimedia/vkeybd/README
@@ -1,13 +1,13 @@
vkeybd (virtual piano keyboard)
-vkeybd is a virtual keyboard for AWE/OSS, MIDI/OSS and ALSA drivers. It is
-a simple fake of a MIDI keyboard on X-window system. Enjoy music with your
-mouse and computer keyboard.
+vkeybd is a virtual keyboard for AWE/OSS, MIDI/OSS and ALSA
+drivers. It is a simple fake of a MIDI keyboard on X-window
+system. Enjoy music with your mouse and computer keyboard.
-Make sure to have a MIDI synth configured in order to play music with this
-program - if you use the optional dependency TiMidity++, for example, run
-it in ALSA server mode (timidity -iA) before starting vkeybd, then use
-aconnect to link the ALSA sequencer input (vkeybd) and output (timidity)
-ports.
+Make sure to have a MIDI synth configured in order to play music
+with this program - if you use the optional dependency TiMidity++,
+for example, run it in ALSA server mode (timidity -iA) before starting
+vkeybd, then use aconnect to link the ALSA sequencer input (vkeybd)
+and output (timidity) ports.
Also, you may want to provide a custom keymap to vkeybd (~/.vkeybdmap)
diff --git a/multimedia/vkeybd/doinst.sh b/multimedia/vkeybd/doinst.sh
index 5fb28930db..3e5691a052 100644
--- a/multimedia/vkeybd/doinst.sh
+++ b/multimedia/vkeybd/doinst.sh
@@ -1,3 +1,9 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/vkeybd/vkeybd.SlackBuild b/multimedia/vkeybd/vkeybd.SlackBuild
index 6f1df6e494..fe32c4c606 100644
--- a/multimedia/vkeybd/vkeybd.SlackBuild
+++ b/multimedia/vkeybd/vkeybd.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for vkeybd
@@ -8,22 +8,27 @@
# Check https://help.ubuntu.com/community/HowToVirtualKeyboardKeymapping for
# more information.
-# Now maintained by B. Watson <yalhcru@gmail.com>. Original version
+# Now maintained by B. Watson <urchlay@slackware.uk>. Original version
# of this script had no license. Modified version licensed under the
# WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20230103 bkw: BUILD=4, new-style icons, fix .desktop file.
+
# 20180103 bkw:
# - take over maintenance.
# - i486 => i586.
# - determine tcl version from system, instead of hardcoding.
# - simplify script a bit.
-# - fix grammer in README and slack-desc.
+# - fix grammar in README and slack-desc.
# - 'virtual keyboard' => 'virtual piano keyboard' in slack-desc.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=vkeybd
VERSION=${VERSION:-0.1.18d}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-4}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -33,7 +38,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -58,8 +67,11 @@ chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
-# make .desktop file validate
-sed -i -e '/^Encoding/d' -e '/^Cat/s,Application;,,' $PRGNAM.desktop
+# make .desktop file validate, use correct icon name.
+sed -i -e '/^Encoding/d' \
+ -e '/^Cat/s,Application;,,' \
+ -e '/^Icon/s,_.*,,' \
+ $PRGNAM.desktop
# grab tcl version from the system
TCLVER="$( basename $( readlink /usr/bin/tclsh|sed 's,tclsh,,' ) )"
@@ -74,7 +86,17 @@ make \
gzip -9 $PKG/usr/man/man?/*.?
strip $PKG/usr/bin/*
-ln -s ${PRGNAM}_48x48.png $PKG/usr/share/pixmaps/$PRGNAM.png
+
+for i in pixmaps/${PRGNAM}_*x*.png; do
+ size=$( basename $i .png | cut -d_ -f2 )
+ dir=$PKG/usr/share/icons/hicolor/$size/apps
+ mkdir -p $dir
+ cp -a $i $dir/$PRGNAM.png
+done
+
+( cd $PKG/usr/share/pixmaps
+ rm -f *
+ ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png . )
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a ChangeLog README $PKG/usr/doc/$PRGNAM-$VERSION
@@ -85,4 +107,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vkeybd/vkeybd.info b/multimedia/vkeybd/vkeybd.info
index 3da80ed62b..73cc4460a8 100644
--- a/multimedia/vkeybd/vkeybd.info
+++ b/multimedia/vkeybd/vkeybd.info
@@ -1,10 +1,10 @@
PRGNAM="vkeybd"
VERSION="0.1.18d"
HOMEPAGE="https://github.com/tiwai/vkeybd"
-DOWNLOAD="http://ftp.osuosl.org/pub/gentoo/distfiles/vkeybd-0.1.18d.tar.bz2"
+DOWNLOAD="http://ftp.osuosl.org/pub/gentoo/distfiles/e6/vkeybd-0.1.18d.tar.bz2"
MD5SUM="5c7bd16e2903866f949879b885953a2b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/vlc/README b/multimedia/vlc/README
index 0ac727b531..b823fbc0f4 100644
--- a/multimedia/vlc/README
+++ b/multimedia/vlc/README
@@ -12,42 +12,25 @@ are detected at build time, they will be included. Conversely if
optional packages are not available at build time, vlc will generally
continue to build with a reduced feature set.
-Support for OpenCV is supported using either the "default" opencv
-package or the opencv-legacy package (version 3.1.0) from SBo. Either
-package will be detected and used if already installed. If opencv support
-is not wanted despite the presence of opencv or opencv-legacy, it can be
-explicitly disabled by setting the the OPENCV environment variable
-to "no" e.g.
- OPENCV=no sh vlc.SlackBuild
-
Support for Wayland is a special case. It is not supported by default
but can be enabled setting the WAYLAND environment variable to "yes"
when running the SlackBuild e.g.
WAYLAND=yes sh vlc.SlackBuild
-This support also requires additional SBo packages wayland-egl and
-wayland-protocols. It also depends on the qt5 package having been
-built with wayland support i.e. wayland package was installed when the
-qt5 package was built.
By default, the vlc runtime is not able to be run as root. This
security feature may be side stepped by building vlc with the RUNASROOT
environment variable set e.g.
RUNASROOT=yes sh vlc.SlackBuild
-Some versions of the automatically deteced optional libaom package are
-incompatible with this version of vlc (the build will fail with an
-incompatible libaom). Such an incompatible libaom may be ignored
-during building by setting the LIBAOM environmant variable to "no"
-e.g.
- LIBAOM=no sh vlc.SlackBuild
-
-Please advise the maintainer to suggest support for any further options.
-
-
-*NOTES*
-- the qt4 interface seems not to be working ATM so the qt5 one is
- enabled by default: this means qt5 is a new mandatory dependency
-- you *need* to version-bump the libva and libva-intel-driver in
- Slackware to versions 1.7.3 for VAAPI support: as we suppose
- a standard install, "--enable-libva=no" is added between the
- configure options, instead
+Playing of AV1 encoded video is supported when either of SBo's
+multimedia/aom or libraries/dav1d packages is detected when vlc
+is built. One of these is expected to become required in a future
+release. Some versions of the automatically detected optional aom
+package are incompatible with this version of vlc and in this case
+the build will fail. This can be avoided by setting the AOM environment
+variable to "no" e.g.
+ AOM=no sh vlc.SlackBuild
+
+You may disable LUA support by setting the LUA environment variable.
+This will remove the lua dependency e.g.
+ LUA=no sh vlc.SlackBuild
diff --git a/multimedia/vlc/patch_vlc_cache_gen.diff b/multimedia/vlc/cache.patch
index 957e6e96df..4225d33ad4 100644
--- a/multimedia/vlc/patch_vlc_cache_gen.diff
+++ b/multimedia/vlc/cache.patch
@@ -1,6 +1,6 @@
---- bin/Makefile.am.orig 2015-06-03 10:49:51.266282736 +1000
-+++ bin/Makefile.am 2015-06-03 10:50:20.469282310 +1000
-@@ -72,6 +72,10 @@
+--- a/bin/Makefile.am 2015-06-03 10:49:51.266282736 +1000
++++ b/bin/Makefile.am 2015-06-03 10:50:20.469282310 +1000
+@@ -124,6 +124,10 @@
vlc_cache_gen_DEPENDENCIES = vlc_win32_rc.$(OBJEXT)
endif
@@ -11,9 +11,9 @@
#
# Plug-ins cache
#
---- configure.ac.orig 2015-06-03 10:53:22.299279657 +1000
-+++ configure.ac 2015-06-03 09:44:33.338339889 +1000
-@@ -762,6 +762,12 @@
+--- a/configure.ac 2015-06-03 10:53:22.299279657 +1000
++++ b/configure.ac 2015-06-03 09:44:33.338339889 +1000
+@@ -888,6 +888,12 @@
])
])
diff --git a/multimedia/vlc/dvdnav.patch b/multimedia/vlc/dvdnav.patch
new file mode 100644
index 0000000000..e5ecc80d75
--- /dev/null
+++ b/multimedia/vlc/dvdnav.patch
@@ -0,0 +1,13 @@
+--- a/modules/access/dvdnav.c 2020-04-07 23:35:05.000000000 +1000
++++ b/modules/access/dvdnav.c 2020-04-16 22:32:34.175000000 +1000
+@@ -59,6 +59,10 @@
+
+
+ #include <dvdnav/dvdnav.h>
++/* libdvdnav-5.0.3 doesn't define DVDNAV_VERSION */
++#ifndef DVDNAV_VERSION
++#define DVDNAV_VERSION (50003)
++#endif
+ /* Expose without patching headers */
+ dvdnav_status_t dvdnav_jump_to_sector_by_time(dvdnav_t *, uint64_t, int32_t);
+
diff --git a/multimedia/vlc/dvdread.patch b/multimedia/vlc/dvdread.patch
new file mode 100644
index 0000000000..0f2912d7e0
--- /dev/null
+++ b/multimedia/vlc/dvdread.patch
@@ -0,0 +1,15 @@
+--- a/modules/access/dvdread.c 2020-03-28 23:39:33.000000000 +1000
++++ b/modules/access/dvdread.c 2020-04-16 22:10:43.065000000 +1000
+@@ -55,6 +55,12 @@
+ #include <unistd.h>
+
+ #include <dvdread/dvd_reader.h>
++#ifndef DVDREAD_VERSION_CODE
++#define DVDREAD_VERSION_CODE(major, minor, micro) \
++ (((major) * 10000) + \
++ ((minor) * 100) + \
++ ((micro) * 1))
++#endif
+ #include <dvdread/ifo_types.h>
+ #include <dvdread/ifo_read.h>
+ #include <dvdread/nav_read.h>
diff --git a/multimedia/vlc/patch-opencv4.diff b/multimedia/vlc/patch-opencv4.diff
deleted file mode 100644
index da158371d7..0000000000
--- a/multimedia/vlc/patch-opencv4.diff
+++ /dev/null
@@ -1,24 +0,0 @@
---- configure.ac.prev 2019-03-10 13:15:05.033000000 +1000
-+++ configure.ac 2019-03-10 13:19:03.840000000 +1000
-@@ -1848,7 +1848,7 @@
- dnl
- dnl OpenCV wrapper and example filters
- dnl
--PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
-+PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_wrapper], [opencv4 > 4.0], (OpenCV (computer vision) filter), [auto])
-
-
- dnl
---- modules/video_filter/Makefile.am.orig 2017-11-25 01:29:18.000000000 +1000
-+++ modules/video_filter/Makefile.am 2019-03-12 14:21:25.417000000 +1000
-@@ -147,8 +147,8 @@
- libdeinterlace_plugin_la_LIBADD = libdeinterlace_common.la
- video_filter_LTLIBRARIES += libdeinterlace_plugin.la
-
--libopencv_wrapper_plugin_la_SOURCES = video_filter/opencv_wrapper.c
--libopencv_wrapper_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) $(OPENCV_CFLAGS)
-+libopencv_wrapper_plugin_la_SOURCES = video_filter/opencv_wrapper.cpp
-+libopencv_wrapper_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) $(OPENCV_CFLAGS) -fpermissive
- libopencv_wrapper_plugin_la_LIBADD = $(OPENCV_LIBS)
- libopencv_wrapper_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(video_filterdir)'
- video_filter_LTLIBRARIES += $(LTLIBopencv_wrapper)
diff --git a/multimedia/vlc/patch-projectM-fontpath.diff b/multimedia/vlc/projectM.patch
index 5c4726296c..0eafc24628 100644
--- a/multimedia/vlc/patch-projectM-fontpath.diff
+++ b/multimedia/vlc/projectM.patch
@@ -1,6 +1,6 @@
---- modules/visualization/projectm.cpp.orig 2013-09-13 01:18:34.000000000 +1000
-+++ modules/visualization/projectm.cpp 2014-09-04 14:53:21.510242036 +1000
-@@ -79,8 +79,8 @@
+--- a/modules/visualization/projectm.cpp 2013-09-13 01:18:34.000000000 +1000
++++ b/modules/visualization/projectm.cpp 2014-09-04 14:53:21.510242036 +1000
+@@ -82,8 +82,8 @@
# define FONT_PATH_MENU "C:\\WINDOWS\\Fonts\\arial.ttf"
# define PRESET_PATH NULL
#else
diff --git a/multimedia/vlc/slack-desc b/multimedia/vlc/slack-desc
index 4ff7f2d288..7ae947d4c2 100644
--- a/multimedia/vlc/slack-desc
+++ b/multimedia/vlc/slack-desc
@@ -15,5 +15,5 @@ vlc: video codecs and file formats as well as DVDs, VCDs, and various
vlc: streaming protocols. It is able to stream over networks and to
vlc: transcode multimedia files and save them into various formats.
vlc:
-vlc: homepage: http://www.videolan.org/vlc/
+vlc: homepage: http://www.videolan.org/vlc
vlc:
diff --git a/multimedia/vlc/vlc.SlackBuild b/multimedia/vlc/vlc.SlackBuild
index 4f21102ecd..15f5b8c261 100644
--- a/multimedia/vlc/vlc.SlackBuild
+++ b/multimedia/vlc/vlc.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for VLC media player
# Written by Andrea De Pasquale <andrea@de-pasquale.name>
@@ -6,31 +6,49 @@
# modified to build VLC only, shared libraries needed.
# Copyright (c) 2007,2008,2009,2010,2011 Eric Hameleers, Eindhoven, Netherlands
-# Copyright (c) 2014-2020 Christoph Willing, Brisbane, Australia
+# Copyright (c) 2014-2022 Christoph Willing, Brisbane, Australia
+# Copyright (c) 2022 Bill Kirkpatrick, Bay City, Texas, USA
+# Copyright (c) 2023 Tim Dickson, Scotland
+# Copyright (c) 2024 Steven Voges <Oregon, USA>
+# All rights reserved.
#
-# 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
+# Redistribution and use of this script, with or without modification is
+# permitted, provided that the following conditions are met:
+
+# 1. Redistribution of this script must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
# copies.
#
-# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR
-# 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.
+# IN NO EVENT SHALL THE AUTHOR 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
+# WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
# -----------------------------------------------------------------------------
+# 20221224 bkw: Modified by SlackBuilds.org, BUILD=4:
+# - libebml builds are OK now, get rid of "stop the build" code.
+# - don't install useless INSTALL and ABOUT-NLS in doc dir.
+
+# 20220215 bkw: Modified by SlackBuilds.org:
+# - stop the build if libebml is installed, since it will fail.
+
+# 20230224 tjd: updated for 3.0.18 added patch to disable libplacebo
+# thanks to bkw
+
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=vlc
-VERSION=${VERSION:-3.0.8}
+VERSION=${VERSION:-3.0.20}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -40,13 +58,17 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
@@ -57,21 +79,6 @@ else
fi
SLKLDFLAGS="-lrt"
-DOCS="ABOUT-NLS AUTHORS COPYING INSTALL NEWS README THANKS"
-qtversion="--enable-qt=4" ; [ "${QTVERSION:-5}" != "4" ] && qtversion="--enable-qt=5"
-wayland="--disable-wayland" ; [ "${WAYLAND:-no}" != "no" ] && wayland="--enable-wayland"
-
-# In an ordinary virtual machine, since a different kernal is running,
-# a unique dbus id is needed.
-# However with LXC, the same kernel is used in each container,
-# so we insert an arbitrary value
-#
-grep "container=" /etc/rc.d/rc.S >/dev/null 2>/dev/null
-if [ $? -eq 0 ]; then
- mkdir -p /var/lib/dbus/
- echo "4349d719fcf875a557a8c00400000014" > /var/lib/dbus/machine-id
-fi
-
set -e
rm -rf $PKG
@@ -81,39 +88,33 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
cd $PRGNAM-$VERSION
-patch -p0 < $CWD/patch-projectM-fontpath.diff
-patch -p0 < $CWD/patch_vlc_cache_gen.diff
+sed -i '/DEPRECATED/s:^://:' modules/text_renderer/freetype/text_layout.c
-opencv=""
-if [ "${OPENCV:-yes}" != "yes" ]; then
- opencv="--disable-opencv" ;
-else
- if pkg-config --exists opencv4 ; then
- opencv="--enable-opencv"
- patch -p0 < $CWD/patch-opencv4.diff
- mv modules/video_filter/opencv_wrapper.c modules/video_filter/opencv_wrapper.cpp
- elif pkg-config --exists opencv ; then
- # opencv-legacy
- opencv="--enable-opencv"
- else
- opencv="--disable-opencv"
- fi
-fi
+patch -p1 < $CWD/dvdread.patch
+patch -p1 < $CWD/dvdnav.patch
+patch -p1 < $CWD/projectM.patch
+patch -p1 < $CWD/cache.patch
+
+# Don't enable wayland by default
+wayland="--disable-wayland" ; [ "${WAYLAND:-no}" != "no" ] && wayland="--enable-wayland"
# Enable vlc to be run as root
runasroot=""; [ "${RUNASROOT:-no}" != "no" ] && runasroot="--enable-run-as-root"
-# Disable use of libaom
-libaom=""; [ "${LIBAOM:-yes}" = "no" ] && libaom="--disable-aom"
+# Give the possibility to explicitly disable aom support
+aom=""; [ "${AOM:-yes}" = "no" ] && aom="--disable-aom"
+
+# Allow to build without lua
+lua=""; [ "${LUA:-yes}" = "no" ] && lua="--disable-lua"
autoreconf -fiv
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -126,34 +127,36 @@ LDFLAGS="$SLKLDFLAGS" \
--docdir=/usr/doc/vlc-$VERSION \
--localstatedir=/var \
--build=$ARCH-slackware-linux \
- $qtversion \
+ --enable-qt=5 \
+ --enable-merge-ffmpeg \
+ --disable-libplacebo \
+ --disable-upnp \
$wayland \
- $opencv \
$runasroot \
- $libaom \
- --enable-merge-ffmpeg \
- --enable-libva=no \
- --with-kde-solid=no \
-
+ $aom \
+ $lua
make
make DESTDIR=$PKG install
-mkdir -p $PKG/usr/man/man1
-gzip -9c doc/vlc.1 > $PKG/usr/man/man1/vlc.1.gz
+install -D -m0644 extras/analyser/vlc.vim $PKG/usr/share/vim/vimfiles/syntax/vlc.vim
-mkdir -p $PKG/$(cd /usr/share/vim/vim*/syntax ; pwd)
-cp extras/analyser/vlc.vim $PKG/$(cd /usr/share/vim/vim*/syntax ; pwd)/
+rm -f $PKG/usr/lib*/*.la
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
-find $PKG/usr/doc -type f -exec chmod 644 {} \;
-chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION/*
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+mkdir -p $PKG/usr/man/man1
+gzip -9c doc/vlc.1 > $PKG/usr/man/man1/vlc.1.gz
find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" \
- | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING NEWS README THANKS \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+find $PKG/usr/doc -type f -exec chmod 644 {} \;
+chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION/*
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
@@ -162,4 +165,4 @@ sed -e s/%LIBDIRSUFFIX%/$LIBDIRSUFFIX/g $CWD/doinst.sh.in > $PKG/install/doinst.
###sbolint on
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vlc/vlc.info b/multimedia/vlc/vlc.info
index 96f288ffb5..92eb2e2fa9 100644
--- a/multimedia/vlc/vlc.info
+++ b/multimedia/vlc/vlc.info
@@ -1,10 +1,10 @@
PRGNAM="vlc"
-VERSION="3.0.8"
+VERSION="3.0.20"
HOMEPAGE="https://www.videolan.org/vlc/"
-DOWNLOAD="https://get.videolan.org/vlc/3.0.8/vlc-3.0.8.tar.xz"
-MD5SUM="744442ec0c145453ea1d257914c8072e"
+DOWNLOAD="https://get.videolan.org/vlc/3.0.20/vlc-3.0.20.tar.xz"
+MD5SUM="e8337fcd2df92f3901dad091fb85f545"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="libass libdc1394 libdvbpsi libmpeg2 libupnp lua portaudio twolame opus ffmpeg libwebp gsm libtar libkate faac libdca libmatroska libshout speex avahi projectM jack libsidplay2 zvbi faad2 libavc1394 libmodplug musepack-tools vcdimager dirac gnome-vfs live555 qt5 rtmpdump libdvdcss fluidsynth schroedinger libminizip chromaprint x264 x265 libbluray libnfs protobuf"
-MAINTAINER="Christoph Willing"
-EMAIL="chris.willing@linux.com"
+REQUIRES="libass libdc1394 libdvbpsi libmpeg2 lua portaudio twolame gsm libtar libkate faac libdca libshout avahi projectM jack libsidplay2 zvbi faad2 libavc1394 libmodplug musepack-tools vcdimager dirac gnome-vfs live555 rtmpdump libdvdcss schroedinger libminizip chromaprint x264 x265 libnfs protobuf3"
+MAINTAINER="Steven Voges"
+EMAIL="svoges.sbo@gmail.com"
diff --git a/multimedia/vlsub/vlsub.SlackBuild b/multimedia/vlsub/vlsub.SlackBuild
index 949d60b868..d44f72a9c7 100644
--- a/multimedia/vlsub/vlsub.SlackBuild
+++ b/multimedia/vlsub/vlsub.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for vlsub
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=vlsub
VERSION=${VERSION:-0.10.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -83,4 +93,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vlsub/vlsub.info b/multimedia/vlsub/vlsub.info
index dc0fa13f78..d424fae736 100644
--- a/multimedia/vlsub/vlsub.info
+++ b/multimedia/vlsub/vlsub.info
@@ -1,7 +1,7 @@
PRGNAM="vlsub"
VERSION="0.10.2"
HOMEPAGE="https://github.com/exebetche/vlsub"
-DOWNLOAD="https://github.com/exebetche/vlsub/archive/0.10.2.tar.gz"
+DOWNLOAD="https://github.com/exebetche/vlsub/archive/0.10.2/vlsub-0.10.2.tar.gz"
MD5SUM="5c4f5a53b74315073676a5b2bef91935"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/multimedia/vo-amrwbenc/README b/multimedia/vo-amrwbenc/README
new file mode 100644
index 0000000000..2f86bee314
--- /dev/null
+++ b/multimedia/vo-amrwbenc/README
@@ -0,0 +1,4 @@
+Library for the VisualOn Adaptive Multi rate
+wide band audii encoder.
+
+This is an optional dependency for FFmpeg.
diff --git a/multimedia/nightingale/slack-desc b/multimedia/vo-amrwbenc/slack-desc
index 7a4d06982a..95e670ff9c 100644
--- a/multimedia/nightingale/slack-desc
+++ b/multimedia/vo-amrwbenc/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-nightingale: nightingale (multimedia player)
-nightingale:
-nightingale: Nightingale chirps your favorite tunes!
-nightingale:
-nightingale:
-nightingale: A beautiful interface with a wide range of supported audio
-nightingale: formats, all with multi-platform support!
-nightingale:
-nightingale: Homepage: http://www.songbirdnest.com/
-nightingale:
-nightingale:
+vo-amrwbenc: vo-amrwbenc (AMR-WB Encoder)
+vo-amrwbenc:
+vo-amrwbenc: Library for the VisualOn Adaptive Multi rate
+vo-amrwbenc: wide band audii encoder.
+vo-amrwbenc:
+vo-amrwbenc: Homepage: https://sourforge.net/projects/opencore-amr
+vo-amrwbenc:
+vo-amrwbenc:
+vo-amrwbenc:
+vo-amrwbenc:
+vo-amrwbenc:
diff --git a/multimedia/gst-plugins-bad/gst-plugins-bad.SlackBuild b/multimedia/vo-amrwbenc/vo-amrwbenc.SlackBuild
index c9cfb68a14..47705c1806 100644
--- a/multimedia/gst-plugins-bad/gst-plugins-bad.SlackBuild
+++ b/multimedia/vo-amrwbenc/vo-amrwbenc.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for gst-plugins-bad
+# Slackware build script for vo-amrwbenc
-# Copyright 2013-2015 Robby Workman, Tuscaloosa, Alabama, USA
+# Copyright 2022 Vijay Marcel
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,26 +22,28 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=gst-plugins-bad
-VERSION=${VERSION:-1.6.2}
-BUILD=${BUILD:-2}
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=vo-amrwbenc
+VERSION=${VERSION:-0.1.3}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
+ i?86) export ARCH=i586 ;;
+ arm*) export ARCH=arm ;;
+ *) export ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -54,46 +56,58 @@ else
LIBDIRSUFFIX=""
fi
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee $OUTPUT/error-${PRGNAM}.log' ERR
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS -std=c++11" \
+ CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
+ --bindir=/usr/bin \
+ --enable-shared \
--docdir=/usr/doc/$PRGNAM-$VERSION \
+ --enable-example \
+ --disable-static \
--build=$ARCH-slackware-linux
make
make install DESTDIR=$PKG
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | \
- grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- AUTHORS COPYING* ChangeLog INSTALL NEWS RE* \
- $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING NOTICE README ChangeLog $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $TMP/$PRGNAM-$VERSION/amrwbenc/doc/voAMRWBEncoderSDK.pdf $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vo-amrwbenc/vo-amrwbenc.info b/multimedia/vo-amrwbenc/vo-amrwbenc.info
new file mode 100644
index 0000000000..28ff38ae59
--- /dev/null
+++ b/multimedia/vo-amrwbenc/vo-amrwbenc.info
@@ -0,0 +1,10 @@
+PRGNAM="vo-amrwbenc"
+VERSION="0.1.3"
+HOMEPAGE="https://sourceforge.net/projects/opencore-amr/"
+DOWNLOAD="https://downloads.sourceforge.net/sourceforge/opencore-amr/vo-amrwbenc/vo-amrwbenc-0.1.3.tar.gz"
+MD5SUM="f63bb92bde0b1583cb3cb344c12922e0"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/vobcopy/vobcopy.SlackBuild b/multimedia/vobcopy/vobcopy.SlackBuild
index 09c65d04b9..09cd8590db 100644
--- a/multimedia/vobcopy/vobcopy.SlackBuild
+++ b/multimedia/vobcopy/vobcopy.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware Package Build Script for vobcopy
# Home Page http://vobcopy.org/
@@ -24,10 +24,13 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=vobcopy
VERSION=${VERSION:-1.2.0}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -37,7 +40,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -97,4 +107,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
### building package
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vobsub2srt/README b/multimedia/vobsub2srt/README
index 9c923197f0..0949488206 100644
--- a/multimedia/vobsub2srt/README
+++ b/multimedia/vobsub2srt/README
@@ -1,13 +1,13 @@
vobsub2srt (convert VOBSUB subtitles to SRT)
-VobSub2SRT is a simple command line program to convert =.idx= / =.sub= subtitles
-into =.srt= text subtitles by using OCR. It is based on code from the
-MPlayer project. Some minor parts are copied from ffmpeg/avutil headers.
-Tesseract is used as OCR software.
+VobSub2SRT is a simple command line program to convert .idx / .sub
+subtitles into .srt text subtitles by using OCR. It is based on code
+from the MPlayer project. Some minor parts are copied from
+ffmpeg/avutil headers. Tesseract is used for OCR.
-vobsub2srt is released under the GPL3+ license. The MPlayer code included is
-GPL2+ licensed.
+vobsub2srt is released under the GPL3+ license. The MPlayer code
+included is GPL2+ licensed.
-The quality of the OCR depends on the text in the subtitles. Currently the code
-does not use any preprocessing. But you can correct mistakes in the =.srt=
-files with a text editor or a special subtitle editor.
+The quality of the OCR depends on the text in the subtitles.
+Currently the code does not use any preprocessing. But you can
+correct any mistakes in the .srt files with any text editor.
diff --git a/multimedia/vobsub2srt/climits.diff b/multimedia/vobsub2srt/climits.diff
new file mode 100644
index 0000000000..e0bdd236ad
--- /dev/null
+++ b/multimedia/vobsub2srt/climits.diff
@@ -0,0 +1,11 @@
+diff -Naur VobSub2SRT-1.0pre7.orig/src/vobsub2srt.c++ VobSub2SRT-1.0pre7/src/vobsub2srt.c++
+--- VobSub2SRT-1.0pre7.orig/src/vobsub2srt.c++ 2015-08-31 05:45:47.000000000 +1200
++++ VobSub2SRT-1.0pre7/src/vobsub2srt.c++ 2022-02-21 20:17:27.612072700 +1300
+@@ -30,6 +30,7 @@
+ #include <string>
+ #include <cstdio>
+ #include <vector>
++#include <climits>
+ using namespace std;
+
+ #include "langcodes.h++"
diff --git a/multimedia/vobsub2srt/slack-desc b/multimedia/vobsub2srt/slack-desc
index 85c7717e4b..c0fb0acc08 100644
--- a/multimedia/vobsub2srt/slack-desc
+++ b/multimedia/vobsub2srt/slack-desc
@@ -8,7 +8,7 @@
|-----handy-ruler------------------------------------------------------|
vobsub2srt: vobsub2srt (convert VOBSUB subtitles to SRT)
vobsub2srt:
-vobsub2srt: Converts VobSub subtitles (.idx/.srt format) into .srt subtitles
+vobsub2srt: Converts VobSub subtitles (.idx/.sub format) into .srt subtitles
vobsub2srt:
vobsub2srt:
vobsub2srt: homepage: https://github.com/ruediger/VobSub2SRT
diff --git a/multimedia/vobsub2srt/vobsub2srt.SlackBuild b/multimedia/vobsub2srt/vobsub2srt.SlackBuild
index 9fd2f3b0c1..e7da07154d 100644
--- a/multimedia/vobsub2srt/vobsub2srt.SlackBuild
+++ b/multimedia/vobsub2srt/vobsub2srt.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for vobsub2srt
@@ -22,11 +22,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=vobsub2srt
SRCNAM=VobSub2SRT
VERSION=${VERSION:-1.0pre7}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -73,15 +83,18 @@ find -L . \
# patch to build with latest tesseract:
patch -p1 < $CWD/vobsub2srt-c++11.patch
+# fix build with newer g++
+patch -p1 < $CWD/climits.diff
+
mkdir -p build
cd build
cmake \
-DCMAKE_C_FLAGS="$SLKCFLAGS" \
- -DCMAKE_CXX_FLAGS="$SLKCFLAGS -std=c++11" \
+ -DCMAKE_CXX_FLAGS="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DINSTALL_DATA_DIR_BASE=/usr/share \
-DINSTALL_DOC_DIR_BASE=/usr/doc \
- -DINSTALL_MAN_DIR=/usr/man \
+ -DINSTALL_MAN_DIR=/usr/man/man1 \
-DCMAKE_BUILD_TYPE=Release ..
make
make install DESTDIR=$PKG
@@ -93,7 +106,8 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+# make install creates the usr/doc/$PRGNAM, so:
+mv $PKG/usr/doc/$PRGNAM $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
COPYING README* \
$PKG/usr/doc/$PRGNAM-$VERSION
@@ -103,4 +117,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vokoscreen/README b/multimedia/vokoscreen/README
deleted file mode 100644
index 4bb086a679..0000000000
--- a/multimedia/vokoscreen/README
+++ /dev/null
@@ -1,2 +0,0 @@
-vokoscreen is an easy to use screencast creator to record educational videos,
-live recordings of browser, installation, videoconferences, etc.
diff --git a/multimedia/vokoscreen/doinst.sh b/multimedia/vokoscreen/doinst.sh
deleted file mode 100644
index 5fb28930db..0000000000
--- a/multimedia/vokoscreen/doinst.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
-fi
diff --git a/multimedia/vokoscreen/vokoscreen.info b/multimedia/vokoscreen/vokoscreen.info
deleted file mode 100644
index f42e9a9389..0000000000
--- a/multimedia/vokoscreen/vokoscreen.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="vokoscreen"
-VERSION="2.5.0"
-HOMEPAGE="http://linuxecke.volkoh.de/vokoscreen/vokoscreen.html"
-DOWNLOAD="https://github.com/vkohaupt/vokoscreen/archive/2.5.0/vokoscreen-2.5.0.tar.gz"
-MD5SUM="c4fd74a1a459dab818eb05df1ca93be0"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="qt5 ffmpeg lame"
-MAINTAINER="Harald Achitz"
-EMAIL="harald.achitz@gmail.com"
diff --git a/multimedia/vokoscreenNG/0001-Add-better-integration-for-Linux.patch b/multimedia/vokoscreenNG/0001-Add-better-integration-for-Linux.patch
new file mode 100644
index 0000000000..009c382fb1
--- /dev/null
+++ b/multimedia/vokoscreenNG/0001-Add-better-integration-for-Linux.patch
@@ -0,0 +1,111 @@
+The original patch was from an ArchLinux package
+https://github.com/archlinux/svntogit-community/blob/packages/vokoscreen/trunk/0001-Add-better-integration-for-Linux.patch
+
+I got this one from https://github.com/City-busz/vokoscreenNG branch 'linux-support', and modified it to work with 3.1.0
+
+commit 0a378409 (HEAD -> linux-support, origin/linux-support)
+Author: Balló György <ballogyor@gmail.com>
+Date: 2020-07-06 07:14:26 -0600
+
+ Add better integration for Linux
+
+ Add AppStream metadata, add installation target.
+
+---
+
+
+diff --git a/src/applications/INFO b/src/applications/INFO
+index 4195de8..1c1bd87 100644
+--- a/src/applications/INFO
++++ b/src/applications/INFO
+@@ -1,2 +1,3 @@
++vokoscreenNG.appdata.xml
+ vokoscreenNG.desktop
+ vokoscreenNG.png
+diff --git a/src/applications/vokoscreenNG.appdata.xml b/src/applications/vokoscreenNG.appdata.xml
+new file mode 100644
+index 0000000..883f4ae
+--- /dev/null
++++ b/src/applications/vokoscreenNG.appdata.xml
+@@ -0,0 +1,48 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<component type="desktop">
++ <id>vokoscreenNG.desktop</id>
++ <metadata_license>CC0-1.0</metadata_license>
++ <project_license>GPL-2.0</project_license>
++ <name>vokoscreenNG</name>
++ <summary>Easy to use desktop recorder</summary>
++ <description>
++ <p>vokoscreenNG is an easy to use screencast creator to record educational videos,
++ live recordings of browser, installation, videoconferences, etc.</p>
++ </description>
++ <screenshots>
++ <screenshot type="default">
++ <image>https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-0.png</image>
++ </screenshot>
++ <screenshot>
++ <image>https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-1.png</image>
++ </screenshot>
++ <screenshot>
++ <image>https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-2.png</image>
++ </screenshot>
++ <screenshot>
++ <image>https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-3.png</image>
++ </screenshot>
++ <screenshot>
++ <image>https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-4.png</image>
++ </screenshot>
++ <screenshot>
++ <image>https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-5.png</image>
++ </screenshot>
++ <screenshot>
++ <image>https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-6.png</image>
++ </screenshot>
++ <screenshot>
++ <image>https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-7.png</image>
++ </screenshot>
++ <screenshot>
++ <image>https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-8.png</image>
++ </screenshot>
++ <screenshot>
++ <image>https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-9.png</image>
++ </screenshot>
++ </screenshots>
++ <url type="homepage">https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html</url>
++ <url type="bugtracker">https://github.com/vkohaupt/vokoscreenNG/issues</url>
++ <url type="donation">https://linuxecke.volkoh.de/vokoscreen/vokoscreen-donate.html</url>
++ <developer_name>Volker Kohaupt</developer_name>
++</component>
+diff --git a/src/vokoscreenNG.pro b/src/vokoscreenNG.pro
+index d43ed30..7bf3d5a 100644
+--- vokoscreenNG-4.0.0-pristene/src/vokoscreenNG.pro 2024-01-01 15:49:40.000000000 -0700
++++ vokoscreenNG-4.0.0/src/vokoscreenNG.pro 2024-01-02 22:18:58.149334295 -0700
+@@ -207,3 +207,28 @@
+
+ # Container
+ include(container/container.pri)
++
++unix:!macx {
++ isEmpty(PREFIX) {
++ PREFIX = /usr/local
++ }
++ isEmpty(BINDIR) {
++ BINDIR = $$PREFIX/bin
++ }
++ isEmpty(DATADIR) {
++ DATADIR = $$PREFIX/share
++ }
++
++ target.path = $$BINDIR
++
++ icon.files = applications/vokoscreenNG.png
++ icon.path = $$DATADIR/icons/hicolor/256x256/apps/
++
++ desktop.files = applications/vokoscreenNG.desktop
++ desktop.path = $$DATADIR/applications/
++
++ appdata.files = applications/vokoscreenNG.appdata.xml
++ appdata.path = $$DATADIR/metainfo/
++
++ INSTALLS += target icon desktop appdata
++}
diff --git a/multimedia/vokoscreenNG/README b/multimedia/vokoscreenNG/README
new file mode 100644
index 0000000000..ed98b62da4
--- /dev/null
+++ b/multimedia/vokoscreenNG/README
@@ -0,0 +1,13 @@
+vokoscreenNG is an easy to use screencast creator to record educational
+videos, live recordings of browser, installation, videoconferences, etc.
+
+This application requires that $XDG_SESSION_TYPE be exported with either
+"X11" or "Wayland". This SlackBuild installs profile scripts under
+/etc/profile.d to set this variable. These scripts use the value of
+XDG_SESSION_TYPE from the environment in which this SlackBuild is run,
+defaulting to XDG_SESSION_TYPE=X11.
+
+To control the session type, run this script with your preferred
+definition of XDG_SESSION_TYPE:
+
+ XDG_SESSION_TYPE=Wayland ./vokoscreenNG.SlackBuild
diff --git a/multimedia/simpleburn/doinst.sh b/multimedia/vokoscreenNG/doinst.sh
index 65c7e2eeb9..65c7e2eeb9 100644
--- a/multimedia/simpleburn/doinst.sh
+++ b/multimedia/vokoscreenNG/doinst.sh
diff --git a/multimedia/vokoscreenNG/slack-desc b/multimedia/vokoscreenNG/slack-desc
new file mode 100644
index 0000000000..f8188ae4cc
--- /dev/null
+++ b/multimedia/vokoscreenNG/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+vokoscreenNG: vokoscreenNG (screencast creator)
+vokoscreenNG:
+vokoscreenNG: vokoscreenNG is an easy to use screencast creator to record
+vokoscreenNG: educational videos, live recordings of browser, installation,
+vokoscreenNG: videoconferences, etc.
+vokoscreenNG:
+vokoscreenNG:
+vokoscreenNG:
+vokoscreenNG:
+vokoscreenNG: http://linuxecke.volkoh.de/vokoscreen/vokoscreen.html
+vokoscreenNG:
diff --git a/multimedia/vokoscreenNG/vokoscreenNG.SlackBuild b/multimedia/vokoscreenNG/vokoscreenNG.SlackBuild
new file mode 100644
index 0000000000..82876bc2fa
--- /dev/null
+++ b/multimedia/vokoscreenNG/vokoscreenNG.SlackBuild
@@ -0,0 +1,113 @@
+#!/bin/bash
+
+# Slackware build script for VokoscreenNG
+
+# Erik Falor | Logan, UT, USA | ewfalor@gmail.com | January 2024
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=vokoscreenNG
+VERSION=${VERSION:-4.0.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+patch -Np1 -i $CWD/0001-Add-better-integration-for-Linux.patch
+
+qmake PREFIX=/usr QMAKE_CXXFLAGS="$SLKCFLAGS" src/vokoscreenNG.pro
+make
+make INSTALL_ROOT=$PKG install
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a -R \
+ COPYING info-licences-changelog-install/* \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+rm $PKG/usr/doc/$PRGNAM-$VERSION/INSTALL
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+mkdir -p etc/profile.d
+cat > etc/profile.d/$PRGNAM.sh << EOF
+#!/bin/sh
+export XDG_SESSION_TYPE=${XDG_SESSION_TYPE:-X11}
+EOF
+
+cat > etc/profile.d/$PRGNAM.csh << EOF
+#!/bin/csh
+setenv XDG_SESSION_TYPE ${XDG_SESSION_TYPE:-X11}
+EOF
+
+chmod 755 etc/profile.d/*
+
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vokoscreenNG/vokoscreenNG.info b/multimedia/vokoscreenNG/vokoscreenNG.info
new file mode 100644
index 0000000000..283d6a2ac2
--- /dev/null
+++ b/multimedia/vokoscreenNG/vokoscreenNG.info
@@ -0,0 +1,10 @@
+PRGNAM="vokoscreenNG"
+VERSION="4.0.0"
+HOMEPAGE="https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html"
+DOWNLOAD="https://github.com/vkohaupt/vokoscreenNG/archive/4.0.0/vokoscreenNG-4.0.0.tar.gz"
+MD5SUM="18adf5419f9485ec8ea036a4e7c56545"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="qt6 %README%"
+MAINTAINER="Erik Falor"
+EMAIL="ewfalor@gmail.com"
diff --git a/multimedia/vvdec/README b/multimedia/vvdec/README
new file mode 100644
index 0000000000..84766ee46d
--- /dev/null
+++ b/multimedia/vvdec/README
@@ -0,0 +1,9 @@
+The Fraunhofer Versatile Video Decoder (VVdeC) is an
+H.266/VVC decoder. Command line options can be seen
+by running the following:
+
+ vvdecapp --help
+
+Note that actual playback of H.266/VVC files is currently
+a little challenging although 3rd party patches exist
+for a modern FFmpeg.
diff --git a/multimedia/vvdec/slack-desc b/multimedia/vvdec/slack-desc
new file mode 100644
index 0000000000..c4eaa85e3c
--- /dev/null
+++ b/multimedia/vvdec/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+vvdec: vvdec (Fraunhofer Versatile Video Decoder)
+vvdec:
+vvdec: A fast and efficient H.266/VVC decoder implementation.
+vvdec:
+vvdec:
+vvdec:
+vvdec:
+vvdec: https://github.com/fraunhoferhhi/vvdec
+vvdec:
+vvdec:
+vvdec:
diff --git a/multimedia/vvdec/vvdec.SlackBuild b/multimedia/vvdec/vvdec.SlackBuild
new file mode 100644
index 0000000000..37f41fd3f4
--- /dev/null
+++ b/multimedia/vvdec/vvdec.SlackBuild
@@ -0,0 +1,108 @@
+#!/bin/bash
+# ----------------------------------------------------------------------
+# Slackware build script for vvdec
+#
+# Copyright (c) 2023-2024 Andrew Strong, Blue Mountains, Australia.
+#
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+# 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.
+# ----------------------------------------------------------------------
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=vvdec
+VERSION=${VERSION:-2.2.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR:PATH=lib${LIBDIRSUFFIX} \
+ -DCMAKE_INSTALL_INCLUDEDIR:PATH=include \
+ -DBUILD_SHARED_LIBS=1 \
+ -DVVDEC_INSTALL_VVDECAPP=on \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a *.md LICENSE.txt $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vvdec/vvdec.info b/multimedia/vvdec/vvdec.info
new file mode 100644
index 0000000000..606304881f
--- /dev/null
+++ b/multimedia/vvdec/vvdec.info
@@ -0,0 +1,10 @@
+PRGNAM="vvdec"
+VERSION="2.2.0"
+HOMEPAGE="https://github.com/fraunhoferhhi/vvdec"
+DOWNLOAD="https://github.com/fraunhoferhhi/vvdec/archive/v2.2.0/vvdec-2.2.0.tar.gz"
+MD5SUM="6f1cd609e3a656ea66643762fa8399a3"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Andrew Strong"
+EMAIL="andrew.david.strong@gmail.com"
diff --git a/multimedia/vvenc/README b/multimedia/vvenc/README
new file mode 100644
index 0000000000..e730b8c6df
--- /dev/null
+++ b/multimedia/vvenc/README
@@ -0,0 +1,19 @@
+The Fraunhofer Versatile Video Encoder (VVenC) is an
+H.266/VVC encoder. Command line options can be seen
+by running the following:
+
+ vvencapp --help
+ vvencFFapp --help
+
+Two issues with the 32bit build currently exist:
+
+ 1. VVenC does not currently build on 32bit Linux
+ although a fix for this is in progress upstream;
+ see Issue 242 on the VVenC github site.
+ 2. When failure to build is addressed it is unlikely
+ that the memory limits of 32bit processors will allow
+ effective encoding.
+
+Note that playback of H.266/VVC files is also currently a
+little challenging under Linux, although 3rd party patches
+for FFmpeg exist.
diff --git a/multimedia/vvenc/slack-desc b/multimedia/vvenc/slack-desc
new file mode 100644
index 0000000000..4d5331ef30
--- /dev/null
+++ b/multimedia/vvenc/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+vvenc: vvenc (Fraunhofer Versatile Video Encoder)
+vvenc:
+vvenc: A fast and efficient H.266/VVC encoder implementation.
+vvenc:
+vvenc:
+vvenc:
+vvenc:
+vvenc: https://github.com/fraunhoferhhi/vvenc
+vvenc:
+vvenc:
+vvenc:
diff --git a/multimedia/vvenc/vvenc.SlackBuild b/multimedia/vvenc/vvenc.SlackBuild
new file mode 100644
index 0000000000..c2fbedcf44
--- /dev/null
+++ b/multimedia/vvenc/vvenc.SlackBuild
@@ -0,0 +1,110 @@
+#!/bin/bash
+# ----------------------------------------------------------------------
+# Slackware build script for vvenc
+#
+# Copyright (c) 2023 Andrew Strong, Blue Mountains, Australia.
+#
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+# 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.
+# ----------------------------------------------------------------------
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=vvenc
+VERSION=${VERSION:-1.7.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR:PATH=lib${LIBDIRSUFFIX} \
+ -DCMAKE_INSTALL_INCLUDEDIR:PATH=include \
+ -DBUILD_SHARED_LIBS=1 \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/configs
+cp -a *.md changelog.txt LICENSE.txt $PKG/usr/doc/$PRGNAM-$VERSION
+# Some sample config files for optional use with vvencFFapp:
+cp -a cfg/* $PKG/usr/doc/$PRGNAM-$VERSION/configs
+
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/vvenc/vvenc.info b/multimedia/vvenc/vvenc.info
new file mode 100644
index 0000000000..af0bda914c
--- /dev/null
+++ b/multimedia/vvenc/vvenc.info
@@ -0,0 +1,10 @@
+PRGNAM="vvenc"
+VERSION="1.7.0"
+HOMEPAGE="https://github.com/fraunhoferhhi/vvenc"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/fraunhoferhhi/vvenc/archive/v1.7.0/vvenc-1.7.0.tar.gz"
+MD5SUM_x86_64="bd14534787f4180cd5bebb248b27285f"
+REQUIRES=""
+MAINTAINER="Andrew Strong"
+EMAIL="andrew.david.strong@gmail.com"
diff --git a/multimedia/w_scan/gcc-10.patch b/multimedia/w_scan/gcc-10.patch
new file mode 100644
index 0000000000..50d2488190
--- /dev/null
+++ b/multimedia/w_scan/gcc-10.patch
@@ -0,0 +1,37 @@
+si_types.h: fix build with gcc 10
+
+Drop service_t, p_service_t, transponder_t and p_transponder_t to avoid
+the following build failure with gcc 10 (which defaults to -fno-common):
+
+/home/giuliobenetti/autobuild/run/instance-3/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -Wall -Wextra -Wno-comment -Wswitch-default -Wno-unused-parameter -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -lrt -o w_scan atsc_psip_section.o countries.o descriptors.o diseqc.o dump-dvbscan.o dump-vdr.o dump-xine.o dump-mplayer.o dump-vlc-m3u.o dvbscan.o lnb.o parse-dvbscan.o satellites.o scan.o section.o tools.o emulate.o dump-xml.o iconv_codes.o char-coding.o
+/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x404): multiple definition of `p_transponder_t'; countries.o:(.bss+0x0): first defined here
+/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x408): multiple definition of `transponder_t'; countries.o:(.bss+0x4): first defined here
+/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x480): multiple definition of `p_service_t'; countries.o:(.bss+0x7c): first defined here
+/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x484): multiple definition of `service_t'; countries.o:(.bss+0x80): first defined here
+
+Fixes:
+ - http://autobuild.buildroot.org/results/5640442cb4ba06bcbcf31540a64f5665862d39f7
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+
+diff -Nura w_scan-20170107.orig/si_types.h w_scan-20170107/si_types.h
+--- w_scan-20170107.orig/si_types.h 2020-09-20 11:09:56.776963441 +0200
++++ w_scan-20170107/si_types.h 2020-09-20 11:13:13.149232478 +0200
+@@ -114,7 +114,7 @@
+ uint32_t logical_channel_number;
+ uint8_t running;
+ void * priv;
+-} service_t, * p_service_t;
++};
+
+ /*******************************************************************************
+ /* transponder type.
+@@ -201,7 +201,7 @@
+ /*----------------------------*/
+ char * network_name;
+ network_change_t network_change;
+-} __attribute__((packed)) transponder_t, * p_transponder_t;
++} __attribute__((packed));
+
+ /*******************************************************************************
+ /* satellite channel routing type.
diff --git a/multimedia/w_scan/w_scan.SlackBuild b/multimedia/w_scan/w_scan.SlackBuild
index 308bbdaa27..59a480cd15 100644
--- a/multimedia/w_scan/w_scan.SlackBuild
+++ b/multimedia/w_scan/w_scan.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for w_scan
@@ -24,26 +24,36 @@
# New maintainer: stormtracknole <stormtracknole@gmail.com>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=w_scan
VERSION=${VERSION:-20141122}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -71,6 +81,8 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+patch -p1 < $CWD/gcc-10.patch
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -98,4 +110,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/w_scan2/README b/multimedia/w_scan2/README
new file mode 100644
index 0000000000..87b85f41ff
--- /dev/null
+++ b/multimedia/w_scan2/README
@@ -0,0 +1,19 @@
+w_scan2 is a small channel scan tool which generates
+ATSC, DVB-C, DVB-S/S2 and DVB-T/T2 channels.conf files.
+
+It's based on the old "scan" tool from linuxtv-dvb-apps-1.1.0
+
+The differences are:
+- no initial tuning data needed, because scanning without this data is
+ exactly what a scan tool like this should do
+- it detects automatically which DVB/ATSC card to use
+- much more output formats, interfacing to other dtv software.
+
+w_scan2 is a fork of the original w_scan
+from https://www.gen2vdr.de/wirbel/w_scan/index2.html
+
+
+adds optional LCN to channel names (channels.conf: mplayer/vdr/xine)
+LCN=yes ./sage.SlackBuild
+so that, if you want the channels sorted by LCN, you can run
+w_scan2 -c IT -X | sort > channels.conf
diff --git a/multimedia/w_scan2/lcn.diff b/multimedia/w_scan2/lcn.diff
new file mode 100644
index 0000000000..6e3529470c
--- /dev/null
+++ b/multimedia/w_scan2/lcn.diff
@@ -0,0 +1,40 @@
+
+--- src/dump-mplayer.c 2024-01-02 01:28:41.000000000 -0000
++++ src/dump-mplayer.c 2024-01-15 16:46:22.194419459 -0000
+@@ -35,7 +35,7 @@
+ {
+ int i;
+
+- fprintf(f, "%s:", s->service_name);
++ fprintf(f, "[LCN-%.4d]%s:", s->logical_channel_number, s->service_name);
+ xine_dump_dvb_parameters(f, t, flags);
+ fprintf(f, ":%i", s->pmt_pid);
+ if (s->video_pid) {
+
+--- src/dump-vdr.c 2024-01-02 01:28:41.000000000 -0000
++++ src/dump-vdr.c 2024-01-15 16:46:19.737419311 -0000
+@@ -558,7 +558,7 @@
+
+ if (!flags->ca_select && s->scrambled)
+ return;
+- fprintf(f, "%s", s->service_name);
++ fprintf(f, "[LCN-%.4d]%s", s->logical_channel_number, s->service_name);
+
+ if (flags->dump_provider)
+ fprintf(f, ";%s", s->provider_name);
+
+--- src/dump-xine.c 2024-01-02 01:28:41.000000000 -0000
++++ src/dump-xine.c 2024-01-15 16:46:17.076419151 -0000
+@@ -113,10 +113,10 @@
+ {
+ if (s->video_pid || s->audio_pid[0]) {
+ if (s->provider_name)
+- fprintf(f, "%s(%s):", s->service_name,
++ fprintf(f, "[LCN-%.4d]%s(%s):", s->logical_channel_number, s->service_name,
+ s->provider_name);
+ else
+- fprintf(f, "%s:", s->service_name);
++ fprintf(f, "[LCN-%.4d]%s:", s->logical_channel_number, s->service_name);
+ xine_dump_dvb_parameters(f, t, flags);
+ fprintf(f, ":%i:%i:%i", s->video_pid,
+ s->ac3_pid[0] ? s->ac3_pid[0] : s->audio_pid[0],
diff --git a/multimedia/w_scan2/slack-desc b/multimedia/w_scan2/slack-desc
new file mode 100644
index 0000000000..2325673b99
--- /dev/null
+++ b/multimedia/w_scan2/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+w_scan2: w_scan2 (ATSC, DVB-C, DVB-S/S2 and DVB-T/T2 scan tool)
+w_scan2:
+w_scan2: w_scan2 is a small channel scan tool which generates
+w_scan2: ATSC, DVB-C, DVB-S/S2 and DVB-T/T2 channels.conf files
+w_scan2:
+w_scan2:
+w_scan2:
+w_scan2:
+w_scan2:
+w_scan2: Homepage: https://github.com/stefantalpalaru/w_scan2/
+w_scan2:
diff --git a/multimedia/gtkpod/gtkpod.SlackBuild b/multimedia/w_scan2/w_scan2.SlackBuild
index 5b0d2dc3c4..70cef05d8a 100644
--- a/multimedia/gtkpod/gtkpod.SlackBuild
+++ b/multimedia/w_scan2/w_scan2.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for gtkpod
+# Slackware build script for w_scan2
-# Copyright 2012-2017 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
+# Copyright 2023 Andrea Sacchetti Picchio Italy
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=gtkpod
-VERSION=${VERSION:-2.1.5}
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=w_scan2
+VERSION=${VERSION:-1.0.15}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -49,6 +56,9 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
@@ -59,9 +69,11 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
+
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
+
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -69,6 +81,9 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+# adds optional LCN to channel names (channels.conf: mplayer/vdr/xine)
+[ "${LCN:-no}" != "no" ] && patch -p0 -i $CWD/lcn.diff
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -78,8 +93,7 @@ CXXFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
- --enable-static=no \
- --disable-schemas-compile \
+ --disable-static \
--build=$ARCH-slackware-linux
make
@@ -92,13 +106,13 @@ find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS COPYING ChangeLog INSTALL NEWS README TODO* TROUBLESHOOTING \
+cp -a \
+ ChangeLog COPYING README.md \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/w_scan2/w_scan2.info b/multimedia/w_scan2/w_scan2.info
new file mode 100644
index 0000000000..91379ed098
--- /dev/null
+++ b/multimedia/w_scan2/w_scan2.info
@@ -0,0 +1,10 @@
+PRGNAM="w_scan2"
+VERSION="1.0.15"
+HOMEPAGE="https://github.com/stefantalpalaru/w_scan2/"
+DOWNLOAD="https://github.com/stefantalpalaru/w_scan2/archive/1.0.15/w_scan2-1.0.15.tar.gz"
+MD5SUM="e046d7ac4e75d5ac4628627e795fe269"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Andrea Sacchetti Picchio"
+EMAIL="andrea dot sacchettipicchio at gmail dot com"
diff --git a/multimedia/w_scan_cpp/README b/multimedia/w_scan_cpp/README
new file mode 100644
index 0000000000..886c37804c
--- /dev/null
+++ b/multimedia/w_scan_cpp/README
@@ -0,0 +1,11 @@
+w_scan_cpp is a dtv channel scanner based on VDR and it's Plugins.
+
+It uses (and therefore links to and includes part of)
+ 1. VDR Plugin framework
+ https://www.tvdr.de
+ 2. VDR satip Plugin
+ https://github.com/rofafor/vdr-plugin-satip
+ 3. VDR wirbelscan Plugin
+ https://www.gen2vdr.de/wirbel/wirbelscan/index2.html
+ 4. librepfunc
+ https://github.com/wirbel-at-vdr-portal/librepfunc
diff --git a/multimedia/w_scan_cpp/slack-desc b/multimedia/w_scan_cpp/slack-desc
new file mode 100644
index 0000000000..0e7e7040b9
--- /dev/null
+++ b/multimedia/w_scan_cpp/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+w_scan_cpp: w_scan_cpp (dtv channel scanner)
+w_scan_cpp:
+w_scan_cpp: w_scan_cpp is a dtv channel scanner based on VDR and it's Plugins
+w_scan_cpp:
+w_scan_cpp:
+w_scan_cpp:
+w_scan_cpp:
+w_scan_cpp:
+w_scan_cpp:
+w_scan_cpp: Homepage: https://www.gen2vdr.de/wirbel/w_scan_cpp/index2.html
+w_scan_cpp:
diff --git a/multimedia/w_scan_cpp/w_scan_cpp.SlackBuild b/multimedia/w_scan_cpp/w_scan_cpp.SlackBuild
new file mode 100644
index 0000000000..d12732059e
--- /dev/null
+++ b/multimedia/w_scan_cpp/w_scan_cpp.SlackBuild
@@ -0,0 +1,124 @@
+#!/bin/bash
+
+# Slackware build script for w_scan_cpp
+
+# Copyright 2024 Andrea Sacchetti Picchio Italy
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=w_scan_cpp
+VERSION=${VERSION:-20231015}
+VERSION_vdr=${VERSION_vdr:-2.6.5}
+VERSION_satip=${VERSION_satip:-2.4.1}
+VERSION_wirbelscan=${VERSION_wirbelscan:-2023.10.15}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+NUMJOBS=${NUMJOBS:-" -j$(nproc) "}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+cd $PRGNAM-$VERSION
+tar xvf $CWD/vdr-$VERSION_vdr.tar.gz
+mv vdr-$VERSION_vdr vdr
+cd vdr/PLUGINS/src
+tar xvf $CWD/vdr-plugin-satip-$VERSION_satip.tar.gz
+mv vdr-plugin-satip-$VERSION_satip satip
+tar xvf $CWD/vdr-wirbelscan-$VERSION_wirbelscan.tgz
+mv wirbelscan-$VERSION_wirbelscan wirbelscan
+cd $TMP/$PRGNAM-$VERSION
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# Fix
+sed "s/satip.h/satip.c/" -i Library.cpp
+sed "/ParseLCN/s/false/true/" -i vdr/PLUGINS/src/wirbelscan/common.cpp
+
+CFLAGS="$SLKCFLAGS -z muldefs" \
+CXXFLAGS="$SLKCFLAGS -z muldefs" \
+ make $NUMJOBS install DESTDIR=$PKG prefix=/usr
+
+# Fix DIR
+mv $PKG/usr/share/man $PKG/usr
+rm -rf $PKG/usr/share
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ CONTRIBUTORS COPYING HISTORY README \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/w_scan_cpp/w_scan_cpp.info b/multimedia/w_scan_cpp/w_scan_cpp.info
new file mode 100644
index 0000000000..fc22ea9bb1
--- /dev/null
+++ b/multimedia/w_scan_cpp/w_scan_cpp.info
@@ -0,0 +1,16 @@
+PRGNAM="w_scan_cpp"
+VERSION="20231015"
+HOMEPAGE="https://www.gen2vdr.de/wirbel/w_scan_cpp/index2.html"
+DOWNLOAD="https://www.gen2vdr.de/wirbel/w_scan_cpp/w_scan_cpp-20231015.tar.bz2 \
+ https://www.gen2vdr.de/wirbel/wirbelscan/vdr-wirbelscan-2023.10.15.tgz \
+ https://github.com/rofafor/vdr-plugin-satip/archive/v2.4.1/vdr-plugin-satip-2.4.1.tar.gz \
+ https://github.com/vdr-projects/vdr/archive/2.6.5/vdr-2.6.5.tar.gz"
+MD5SUM="ac6bca5260c571f81648bf735c0731b8 \
+ 8a012699c1dd1e6ef9b8dd2ddc60d6af \
+ cd9ff5d2b47c3e55d64dbc375f84a5a7 \
+ ded2dd49fd81368d5789393ed087c382"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="pugixml librepfunc"
+MAINTAINER="Andrea Sacchetti Picchio"
+EMAIL="andrea dot sacchettipicchio at gmail dot com"
diff --git a/multimedia/webvfx/README b/multimedia/webvfx/README
new file mode 100644
index 0000000000..6f6e2b1232
--- /dev/null
+++ b/multimedia/webvfx/README
@@ -0,0 +1 @@
+webvfx is a video effects engine based on the mlt framework.
diff --git a/multimedia/webvfx/slack-desc b/multimedia/webvfx/slack-desc
new file mode 100644
index 0000000000..f5472d857c
--- /dev/null
+++ b/multimedia/webvfx/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+webvfx: webvfx (video effects engine)
+webvfx:
+webvfx:
+webvfx: webvfx is a video effects engine based on the mlt framework.
+webvfx:
+webvfx:
+webvfx:
+webvfx:
+webvfx: Website: https://github.com/mltframework/webvfx
+webvfx:
+webvfx:
diff --git a/multimedia/vokoscreen/vokoscreen.SlackBuild b/multimedia/webvfx/webvfx.SlackBuild
index 66a31fd981..6a20c6334e 100644
--- a/multimedia/vokoscreen/vokoscreen.SlackBuild
+++ b/multimedia/webvfx/webvfx.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash -e
-# Slackware build script for <appname>
+# Slackware build script for webvfx
-# Harald Achitz | Stockholm/Sweden | harald.achitz@gmail.com
+# Copyright 2020 Christopher L Duston <christopher.duston@protonmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,15 @@
# 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.
+#
+cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=vokoscreen
-VERSION=${VERSION:-2.5.0}
+PRGNAM=webvfx
+VERSION=${VERSION:-1.1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -55,13 +65,11 @@ else
LIBDIRSUFFIX=""
fi
-set -e
-
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+tar xvf $CWD/$PRGNAM-$VERSION.txz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
@@ -70,27 +78,20 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-qmake-qt5 VOKOSCREEN_INSTALL_PREFIX=/usr QMAKE_CXXFLAGS="$SLKCFLAGS"
-make
+qmake-qt5 -r PREFIX=/usr
make install INSTALL_ROOT=$PKG
-mv $PKG/usr/share/man $PKG/usr/man
-
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- AUTHORS COPYING CREDITS \
+ $TMP/$PRGNAM-$VERSION/doc \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/webvfx/webvfx.info b/multimedia/webvfx/webvfx.info
new file mode 100644
index 0000000000..fb8f4d385b
--- /dev/null
+++ b/multimedia/webvfx/webvfx.info
@@ -0,0 +1,10 @@
+PRGNAM="webvfx"
+VERSION="1.1.0"
+HOMEPAGE="https://github.com/mltframework/webvfx"
+DOWNLOAD="https://github.com/mltframework/webvfx/releases/download/1.1.0/webvfx-1.1.0.txz"
+MD5SUM="23380751bc2aa7ccdd429e911dbfb5f7"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Christopher L Duston"
+EMAIL="christopher.duston@protonmail.com"
diff --git a/multimedia/whistle/whistle.SlackBuild b/multimedia/whistle/whistle.SlackBuild
index d133df0753..0704d0a855 100644
--- a/multimedia/whistle/whistle.SlackBuild
+++ b/multimedia/whistle/whistle.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackbuild for whistle
# Written by Manuel Fill <manuel.fill.42@gmail.com>
@@ -21,10 +21,13 @@
# see fit. Or as I see fit. Or as I fit. Although
# that is unlikely, as I am rather tall.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=whistle
VERSION=${VERSION:-0.9.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -34,7 +37,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -77,4 +87,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/whistle/whistle.info b/multimedia/whistle/whistle.info
index dceeb6af8d..4454f00e2b 100644
--- a/multimedia/whistle/whistle.info
+++ b/multimedia/whistle/whistle.info
@@ -1,10 +1,10 @@
PRGNAM="whistle"
VERSION="0.9.3"
HOMEPAGE="https://github.com/ap0calypse/whistle"
-DOWNLOAD="https://github.com/ap0calypse/whistle/archive/0.9.3.tar.gz"
+DOWNLOAD="https://github.com/ap0calypse/whistle/archive/0.9.3/whistle-0.9.3.tar.gz"
MD5SUM="bddd41feebf3ceb380c51e743ab210e3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="perl-Curses-UI perl-Audio-FLAC-Header perl-IPC-Run perl-IPC-System-Simple perl-MP3-Info perl-Ogg-Vorbis-Header-PurePerl perl-extutils-depends perl-extutils-pkgconfig perl-file-mimeinfo libwww-perl"
+REQUIRES="perl-Curses-UI perl-Audio-FLAC-Header perl-IPC-Run perl-MP3-Info perl-Ogg-Vorbis-Header-PurePerl perl-extutils-depends perl-extutils-pkgconfig perl-file-mimeinfo libwww-perl"
MAINTAINER="Manuel Fill"
EMAIL="manuel.fill.42@gmail.com"
diff --git a/multimedia/winff/README b/multimedia/winff/README
index 0c76f8ddaf..7a65a950cb 100644
--- a/multimedia/winff/README
+++ b/multimedia/winff/README
@@ -5,5 +5,30 @@ convert mpeg's, flv's, and mov's, all into avi's all at once.
lazarus is just a build-time dependency.
-NOTE: if you have a previous ~/.winff directory you might want to
+NOTE:
+If you have a previous ~/.winff directory you might want to
remove it or your presets might not be updated.
+
+WinFF is no longer maintained by the original author. It is currently
+maintained by Debian maintainer Paul Gevers and the website winff.org
+has been hijacked. See the following post for details:
+https://github.com/WinFF/winff/issues/250
+
+I've patched the link for the FFmpeg Windows build website in the
+about section to point it to correct website as mentioned on the
+FFmpeg website. See the following link for details:
+https://ffmpeg.org/download.html#build-windows
+
+The Launchpad link no longer works and I've patched it to point to
+the WinFF Debian maintainer's [Paul Gevers] page. I've made sure other
+websites link to the https version.
+
+There was also an issue with opening the documentation in Slackware.
+The path to the documetation is hardcoded in the source file.
+I've patched it to look in the /usr/doc/$PRGNAM-$VERSION directory.
+
+I've patched winff to use xdg-open to use the user's default
+PDF viewer.
+
+This build now uses qt5, hence libqtpas is now a dependency. Install
+libqtpas before installing lazarus.
diff --git a/multimedia/winff/changelog b/multimedia/winff/changelog
new file mode 100644
index 0000000000..a67e2f90bc
--- /dev/null
+++ b/multimedia/winff/changelog
@@ -0,0 +1,123 @@
+Changelog for Winff SlackBuild Script
+--------------------------------------------------------------------
+
+09/09/2022:
+
+Took over as maintainer for the Winff SlackBuild
+script.
+
+The Original author of Winff no longer maintains and is
+now maintained by Debian Maintainer Paul Gevers.
+
+Corrected the various dead URL.Updated the various URL to
+https.patched it to look in the slackware's doc folder.
+see these posts for details.
+https://github.com/WinFF/winff/issues/250
+https://ffmpeg.org/download.html#build-windows
+
+24/09/2022:
+
+Winff will now use the users default pdf viewer using
+xdg-open also added support for Okular pdf reader. It will
+now use the -O2 optimization and added some hardening flags
+to the linker and fix wrongly escaped single quote in the
+man page.I've added these patches from Debian Maintainer
+Paul Gevers.
+
+Removed the hint that said TEST in the lower left side corner
+of the GUI,when you hover the mouse in the area between the
+convert button and options button.Fixed the Dialog boxes under
+the Ffmpeg tab were it will now show pass 1 and pass 2 separately
+previously the pass 1 dialog was merged with the top parameter
+dialog box.Put Underscore between the "Cancel Changes",
+"Apply Changes" and "Apply to All" buttons and will now be
+further apart for clarity. From FFmpeg versions 5 and later
+the -vol command will fail.For example -vol 512 has been changed
+to -filter:a "volume=1.5", since slackware uses FFmpeg4
+this is not a problem for now.Added Hints to the 2 buttons
+next to the folder path.The open was not working due to
+older lazarus not passing commands updating to Lazarus 2.2.2-0
+will solve that problem.If you cross compile winff for windows
+without patching the language files it will show the old links.
+Thanks to David Miller for patches,Improvments and testing Winff.
+
+Created a set of patches instead of sed commands.
+
+Extended the Copyright, which previously was upto the year 2016.
+
+GTK2 has reached end of life also GTK3 widget set support in
+lazarus is in alpha stage in lazarus.See the following post
+for details.
+
+https://blog.gtk.org/2020/12/16/gtk-4-0/
+https://wiki.freepascal.org/Widgetset
+
+As such it no longer make sense to default to GTK.We will
+now default to qt5 nstead of GTK.Therefore libqtpas is now a
+dependency. Install libqtpas before installing lazarus.
+
+Removed a Dangling link to AV GNU/Linux Distro.
+
+If for Some reason "Cancel changes","Apply to all" and
+"Apply changes" button does not appear do not fret, Enter the
+Values you need to modify in Video/Audio/Crop/Time and then
+add the file to convert it would pass the options.You can check
+the Command in the FFmpeg tab. This is a workaround.
+
+Patched the manpage to show the winff docmentation location
+in slackware.
+
+This build removes all other localization files except english
+since it contains outdated links and may pose security risk.
+Bumped the build no.
+
+20/01/2023:
+
+Fixed $ARCH issue for 32-bit systems. freepascal supports i386
+only. The SlackBuild is modified to reflect that.Bumped the
+build no.
+
+Users of WinFF must be aware of these two security issues that are
+still unresolved upstream.
+
+a. The first one is due to the way filenames are inserted in the
+temporary shell scripts generated to convert the media. Due to the
+lack of character escaping, it is possible to insert system command using
+specially crafted filename such as 'aaa";xcalc;".avi' or "aaa$(xcalc).mp4'
+Thus leading to an arbitrary command execution.
+
+b. The second issue is related to the permission of this temporary shell
+script. every users can access to them and modify them. Even if those files
+are only temporary and launched right after generation, it leads to a
+race-condition case where another user may try to replace the script content
+before its execution in order to execute its own command with the winff
+user permission.
+
+you can read about this issue here:
+https://github.com/WinFF/winff/issues/242
+
+As for first issue check the filename before converting otherwise it
+will compromise your system and don't download from untrusted sources.
+For the second I have no clue and this is beyond my abilities.If you have
+a patch for these issue feel free to send it to me.
+
+
+11/01/2024:
+
+Upgraded to the latest git commit 31b79e3.
+
+22/01/2024:
+
+Added -pie and -zdefs hardening flags to linker.
+Bumped the build no.
+
+27/02/2024:
+
+Updated to version 1.6.3
+
+03/03/2024:
+
+Resubmit to SBo
+Modify the SlackBuild to avoid creating object code files to /usr/share/lazarus
+when compiling winff and remove unused function in doinst.sh Thanks to Andrew Clemons
+for pointing it out.
diff --git a/multimedia/winff/doinst.sh b/multimedia/winff/doinst.sh
index 4e8ba7071d..5fb28930db 100644
--- a/multimedia/winff/doinst.sh
+++ b/multimedia/winff/doinst.sh
@@ -1,4 +1,3 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
-
diff --git a/multimedia/winff/patches/unit1-pas.patch b/multimedia/winff/patches/unit1-pas.patch
new file mode 100644
index 0000000000..402e4634a9
--- /dev/null
+++ b/multimedia/winff/patches/unit1-pas.patch
@@ -0,0 +1,43 @@
+--- unit1.pas 2023-10-03 19:20:47.000000000 +0530
++++ unit1n.pas 2024-01-10 22:26:54.221464261 +0530
+@@ -1,8 +1,8 @@
+ unit Unit1;
+
+-// WInFF 1.0 Copyright 2006-2012 Matthew Weatherford
++// WInFF 1.0 Copyright 2006-2024 Matthew Weatherford
+ // WinFF 1.3.2 Copyright 2011 Alexey Osipov <lion-simba@pridelands.ru>
+-// http://winff.org
++// https://github.com/WinFF/winff
+ // Licensed under the GPL v3 or any later version
+ //
+ // This program is free software: you can redistribute it and/or modify
+@@ -1988,16 +1988,16 @@
+ language:=leftstr(lang,2);
+ {$ifdef unix}
+ s :='';
+- if fileexists('/usr/share/doc/winff/WinFF.' + language + '.pdf.gz') then s:='/usr/share/doc/winff/WinFF.' + language + '.pdf.gz';
+- if fileexists('/usr/share/doc/winff/WinFF.' + language + '.pdf') then s:='/usr/share/doc/winff/WinFF.' + language + '.pdf';
++ if fileexists('/usr/share/doc/winff/WinFF.' + language + '.pdf.gz') then s:='/usr/doc/winff-20231003_31b79e3/WinFF.' + language + '.pdf.gz';
++ if fileexists('/usr/share/doc/winff/WinFF.' + language + '.pdf') then s:='/usr/doc/winff-20231003_31b79e3/WinFF.' + language + '.pdf';
+ if fileexists('/usr/share/winff/WinFF.' + language + '.pdf') then s:='/usr/share/winff/WinFF.' + language + '.pdf';
+ if fileexists('/usr/share/winff/WinFF.' + language + '.pdf.gz') then s:='/usr/share/winff/WinFF.' + language + '.pdf.gz';
+ if fileexists('/usr/share/doc/packages/winff/WinFF.' + language + '.pdf.gz') then s:='/usr/share/doc/packages/winff/WinFF.' + language + '.pdf.gz';
+ if fileexists('/usr/share/doc/packages/winff/WinFF.' + language + '.pdf') then s:='/usr/share/doc/packages/winff/WinFF.' + language + '.pdf';
+ if s='' then
+ begin
+- s := '/usr/share/doc/winff/WinFF.en.pdf.gz';
+- if fileexists('/usr/share/doc/winff/WinFF.en.pdf') then s:='/usr/share/doc/winff/WinFF.en.pdf';
++ s := '/usr/doc/winff-20231003_31b79e3/WinFF.en.pdf.gz';
++ if fileexists('/usr/doc/winff-20231003_31b79e3/WinFF.en.pdf') then s:='/usr/doc/winff-20231003_31b79e3/WinFF.en.pdf';
+ if fileexists('/usr/share/winff/WinFF.en.pdf') then s:='/usr/share/winff/WinFF.en.pdf';
+ if fileexists('/usr/share/winff/WinFF.en.pdf.gz') then s:='/usr/share/winff/WinFF.en.pdf.gz';
+ if fileexists('/usr/share/doc/packages/winff/WinFF.en.pdf.gz') then s:='/usr/share/doc/packages/winff/WinFF.en.pdf.gz';
+@@ -2015,7 +2015,7 @@
+ procedure TfrmMain.mitForumsClick(Sender: TObject);
+
+ begin
+- launchbrowser('https://groups.google.com/g/winff');
++ launchbrowser('https://github.com/WinFF/winff/issues');
+ end;
+
+ procedure TfrmMain.mitRestoreDefaultsClick(Sender: TObject);
diff --git a/multimedia/winff/patches/unit2-pas.patch b/multimedia/winff/patches/unit2-pas.patch
new file mode 100644
index 0000000000..7addd19cb0
--- /dev/null
+++ b/multimedia/winff/patches/unit2-pas.patch
@@ -0,0 +1,13 @@
+--- unit2.pas 2023-10-03 19:20:47.000000000 +0530
++++ unit2n.pas 2024-01-10 22:27:47.257969107 +0530
+@@ -1,8 +1,8 @@
+ unit Unit2;
+
+-// WinFF Copyright 2006-2012 Matthew Weatherford
++// WinFF Copyright 2006-2024 Matthew Weatherford
+ // WinFF 1.3.2 Copyright 2011 Alexey Osipov <lion-simba@pridelands.ru>
+-// http://winff.org
++// hhttps://github.com/WinFF/winff
+ // Licensed under the GPL v3 or any later version
+ //
+ // This program is free software: you can redistribute it and/or modify
diff --git a/multimedia/winff/patches/unit3-lfm.patch b/multimedia/winff/patches/unit3-lfm.patch
new file mode 100644
index 0000000000..29e8045a1c
--- /dev/null
+++ b/multimedia/winff/patches/unit3-lfm.patch
@@ -0,0 +1,58 @@
+--- unit3.lfm 2023-10-03 19:20:47.000000000 +0530
++++ unit3n.lfm 2024-01-11 20:09:24.951994073 +0530
+@@ -341,7 +341,9 @@
+ BorderSpacing.Top = 2
+ BorderSpacing.Bottom = 2
+ Caption = 'Trademark Fabrice Bellard'
++ Font.Color = clBlue
+ ParentColor = False
++ ParentFont = False
+ OnClick = lblBellardClick
+ end
+ object lblURLffmpeg: TLabel
+@@ -354,18 +356,21 @@
+ BorderSpacing.Left = 5
+ BorderSpacing.Top = 2
+ BorderSpacing.Bottom = 5
+- Caption = 'http://ffmpeg.org'
++ Caption = 'https://ffmpeg.org'
+ Font.Color = clBlue
+ ParentColor = False
+ ParentFont = False
+ OnClick = lblURLffmpegClick
+ end
+ object lblWindowsBuilds: TLabel
+- Left = 0
+- Height = 20
+- Top = 69
++ Left = 5
++ Height = 25
++ Top = 75
+ Width = 376
+ Align = alTop
++ BorderSpacing.Left = 5
++ BorderSpacing.Top = 2
++ BorderSpacing.Bottom = 5
+ Caption = 'Windows Builds by'
+ ParentColor = False
+ ShowAccelChar = False
+@@ -373,12 +378,15 @@
+ end
+ object lblwinbuilds: TLabel
+ Cursor = crHandPoint
+- Left = 0
+- Height = 16
+- Top = 89
++ Left = 5
++ Height = 30
++ Top = 95
+ Width = 376
+ Align = alTop
+- Caption = 'Kyle Schwarz'
++ BorderSpacing.Left = 5
++ BorderSpacing.Top = 2
++ BorderSpacing.Bottom = 7
++ Caption = 'Gyan Doshi'
+ Font.CharSet = ANSI_CHARSET
+ Font.Color = clBlue
+ Font.Height = -13
diff --git a/multimedia/winff/patches/unit3-pas.patch b/multimedia/winff/patches/unit3-pas.patch
new file mode 100644
index 0000000000..1d99d96642
--- /dev/null
+++ b/multimedia/winff/patches/unit3-pas.patch
@@ -0,0 +1,77 @@
+--- unit3.pas 2024-02-19 19:19:13.000000000 +0530
++++ unit3n.pas 2024-02-27 18:15:24.377843083 +0530
+@@ -1,8 +1,8 @@
+ unit Unit3;
+
+-// WInFF 1.0 Copyright 2006-2013 Matthew Weatherford
++// WInFF 1.0 Copyright 2006-2024 Matthew Weatherford
+ // WinFF 1.3.2 Copyright 2011 Alexey Osipov <lion-simba@pridelands.ru>
+-// http://winff.org
++// https://github.com/WinFF/winff
+ // Licensed under the GPL v3 or any later version
+ //
+ // This program is free software: you can redistribute it and/or modify
+@@ -62,7 +62,6 @@
+ procedure lblBellardClick(Sender: TObject);
+ procedure lblGeversClick(Sender: TObject);
+ procedure lblStoffbergClick(Sender: TObject);
+- procedure lblGmaqClick(Sender: TObject);
+ procedure lblURLZeranoClick(Sender: TObject);
+ procedure lblWeatherfordClick(Sender: TObject);
+ procedure lblURLWinffOrgClick(Sender: TObject);
+@@ -132,27 +131,22 @@
+
+ procedure TfrmAbout.lblBellardClick(Sender: TObject);
+ begin
+-
++ frmMain.LaunchBrowser('https://bellard.org/');
+ end;
+
+ procedure TfrmAbout.lblGeversClick(Sender: TObject);
+ begin
+- frmMain.LaunchBrowser('https://launchpad.net/~paul-climbing/+archive/ppa/');
++ frmMain.LaunchBrowser('https://tracker.debian.org/pkg/winff');
+ end;
+
+ procedure TfrmAbout.lblStoffbergClick(Sender: TObject);
+ begin
+-frmMain.LaunchBrowser('http://istoff.blogspot.com');
+-end;
+-
+-procedure TfrmAbout.lblGmaqClick(Sender: TObject);
+-begin
+- frmMain.LaunchBrowser('http://www.bandshed.net/');
++frmMain.LaunchBrowser('https://istoff.blogspot.com');
+ end;
+
+ procedure TfrmAbout.lblURLZeranoClick(Sender: TObject);
+ begin
+- frmMain.LaunchBrowser('http://ffmpeg.zeranoe.com');
++ frmMain.LaunchBrowser('https://www.gyan.dev/ffmpeg/builds');
+ end;
+
+ procedure TfrmAbout.btnOkClick(Sender: TObject);
+@@ -162,7 +156,7 @@
+
+ procedure TfrmAbout.lblWeatherfordClick(Sender: TObject);
+ begin
+- frmMain.LaunchBrowser('http://www.biggmatt.com');
++ frmMain.LaunchBrowser('https://www.biggmatt.com/p/winff.html');
+ end;
+
+ procedure TfrmAbout.lblURLWinffOrgClick(Sender: TObject);
+@@ -172,12 +166,12 @@
+
+ procedure TfrmAbout.lblURLffmpegClick(Sender: TObject);
+ begin
+- frmMain.LaunchBrowser('http://ffmpeg.org/');
++ frmMain.LaunchBrowser('https://ffmpeg.org/');
+ end;
+
+ procedure TfrmAbout.lblwinbuildsClick(Sender: TObject);
+ begin
+- frmMain.LaunchBrowser('http://ffmpeg.zeranoe.com/builds/');
++ frmMain.LaunchBrowser('https://www.gyan.dev/ffmpeg/builds');
+ end;
+
+ procedure TfrmAbout.lblWindowsBuildsClick(Sender: TObject);
diff --git a/multimedia/winff/patches/unit4-pas.patch b/multimedia/winff/patches/unit4-pas.patch
new file mode 100644
index 0000000000..c375713c30
--- /dev/null
+++ b/multimedia/winff/patches/unit4-pas.patch
@@ -0,0 +1,13 @@
+--- unit4.pas 2023-10-03 19:20:47.000000000 +0530
++++ unit4n.pas 2024-01-10 22:36:28.191304129 +0530
+@@ -1,8 +1,8 @@
+ unit Unit4;
+
+-// WInFF 1.0 Copyright 2006-2009 Matthew Weatherford
++// WInFF 1.0 Copyright 2006-2024 Matthew Weatherford
+ // WinFF 1.3.2 Copyright 2011 Alexey Osipov <lion-simba@pridelands.ru>
+-// http://winff.org
++// https://github.com/WinFF/winff
+ // Licensed under the GPL v3 or any later version
+ //
+ // This program is free software: you can redistribute it and/or modify
diff --git a/multimedia/winff/patches/unit5-pas.patch b/multimedia/winff/patches/unit5-pas.patch
new file mode 100644
index 0000000000..b9d25f828e
--- /dev/null
+++ b/multimedia/winff/patches/unit5-pas.patch
@@ -0,0 +1,13 @@
+--- unit5.pas 2023-10-03 19:20:47.000000000 +0530
++++ unit5n.pas 2024-01-10 22:37:47.134755906 +0530
+@@ -1,8 +1,8 @@
+ unit Unit5;
+
+-// WInFF 1.0 Copyright 2006-2009 Matthew Weatherford
++// WInFF 1.0 Copyright 2006-2024 Matthew Weatherford
+ // WinFF 1.3.2 Copyright 2011 Alexey Osipov <lion-simba@pridelands.ru>
+-// http://winff.org
++// https://github.com/WinFF/winff
+ // Licensed under the GPL v3 or any later version
+ //
+ // This program is free software: you can redistribute it and/or modify
diff --git a/multimedia/winff/patches/unit6-pas.patch b/multimedia/winff/patches/unit6-pas.patch
new file mode 100644
index 0000000000..dfe5700f9f
--- /dev/null
+++ b/multimedia/winff/patches/unit6-pas.patch
@@ -0,0 +1,13 @@
+--- unit6.pas 2023-10-03 19:20:47.000000000 +0530
++++ unit6n.pas 2024-01-10 22:38:34.727540276 +0530
+@@ -1,8 +1,8 @@
+ unit unit6;
+
+-// WInFF 1.0 Copyright 2006-2009 Matthew Weatherford
++// WInFF 1.0 Copyright 2006-2024 Matthew Weatherford
+ // WinFF 1.3.2 Copyright 2011 Alexey Osipov <lion-simba@pridelands.ru>
+-// http://winff.org
++// https://github.com/WinFF/winff
+ // Licensed under the GPL v3 or any later version
+ //
+ // This program is free software: you can redistribute it and/or modify
diff --git a/multimedia/winff/patches/winff-1.patch b/multimedia/winff/patches/winff-1.patch
new file mode 100644
index 0000000000..e4a97761e6
--- /dev/null
+++ b/multimedia/winff/patches/winff-1.patch
@@ -0,0 +1,17 @@
+--- winff.1 2023-10-03 19:20:47.000000000 +0530
++++ winffn.1 2024-01-11 20:22:53.045991752 +0530
+@@ -29,6 +29,7 @@
+ .SH "SEE ALSO"
+ .PP
+ For more details, you should have a look at the pdf manual, available at /usr/share/doc/winff/winff\.pdf
++In Slackware Linux the Manual is available at /usr/doc/winff-20231003_31b79e3/winff\.pdf
+ .SH "AUTHOR"
+ .PP
+ This manual page was written by Paul Gevers
+@@ -41,5 +42,5 @@
+ .PP
+ On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common\-licenses/GPL\.
+ .SH "COPYRIGHT"
+-Copyright \(co 2008 Paul Gevers
++Copyright \(co 2008-2024 Paul Gevers
+ .br
diff --git a/multimedia/winff/patches/winff-en.patch b/multimedia/winff/patches/winff-en.patch
new file mode 100644
index 0000000000..1eccc92691
--- /dev/null
+++ b/multimedia/winff/patches/winff-en.patch
@@ -0,0 +1,37 @@
+--- winff.en_GB.po 2023-10-03 19:20:47.000000000 +0530
++++ winff.en_GBn.po 2024-01-10 22:50:33.016503273 +0530
+@@ -73,8 +73,8 @@
+
+ #: tfrmabout.lblschwarz.caption
+ msgctxt "TFRMABOUT.LBLSCHWARZ.CAPTION"
+-msgid "Kyle Schwarz"
+-msgstr "Kyle Schwarz"
++msgid "Gyan Doshi"
++msgstr "Gyan Doshi"
+
+ #: tfrmabout.lblstoffberg.caption
+ msgid "Ian Stoffberg"
+@@ -82,17 +82,17 @@
+
+ #: tfrmabout.lblurlffmpeg.caption
+ msgctxt "TFRMABOUT.LBLURLFFMPEG.CAPTION"
+-msgid "http://ffmpeg.org"
+-msgstr "http://ffmpeg.org"
++msgid "https://ffmpeg.org"
++msgstr "https://ffmpeg.org"
+
+ #: tfrmabout.lblurlwinfforg.caption
+ msgctxt "TFRMABOUT.LBLURLWINFFORG.CAPTION"
+-msgid "http://www.winff.org"
+-msgstr "http://www.winff.org"
++msgid "https://github.com/WinFF/winff"
++msgstr "https://github.com/WinFF/winff"
+
+ #: tfrmabout.lblurlzeranoe.caption
+-msgid "http://ffmpeg.zeranoe.com"
+-msgstr "http://ffmpeg.zeranoe.com"
++msgid "https://www.gyan.dev/ffmpeg/"
++msgstr "https://www.gyan.dev/ffmpeg/"
+
+ #: tfrmabout.lblweatherford.caption
+ msgid "Matthew Weatherford"
diff --git a/multimedia/winff/patches/winff-lpi.patch b/multimedia/winff/patches/winff-lpi.patch
new file mode 100644
index 0000000000..663bce1c32
--- /dev/null
+++ b/multimedia/winff/patches/winff-lpi.patch
@@ -0,0 +1,32 @@
+--- winff.lpi 2023-10-03 19:20:47.000000000 +0530
++++ winffn.lpi 2024-01-10 22:47:30.406244263 +0530
+@@ -20,7 +20,7 @@
+ <MajorVersionNr Value="1"/>
+ <MinorVersionNr Value="6"/>
+ <RevisionNr Value="0"/>
+- <StringTable CompanyName="WinFF.org" FileDescription="WinFF Video Converter" InternalName="winff" LegalCopyright="Copyright 2006-2023 Matthew Weatherford" OriginalFilename="winff.exe" ProductVersion=""/>
++ <StringTable CompanyName="WinFF.org" FileDescription="WinFF Video Converter" InternalName="winff" LegalCopyright="Copyright 2006-2024 Matthew Weatherford" OriginalFilename="winff.exe" ProductVersion=""/>
+ </VersionInfo>
+ <BuildModes Count="1">
+ <Item1 Name="default" Default="True"/>
+@@ -117,6 +117,11 @@
+ <UseAnsiStrings Value="False"/>
+ </SyntaxOptions>
+ </Parsing>
++ <CodeGeneration>
++ <Optimizations>
++ <OptimizationLevel Value="2"/>
++ </Optimizations>
++ </CodeGeneration>
+ <Linking>
+ <Debugging>
+ <DebugInfoType Value="dsStabs"/>
+@@ -124,7 +129,7 @@
+ <LinkSmart Value="True"/>
+ <Options>
+ <PassLinkerOptions Value="True"/>
+- <LinkerOptions Value="--as-needed"/>
++ <LinkerOptions Value="--as-needed -zrelro -znow -zdefs -pie"/>
+ <Win32>
+ <GraphicApplication Value="True"/>
+ </Win32>
diff --git a/multimedia/winff/patches/winff-lpr.patch b/multimedia/winff/patches/winff-lpr.patch
new file mode 100644
index 0000000000..6344dba0ab
--- /dev/null
+++ b/multimedia/winff/patches/winff-lpr.patch
@@ -0,0 +1,12 @@
+--- winff.lpr 2023-10-03 19:20:47.000000000 +0530
++++ winffn.lpr 2024-01-10 22:48:22.389222629 +0530
+@@ -1,7 +1,7 @@
+ program winff;
+
+-// WInFF 1.0 Copyright 2006-2009 Matthew Weatherford
+-// http://winff.org
++// WInFF 1.0 Copyright 2006-2024 Matthew Weatherford
++// https://github.com/WinFF/winff
+ // Licensed under the GPL v3 or any later version
+ //
+ // This program is free software: you can redistribute it and/or modify
diff --git a/multimedia/winff/patches/winff-po.patch b/multimedia/winff/patches/winff-po.patch
new file mode 100644
index 0000000000..075eae8d18
--- /dev/null
+++ b/multimedia/winff/patches/winff-po.patch
@@ -0,0 +1,31 @@
+--- winff.po 2023-10-03 19:20:47.000000000 +0530
++++ winffn.po 2024-01-10 22:53:57.565726188 +0530
+@@ -69,7 +69,7 @@
+
+ #: tfrmabout.lblschwarz.caption
+ msgctxt "TFRMABOUT.LBLSCHWARZ.CAPTION"
+-msgid "Kyle Schwarz"
++msgid "Gyan Doshi"
+ msgstr ""
+
+ #: tfrmabout.lblstoffberg.caption
+@@ -78,16 +78,16 @@
+
+ #: tfrmabout.lblurlffmpeg.caption
+ msgctxt "TFRMABOUT.LBLURLFFMPEG.CAPTION"
+-msgid "http://ffmpeg.org"
++msgid "https://ffmpeg.org"
+ msgstr ""
+
+ #: tfrmabout.lblurlwinfforg.caption
+ msgctxt "TFRMABOUT.LBLURLWINFFORG.CAPTION"
+-msgid "http://www.winff.org"
++msgid "https://github.com/WinFF/winff"
+ msgstr ""
+
+ #: tfrmabout.lblurlzeranoe.caption
+-msgid "http://ffmpeg.zeranoe.com"
++msgid "https://www.gyan.dev/ffmpeg/"
+ msgstr ""
+
+ #: tfrmabout.lblweatherford.caption
diff --git a/multimedia/winff/patches/winff-pot.patch b/multimedia/winff/patches/winff-pot.patch
new file mode 100644
index 0000000000..da2e826656
--- /dev/null
+++ b/multimedia/winff/patches/winff-pot.patch
@@ -0,0 +1,31 @@
+--- winff.pot 2023-10-03 19:20:47.000000000 +0530
++++ winffn.pot 2024-01-10 22:52:29.128529940 +0530
+@@ -69,7 +69,7 @@
+
+ #: tfrmabout.lblschwarz.caption
+ msgctxt "TFRMABOUT.LBLSCHWARZ.CAPTION"
+-msgid "Kyle Schwarz"
++msgid "Gyan Doshi"
+ msgstr ""
+
+ #: tfrmabout.lblstoffberg.caption
+@@ -78,16 +78,16 @@
+
+ #: tfrmabout.lblurlffmpeg.caption
+ msgctxt "TFRMABOUT.LBLURLFFMPEG.CAPTION"
+-msgid "http://ffmpeg.org"
++msgid "https://ffmpeg.org"
+ msgstr ""
+
+ #: tfrmabout.lblurlwinfforg.caption
+ msgctxt "TFRMABOUT.LBLURLWINFFORG.CAPTION"
+-msgid "http://www.winff.org"
++msgid "https://github.com/WinFF/winff"
+ msgstr ""
+
+ #: tfrmabout.lblurlzeranoe.caption
+-msgid "http://ffmpeg.zeranoe.com"
++msgid "https://www.gyan.dev/ffmpeg/"
+ msgstr ""
+
+ #: tfrmabout.lblweatherford.caption
diff --git a/multimedia/winff/presets.xml.gz b/multimedia/winff/presets.xml.gz
deleted file mode 100644
index 29c49e5bda..0000000000
--- a/multimedia/winff/presets.xml.gz
+++ /dev/null
Binary files differ
diff --git a/multimedia/winff/slack-desc b/multimedia/winff/slack-desc
index 7ee2e2917b..36b0c2a1d9 100644
--- a/multimedia/winff/slack-desc
+++ b/multimedia/winff/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-winff: winff (GUI for ffmpeg)
+winff: winff (GUI for FFmpeg)
winff:
-winff: WinFF is a GUI for the command line video converter, FFMPEG. It will
-winff: convert most any video file that FFmpeg will convert. WinFF does
-winff: multiple files in multiple formats at one time. You can for example
-winff: convert mpeg's, flv's, and mov's, all into avi's all at once.
+winff: Winff is GUI for FFmpeg. It will convert most Video and
+winff: Audio formats and can also convert many files at one time.
+winff:
+winff:
+winff: Homepage:https://github.com/WinFF/winff
winff:
winff:
-winff: Homepage: http://winff.org/
winff:
winff:
diff --git a/multimedia/winff/winff.SlackBuild b/multimedia/winff/winff.SlackBuild
index fbd6015c8c..70d2b7209e 100644
--- a/multimedia/winff/winff.SlackBuild
+++ b/multimedia/winff/winff.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
+#!/bin/bash
-# Slackware build script for WinFF
+# Slackware build script for winff
# Copyright 2010 by Giovanne Castro, Campinas, Sao Paulo, Brazil <giovannefc@ig.com.br>
+# Copyright 2022-2024 Vijay Marcel
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -11,75 +12,139 @@
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
-
-# Modified by the SlackBuilds.org project
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+# 20230527 bkw: modified by SlackBuilds.org:
+# - fix ARCH, use separate CPU variable for the compiler.
+# - grammar cleanups for README.
+# - stop creating /root/.lazarus/compilertest.pas outside of $TMP.
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=winff
-VERSION=${VERSION:-20170714_220b212}
+VERSION=${VERSION:-1.6.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i386 ;;
+case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
+ *) ARCH=$( uname -m ) ;;
+esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
fi
-CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-set -e
+case "$ARCH" in
+ i?86) CPU="i386"
+ LIBDIRSUFFIX=""
+ ;;
+ x86_64) CPU="x86_64"
+ LIBDIRSUFFIX="64"
+ ;;
+ *) printf "$ARCH is not supported...\n"
+ exit 1
+ ;;
+esac
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM-$PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} + -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
+
+echo "Patching Winff, See README and changelog for Details"
+
+cd $PRGNAM
+
+patch --verbose --unified < $CWD/patches/unit1-pas.patch
+patch --verbose --unified < $CWD/patches/unit2-pas.patch
+patch --verbose --unified < $CWD/patches/unit3-lfm.patch
+patch --verbose --unified < $CWD/patches/unit3-pas.patch
+patch --verbose --unified < $CWD/patches/unit4-pas.patch
+patch --verbose --unified < $CWD/patches/unit5-pas.patch
+patch --verbose --unified < $CWD/patches/unit6-pas.patch
+patch --verbose --unified < $CWD/patches/winff-lpi.patch
+patch --verbose --unified < $CWD/patches/winff-lpr.patch
+patch --verbose --unified < $CWD/patches/winff-1.patch
+
+echo "Patching the languages file"
+
+find languages -type f -not \( -name 'winff.po' -or -name 'winff.pot' -or -name 'winff.en_GB.po' \) -delete
+
+cd languages
-lazbuild --lazarusdir=/usr/share/lazarus --cpu=$ARCH -B winff.lpr
+patch --verbose --unified < $CWD/patches/winff-pot.patch
+patch --verbose --unified < $CWD/patches/winff-en.patch
-install -m 0755 -D $PRGNAM $PKG/usr/bin/$PRGNAM
+cd ..
-mkdir -p $PKG/usr/share/winff
-cp -a languages $PKG/usr/share/winff/
-zcat $CWD/presets.xml.gz > $PKG/usr/share/winff/presets.xml
+# Adapted from https://slackbuilds.org/slackbuilds/15.0/system/doublecmd-qt5/doublecmd-qt5.SlackBuild
+# This should technically prevent lazbuild to put object code files in /usr/share/lazarus when builing
+# pascal applications using lazbuild
-mkdir -p $PKG/usr/man/man1
-gzip -c9 $PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz
+echo "we are now copying /usr/share/lazarus to $(pwd) to avoid putting object code files in /usr/share/lazarus when compiling winff"
+
+cp -a /usr/share/lazarus ./
+
+echo "Building WinFF with QT5 Widget insted of GTK"
+
+$(pwd)/lazarus/lazbuild --lazarusdir="$(pwd)/lazarus" --widgetset=qt5 --cpu=$CPU -B winff.lpr
+
+install -s -m 0755 -D $TMP/$PRGNAM-$PRGNAM-$VERSION/$PRGNAM/$PRGNAM $PKG/usr/bin/$PRGNAM
+
+mkdir -pv $PKG/usr/share/$PRGNAM
+cp -a $TMP/$PRGNAM-$PRGNAM-$VERSION/$PRGNAM/languages $PKG/usr/share/$PRGNAM/
+cp -a $TMP/$PRGNAM-$PRGNAM-$VERSION/$PRGNAM/presets.xml $PKG/usr/share/$PRGNAM/
+install -m 0644 $TMP/$PRGNAM-$PRGNAM-$VERSION/$PRGNAM/scripts/check_presets.sh $PKG/usr/share/$PRGNAM/
+
+mkdir -pv $PKG/usr/man/man1
+gzip -c9 $TMP/$PRGNAM-$PRGNAM-$VERSION/$PRGNAM/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz
install -m 0644 -D $CWD/$PRGNAM.desktop $PKG/usr/share/applications/$PRGNAM.desktop
-install -m 0644 -D winff-icons/48x48/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png
+install -m 0644 -D $TMP/$PRGNAM-$PRGNAM-$VERSION/$PRGNAM/winff-icons/48x48/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png
-# Copy documentation
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a docs/*.{pdf,txt} $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+mkdir -pv $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $TMP/$PRGNAM-$PRGNAM-$VERSION/$PRGNAM/COPYING $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $TMP/$PRGNAM-$PRGNAM-$VERSION/$PRGNAM/AUTHORS $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $TMP/$PRGNAM-$PRGNAM-$VERSION/$PRGNAM/{README-Presets.txt,changelog.txt} $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $TMP/$PRGNAM-$PRGNAM-$VERSION/$PRGNAM/docs/*.{pdf,txt} $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $TMP/$PRGNAM-$PRGNAM-$VERSION/README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-mkdir $PKG/install
+mkdir -pv $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
+
diff --git a/multimedia/winff/winff.desktop b/multimedia/winff/winff.desktop
index ff16b3541c..e18ec7697a 100644
--- a/multimedia/winff/winff.desktop
+++ b/multimedia/winff/winff.desktop
@@ -1,13 +1,9 @@
[Desktop Entry]
-Version=1.0
-Name=WinFF
-Comment=GUI for FFMPEG
-MimeType=application/winff;
-Exec=winff
-Icon=winff
+Name=winff
+Comment=GUI for FFmpeg
+Exec=/usr/bin/winff
+Icon=/usr/share/pixmaps/winff.png
Terminal=false
Type=Application
-Categories=AudioVideo;AudioVideoEditing;GTK;
-GenericName=Video converter
-GenericName[en]=Video converter
-GenericName[nl]=Video converteerder
+Categories=AudioVideo;AudioVideoEditing
+GenericName=Video Converter
diff --git a/multimedia/winff/winff.info b/multimedia/winff/winff.info
index 1d0d011e47..5ac2f04f02 100644
--- a/multimedia/winff/winff.info
+++ b/multimedia/winff/winff.info
@@ -1,10 +1,10 @@
PRGNAM="winff"
-VERSION="20170714_220b212"
-HOMEPAGE="http://winff.org/"
-DOWNLOAD="http://ponce.cc/slackware/sources/repo/winff-20170714_220b212.tar.xz"
-MD5SUM="663cb956dd0261106383b1762d79e752"
+VERSION="1.6.3"
+HOMEPAGE="https://github.com/WinFF/winff"
+DOWNLOAD="https://github.com/WinFF/winff/archive/winff-1.6.3/winff-winff-1.6.3.tar.gz"
+MD5SUM="7a85f02bd23acef5b916166f83586e82"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="lazarus ffmpeg"
-MAINTAINER="nobody"
-EMAIL="nobody@nowhere.com"
+REQUIRES="libqtpas lazarus"
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/wxcam/README b/multimedia/wxcam/README
index 60ab8a75ce..36fa0f0ef7 100644
--- a/multimedia/wxcam/README
+++ b/multimedia/wxcam/README
@@ -1,5 +1,5 @@
-wxCam is a webcam application for linux. It supports video recording (in an
-avi uncompressed and Xvid format), snapshot taking, and some special commands
-for philips webcams, so you can also use the program for astronomy purposes.
-It supports both video4linux 1 and 2 drivers, so it should work on a very
-large number of devices.
+wxCam is a webcam application for linux. It supports video recording
+(in an avi uncompressed and Xvid format), snapshot taking, and some
+special commands for philips webcams, so you can also use the program
+for astronomy purposes. It supports both video4linux 1 and 2 drivers,
+so it should work on a very large number of devices.
diff --git a/multimedia/wxcam/wxcam.SlackBuild b/multimedia/wxcam/wxcam.SlackBuild
index 852b5e82e7..65ff702a15 100644
--- a/multimedia/wxcam/wxcam.SlackBuild
+++ b/multimedia/wxcam/wxcam.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for wxcam.
# Originally written 11/01/2009
@@ -6,6 +6,7 @@
# Updated for version 1.0.4 27/07/2009
# Updated for version 1.0.7 01/01/2011
# Updated for version 1.1 18/03/2012
+# Modified by B. Watson (BUILD=2) 07/02/2022 (force use of wxPython).
#
# Copyright 2009-2012 Pierre Cazenave <pwcazenave {at} gmail [dot] com>
# All rights reserved.
@@ -27,10 +28,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=wxcam
VERSION=${VERSION:-1.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -40,7 +44,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -75,13 +86,14 @@ find -L . \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS -std=c++14" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--disable-static \
+ --with-wx-config=/usr/lib$LIBDIRSUFFIX/wx/config/gtk2-unicode-release-2.8 \
--build=$ARCH-slackware-linux
make wxcamdocdir=/usr/doc/$PRGNAM-$VERSION
@@ -100,4 +112,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/wxcam/wxcam.info b/multimedia/wxcam/wxcam.info
index 31a732de30..1cef08d644 100644
--- a/multimedia/wxcam/wxcam.info
+++ b/multimedia/wxcam/wxcam.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="CImg mjpegtools wxPython xvidcore"
MAINTAINER="Edward W. Koenig"
-EMAIL="kingbeowulf@gmail.com"
+EMAIL="kingbeowulf@linuxgalaxy.org"
diff --git a/multimedia/x264/x264-mksrctarball.sh b/multimedia/x264/x264-mksrctarball.sh
new file mode 100644
index 0000000000..d414db5e08
--- /dev/null
+++ b/multimedia/x264/x264-mksrctarball.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+git clone https://code.videolan.org/videolan/x264.git
+
+cd x264
+ git checkout stable
+ VERSION="git_$(git log --format="%ad_%h" --date=short | head -n 1 | tr -d -)"
+ LONGDATE="$(git log -1 --format=%cd --date=format:%c )"
+cd ..
+
+mv x264 x264-$VERSION
+
+tar --exclude-vcs -cf x264-$VERSION.tar x264-$VERSION
+plzip -9 -v x264-$VERSION.tar
+touch -d "$LONGDATE" x264-$VERSION.tar.lz
+
+rm -rf x264-$VERSION
diff --git a/multimedia/x264/x264.SlackBuild b/multimedia/x264/x264.SlackBuild
index a90b7f079c..b250f0e5f8 100644
--- a/multimedia/x264/x264.SlackBuild
+++ b/multimedia/x264/x264.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for x264
-# Copyright 2010-2017 Heinz Wiesinger, Amsterdam, The Netherlands
+# Copyright 2010-2021 Heinz Wiesinger, Amsterdam, The Netherlands
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -11,39 +11,49 @@
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
# Originally written by core (eroc@linuxmail.org)
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=x264
-VERSION=${VERSION:-20170225}
+VERSION=${VERSION:-git_20210613_5db6aa6c}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -61,9 +71,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-snapshot-$VERSION-2245-stable
-tar xvf $CWD/$PRGNAM-snapshot-$VERSION-2245-stable.tar.bz2
-cd $PRGNAM-snapshot-$VERSION-2245-stable
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.lz
+cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -91,4 +101,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n -p $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n -p $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/x264/x264.info b/multimedia/x264/x264.info
index bbe6afbd2f..1e7005ad53 100644
--- a/multimedia/x264/x264.info
+++ b/multimedia/x264/x264.info
@@ -1,10 +1,10 @@
PRGNAM="x264"
-VERSION="20170225"
+VERSION="git_20210613_5db6aa6c"
HOMEPAGE="http://www.videolan.org/developers/x264.html"
-DOWNLOAD="http://ftp.videolan.org/x264/snapshots/x264-snapshot-20170225-2245-stable.tar.bz2"
-MD5SUM="262d200291935f35669eaac71de180c4"
+DOWNLOAD="https://sources.liwjatan.org/x264/x264-git_20210613_5db6aa6c.tar.lz"
+MD5SUM="a8999192fcef7f11b9c98f92c4812c62"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Heinz Wiesinger"
-EMAIL="pprkut@liwjatan.at"
+EMAIL="pprkut@slackbuilds.org"
diff --git a/multimedia/x265/x265.SlackBuild b/multimedia/x265/x265.SlackBuild
index 6f395a0eee..3c92d8ccac 100644
--- a/multimedia/x265/x265.SlackBuild
+++ b/multimedia/x265/x265.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for x265
-# Copyright 2014-2020 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
+# Copyright 2014-2024 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=x265
-VERSION=${VERSION:-3.3}
-SRCNAM=057215961bc4
+VERSION=${VERSION:-3.6}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +38,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -60,9 +66,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf multicoreware-$PRGNAM-$SRCNAM
-tar xvf $CWD/$VERSION.tar.bz2 || tar xvf $CWD/multicoreware-$PRGNAM-$SRCNAM.tar.bz2
-cd multicoreware-$PRGNAM-$SRCNAM
+rm -rf ${PRGNAM}_${VERSION}
+tar xvf $CWD/${PRGNAM}_${VERSION}.tar.gz
+cd ${PRGNAM}_${VERSION}
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -159,4 +165,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/x265/x265.info b/multimedia/x265/x265.info
index a4aacad246..aaad7f6217 100644
--- a/multimedia/x265/x265.info
+++ b/multimedia/x265/x265.info
@@ -1,8 +1,8 @@
PRGNAM="x265"
-VERSION="3.3"
+VERSION="3.6"
HOMEPAGE="https://www.videolan.org/developers/x265.html"
-DOWNLOAD="https://bitbucket.org/multicoreware/x265/get/3.3.tar.bz2"
-MD5SUM="e1b74d727e6aee171440df3b612c31cd"
+DOWNLOAD="https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.6.tar.gz"
+MD5SUM="99997ecc8ee4d3575ba7715c759ad3bb"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/xavs2/README b/multimedia/xavs2/README
new file mode 100644
index 0000000000..a88171aa56
--- /dev/null
+++ b/multimedia/xavs2/README
@@ -0,0 +1,4 @@
+xavs2 is an open source encoder of
+AVS2-P2/IEEE1857.4 video coding standard.
+
+This is an optional dependency of FFmpeg
diff --git a/multimedia/xavs2/slack-desc b/multimedia/xavs2/slack-desc
new file mode 100644
index 0000000000..c007bbf0d8
--- /dev/null
+++ b/multimedia/xavs2/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+xavs2: xavs2 (AVS2 Encoder)
+xavs2:
+xavs2: xavs2 is an open source encoder of AVS2-P2/IEEE1857.4
+xavs2: video coding standard.
+xavs2:
+xavs2:
+xavs2: Homepage:https://github.com/pkuvcl/xavs2
+xavs2:
+xavs2:
+xavs2:
+xavs2:
diff --git a/multimedia/xavs2/xavs2.SlackBuild b/multimedia/xavs2/xavs2.SlackBuild
new file mode 100644
index 0000000000..64ac967293
--- /dev/null
+++ b/multimedia/xavs2/xavs2.SlackBuild
@@ -0,0 +1,118 @@
+#!/bin/bash
+
+# Slackware build script for xavs2
+
+# Copyright 2022, Vijay Marcel
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=xavs2
+VERSION=${VERSION:-1.4}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i586 ;;
+ arm*) export ARCH=arm ;;
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+set -e
+trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ERR
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+cd build/linux/
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --bindir=/usr/bin \
+ --enable-shared \
+ --bit-depth='8' \
+ --chroma-format='all' \
+ --enable-lto \
+ --system-libxavs2 \
+ --enable-strip
+
+make
+make install DESTDIR=$PKG
+
+cd ../..
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/xavs2/xavs2.info b/multimedia/xavs2/xavs2.info
new file mode 100644
index 0000000000..8ac339e43d
--- /dev/null
+++ b/multimedia/xavs2/xavs2.info
@@ -0,0 +1,10 @@
+PRGNAM="xavs2"
+VERSION="1.4"
+HOMEPAGE="https://github.com/pkuvcl/xavs2"
+DOWNLOAD="https://github.com/pkuvcl/xavs2/archive/1.4/xavs2-1.4.tar.gz"
+MD5SUM="b776941aad474fed23da1d1eb0c0b720"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Vijay Marcel"
+EMAIL="vijaymarcel@outlook.com"
diff --git a/multimedia/xawtv/xawtv.SlackBuild b/multimedia/xawtv/xawtv.SlackBuild
index 36485bc3ec..f86f1b3f73 100644
--- a/multimedia/xawtv/xawtv.SlackBuild
+++ b/multimedia/xawtv/xawtv.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for xawtv
-# Copyright 2017-2019 Benjamin Trigona-Harany <slackbuilds@jaxartes.net>
+# Copyright 2017-2021 Benjamin Trigona-Harany <slackbuilds@jaxartes.net>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=xawtv
-VERSION=${VERSION:-3.106}
+VERSION=${VERSION:-3.107}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -35,7 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -69,6 +79,9 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+sed -i "s/sys_siglist\[signal\]/strsignal\(signal\)/" console/record.c
+sed -i "s/sys_siglist\[termsig\]/strsignal\(termsig\)/" console/fbtools.c x11/rootv.c
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -80,6 +93,7 @@ CXXFLAGS="$SLKCFLAGS" \
--enable-gl \
--build=$ARCH-slackware-linux
+make
make install DESTDIR=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
@@ -98,4 +112,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/xawtv/xawtv.info b/multimedia/xawtv/xawtv.info
index c2f8f49a71..2ffdd97f69 100644
--- a/multimedia/xawtv/xawtv.info
+++ b/multimedia/xawtv/xawtv.info
@@ -1,8 +1,8 @@
PRGNAM="xawtv"
-VERSION="3.106"
+VERSION="3.107"
HOMEPAGE="https://www.kraxel.org/blog/linux/xawtv/"
-DOWNLOAD="https://linuxtv.org/downloads/xawtv/xawtv-3.106.tar.bz2"
-MD5SUM="1fd7c98fa8973f501d52449202c71ca7"
+DOWNLOAD="https://linuxtv.org/downloads/xawtv/xawtv-3.107.tar.bz2"
+MD5SUM="3c9171aeeda7ca3eb2287f45ca7e86a9"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/xjadeo/README b/multimedia/xjadeo/README
index e686fe19be..450311e4e5 100644
--- a/multimedia/xjadeo/README
+++ b/multimedia/xjadeo/README
@@ -1,12 +1,12 @@
-Xjadeo is a software video player that displays a video-clip in sync with an
-external time source (MTC, LTC, JACK-transport).
+Xjadeo is a software video player that displays a video-clip in sync
+with an external time source (MTC, LTC, JACK-transport).
-Xjadeo is useful in soundtrack composition, video monitoring or any task that
-requires to synchronizing movie frames with audio events.
+Xjadeo is useful in soundtrack composition, video monitoring or any
+task that requires to synchronizing movie frames with audio events.
-Xjadeo supports a multitude of video file formats, display libraries and sync
-sources. It includes an optional GUI called qjadeo that provides setup
-options, file history, video import/transcoding and control of Xjadeo's
-run-time parameters.
+Xjadeo supports a multitude of video file formats, display libraries
+and sync sources. It includes an optional GUI called qjadeo that
+provides setup options, file history, video import/transcoding and
+control of Xjadeo's run-time parameters.
Optional dependencies are portmidi, lash, jack, and imlib2.
diff --git a/multimedia/xjadeo/xjadeo.SlackBuild b/multimedia/xjadeo/xjadeo.SlackBuild
index e05d12130c..886942009e 100644
--- a/multimedia/xjadeo/xjadeo.SlackBuild
+++ b/multimedia/xjadeo/xjadeo.SlackBuild
@@ -1,11 +1,14 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for <xjadeo>
# Written by Michales Michaloudes korgie@gmail.com
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=xjadeo
-VERSION=${VERSION:-0.8.7}
+VERSION=${VERSION:-0.8.13}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -15,7 +18,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -49,6 +59,9 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+# libporttime is included in libportmidi
+sed -i 's/-lporttime//g' configure
+
CFLAGS="$SLKCFLAGS -fgnu89-inline" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -89,4 +102,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/xjadeo/xjadeo.desktop b/multimedia/xjadeo/xjadeo.desktop
index 2c3a7972df..d27ff0e8cf 100644
--- a/multimedia/xjadeo/xjadeo.desktop
+++ b/multimedia/xjadeo/xjadeo.desktop
@@ -1,5 +1,5 @@
[Desktop Entry]
-Exec=qjadeo
+Exec=xjadeo
Icon=/usr/share/xjadeo/qjadeo_102.xpm
Name=jadeo
GenericName=Video player for sync with jack
diff --git a/multimedia/xjadeo/xjadeo.info b/multimedia/xjadeo/xjadeo.info
index 39f7502d66..4c6dffd142 100644
--- a/multimedia/xjadeo/xjadeo.info
+++ b/multimedia/xjadeo/xjadeo.info
@@ -1,10 +1,10 @@
PRGNAM="xjadeo"
-VERSION="0.8.7"
+VERSION="0.8.13"
HOMEPAGE="http://xjadeo.sourceforge.net/"
-DOWNLOAD="http://downloads.sourceforge.net/project/xjadeo/xjadeo/v0.8.7/xjadeo-0.8.7.tar.gz"
-MD5SUM="9c929f80b44c9549fbda372b26a19462"
+DOWNLOAD="http://downloads.sourceforge.net/xjadeo/xjadeo-0.8.13.tar.gz"
+MD5SUM="37210f929853f3de35973501f7b4615b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg liblo"
+REQUIRES="liblo"
MAINTAINER="Michales Michaloudes"
EMAIL="korgie@gmail.com"
diff --git a/multimedia/xmltv/README b/multimedia/xmltv/README
index e17c0d9bc1..dc25b7b3c4 100644
--- a/multimedia/xmltv/README
+++ b/multimedia/xmltv/README
@@ -1,14 +1,15 @@
-XMLTV is a set of utilities to manage your TV viewing. They work with
-TV listings stored in the XMLTV format, which is based on XML. The idea
-is to separate out the back-end (getting the listings) from the front-end
-(displaying them for the user), and to implement useful operations like
-picking out your favorite programs as filters that read and write XML
-documents.
+XMLTV is a set of utilities to manage your TV viewing. They work with
+TV listings stored in the XMLTV format, which is based on XML. The
+idea is to separate out the back-end (getting the listings) from the
+front-end (displaying them for the user), and to implement useful
+operations like picking out your favorite programs as filters that
+read and write XML documents.
-At present there are back-ends grabbing TV listings for Australia, Belgium
-and Luxembourg, Brazil, Argentina, Britain and Ireland, Croatia, Denmark,
-Estonia, Finland, France, Germany, Hungary and Romania, Iceland, Italy,
-Japan, Netherlands, North America, Norway, Portugal, Reunion Island (France),
-South Africa, Spain, Sweden, and Switzerland.
+At present there are back-ends grabbing TV listings for Australia,
+Belgium and Luxembourg, Brazil, Argentina, Britain and Ireland,
+Croatia, Denmark, Estonia, Finland, France, Germany, Hungary and
+Romania, Iceland, Italy, Japan, Netherlands, North America, Norway,
+Portugal, Reunion Island (France), South Africa, Spain, Sweden, and
+Switzerland.
See README.SBo for optional requirements for grabbers.
diff --git a/multimedia/xmltv/README.SBo b/multimedia/xmltv/README.SBo
index 82de94966a..270be339d3 100644
--- a/multimedia/xmltv/README.SBo
+++ b/multimedia/xmltv/README.SBo
@@ -1,9 +1,3 @@
-This requires:
-libwww-perl, perl-xml-twig, perl-Date-Manip, perl-XML-Writer,
-perl-Lingua-Preferred, perl-TermReadKey, perl-Unicode-String,
-perl-Term-ProgressBar, perl-File-Slurp, perl-xml-libxml,
-perl-Lingua-EN-Numbers-Ordinate.
-
optional requirements for grabbers:
dk requires: perl-HTML-Tree
fi requires: perl-HTML-Tree
diff --git a/multimedia/xmltv/xmltv.SlackBuild b/multimedia/xmltv/xmltv.SlackBuild
index d7efae8986..fecc8adef1 100644
--- a/multimedia/xmltv/xmltv.SlackBuild
+++ b/multimedia/xmltv/xmltv.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware Build Script for xmltv
@@ -22,31 +22,55 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=xmltv
-VERSION=${VERSION:-0.5.66}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-0.6.3}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=${TMP}/package-${PRGNAM}
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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z*
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
@@ -76,11 +100,11 @@ find $PKG -depth -type d -empty -delete || true
rm -rf $PKG/usr/share/doc
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a ChangeLog README README.cygwin doc/* $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a Changes README* doc/* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/xmltv/xmltv.info b/multimedia/xmltv/xmltv.info
index aa11981c21..698c0cc054 100644
--- a/multimedia/xmltv/xmltv.info
+++ b/multimedia/xmltv/xmltv.info
@@ -1,8 +1,8 @@
PRGNAM="xmltv"
-VERSION="0.5.66"
+VERSION="0.6.3"
HOMEPAGE="http://xmltv.org/wiki"
-DOWNLOAD="http://downloads.sourceforge.net/xmltv/xmltv-0.5.66.tar.bz2"
-MD5SUM="1ad51ff5a02e8320bd908c7908c49661"
+DOWNLOAD="https://github.com/XMLTV/xmltv/archive/v0.6.3/xmltv-0.6.3.tar.gz"
+MD5SUM="60ce0c74b1d7254753d7508ee8a4c46c"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="libwww-perl perl-Date-Manip perl-File-Slurp perl-Lingua-EN-Numbers-Ordinate perl-Lingua-Preferred perl-Term-ProgressBar perl-Unicode-String perl-XML-Writer perl-xml-libxml perl-xml-twig perl-XML-TreePP"
diff --git a/multimedia/xmms-crossfade/README b/multimedia/xmms-crossfade/README
index 3272c8660c..d91aea033f 100644
--- a/multimedia/xmms-crossfade/README
+++ b/multimedia/xmms-crossfade/README
@@ -5,34 +5,36 @@ smoothly crossfade inbetween.
Features:
- * Crossfading
- Crossfade between two songs, i.e. fade out the end of the current song
- while fading in the beginning of the next for a smooth transition. Length
- and volume of the fadings can be adjusted separately for fading in and
- out.
-
- * Fadein/Fadeout
- Smoothly fadein/fadeout at the beginning or end of playback.
-
- * Continuous output
- Keeps the audio device opened when switching from one song to the next.
- When used with the Gap-Killer, this allows for seamless playback of whole
- albums without any audible interruption between the tracks.
-
- * Gap-Killer
- Removes the short gaps of silence at the beginning and/or end of mp3
- files. These gaps are caused by some mp3-encoders.
-
- * Automatic detection of live albums
- Automatically detects live albums and pre-mixed tracks which already are
- crossfaded. For those tracks, crossfading can be disabled automatically.
-
- * High quality
- XMMS-crossfade can take special care to avoid the clicks some
- soundcards produce when suddenly being stopped. Also, it can improve
- quality when seeking within a song.
-
- * Secondary effect plugin:
- XMMS-crossfade allows you to select a second effect plugin. This is
- usefull for example when using the volume normalizing plugin together
- with the icecast plugin.
+* Crossfading
+ Crossfade between two songs, i.e. fade out the end of the current
+ song while fading in the beginning of the next for a smooth
+ transition. Length and volume of the fadings can be adjusted
+ separately for fading in and out.
+
+* Fadein/Fadeout
+ Smoothly fadein/fadeout at the beginning or end of playback.
+
+* Continuous output
+ Keeps the audio device opened when switching from one song to
+ the next. When used with the Gap-Killer, this allows for seamless
+ playback of whole albums without any audible interruption between
+ the tracks.
+
+* Gap-Killer
+ Removes the short gaps of silence at the beginning and/or end of mp3
+ files. These gaps are caused by some mp3-encoders.
+
+* Automatic detection of live albums
+ Automatically detects live albums and pre-mixed tracks which already
+ are crossfaded. For those tracks, crossfading can be disabled
+ automatically.
+
+* High quality
+ XMMS-crossfade can take special care to avoid the clicks some
+ soundcards produce when suddenly being stopped. Also, it can improve
+ quality when seeking within a song.
+
+* Secondary effect plugin:
+ XMMS-crossfade allows you to select a second effect plugin. This is
+ useful for example when using the volume normalizing plugin together
+ with the icecast plugin.
diff --git a/multimedia/xmms-crossfade/xmms-crossfade.SlackBuild b/multimedia/xmms-crossfade/xmms-crossfade.SlackBuild
index 4dc4e8e6b9..bc7fae0883 100644
--- a/multimedia/xmms-crossfade/xmms-crossfade.SlackBuild
+++ b/multimedia/xmms-crossfade/xmms-crossfade.SlackBuild
@@ -1,10 +1,10 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for xmms-crossfade
# Written by Luis Henrique <email removed>
-# Now maintained by B. Watson <yalhcru@gmail.com>
+# Now maintained by B. Watson <urchlay@slackware.uk>
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
@@ -17,10 +17,13 @@
# XMMS don't seem to matter: I can't get it to segfault in the ways
# described. If anyone does have segfaults, please let me know.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=xmms-crossfade
VERSION=${VERSION:-0.3.14}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -30,7 +33,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -60,11 +67,8 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \+ -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \+
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
LDFLAGS="-Wl,-s" \
CFLAGS="$SLKCFLAGS -fgnu89-inline" \
@@ -95,4 +99,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/xmms-crossfade/xmms-crossfade.info b/multimedia/xmms-crossfade/xmms-crossfade.info
index 1b82ba026b..132507b588 100644
--- a/multimedia/xmms-crossfade/xmms-crossfade.info
+++ b/multimedia/xmms-crossfade/xmms-crossfade.info
@@ -1,10 +1,10 @@
PRGNAM="xmms-crossfade"
VERSION="0.3.14"
-HOMEPAGE="http://www.eisenlohr.org/xmms-crossfade"
-DOWNLOAD="http://www.eisenlohr.org/xmms-crossfade/xmms-crossfade-0.3.14.tar.gz"
+HOMEPAGE="https://www.eisenlohr.org/xmms-crossfade"
+DOWNLOAD="https://www.eisenlohr.org/xmms-crossfade/xmms-crossfade-0.3.14.tar.gz"
MD5SUM="026c52544c7f3193d384288c9f8296aa"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/multimedia/xmms-cue/README b/multimedia/xmms-cue/README
new file mode 100644
index 0000000000..2108a0a27a
--- /dev/null
+++ b/multimedia/xmms-cue/README
@@ -0,0 +1,2 @@
+VirtualCueXmms is an input plugin for XMMS 1.x
+for the parsing/playing of CUE sheet files.
diff --git a/multimedia/lircaile/slack-desc b/multimedia/xmms-cue/slack-desc
index bc16ea971a..ef1e69017c 100644
--- a/multimedia/lircaile/slack-desc
+++ b/multimedia/xmms-cue/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-lircaile: lircaile (a LIRC plugin for the Exaile media player)
-lircaile:
-lircaile: A LIRC (Linux Infrared Control) plugin for the Exaile media player
-lircaile:
-lircaile:
-lircaile:
-lircaile:
-lircaile:
-lircaile:
-lircaile:
-lircaile:
+xmms-cue: xmms-cue (XMMS Cuesheet reader plugin)
+xmms-cue:
+xmms-cue: VirtualCueXmms is an XMMS input plugin for playing CUE files.
+xmms-cue:
+xmms-cue: http://virtualcuexmms.sourceforge.net/
+xmms-cue:
+xmms-cue:
+xmms-cue:
+xmms-cue:
+xmms-cue:
+xmms-cue:
diff --git a/multimedia/xmms-cue/xmms-cue.SlackBuild b/multimedia/xmms-cue/xmms-cue.SlackBuild
new file mode 100644
index 0000000000..d68b822d74
--- /dev/null
+++ b/multimedia/xmms-cue/xmms-cue.SlackBuild
@@ -0,0 +1,144 @@
+#!/bin/bash
+#
+# Slackware build script for VirtualCue plugin for XMMS 1.x.
+#
+# Copyright 2020 by Jay, Seattle, WA.
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions, and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=xmms-cue
+SRCNAM=VirtualCueXmms
+VERSION=${VERSION:-0.2}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# Caveat emptor
+case "$ARCH" in
+ i?86) ;;
+ x86_64) ;;
+ *) echo -e "\nBuild for $ARCH is untested!!"
+ echo -e "Press Ctrl-C within ten seconds to abort,"
+ echo -e "or press ENTER to continue at your own risk.\n"
+ read -t 10 PLACEHOLDER ;;
+esac
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+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 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $SRCNAM
+tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
+cd $SRCNAM
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# The object file CueParser.o is 32-bit.
+# Thus, it must be recompiled for
+# 64-bit build to work.
+case "$ARCH" in
+ i?86) ;;
+ *) cd Cueparser
+ gcc -v -g $SLKCFLAGS -c CueParser.c
+ cd .. ;;
+esac
+
+# Compile general plugin
+cd GeneralPlayer
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --build=$ARCH-slackware-linux
+
+sed -i "6s/-O/$SLKCFLAGS/" Makefile
+sed -i "10i\
+INSTALLPATH = $PKG\/usr\/lib${LIBDIRSUFFIX}\/xmms\/General" Makefile
+make
+make install
+
+# Compile input plugin
+cd ../InPlayer
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --build=$ARCH-slackware-linux
+
+sed -i "6s/-O/$SLKCFLAGS/" Makefile
+sed -i "10i\
+INSTALLPATH = $PKG\/usr\/lib${LIBDIRSUFFIX}\/xmms\/Input" Makefile
+make
+make install
+
+find $PKG -print0 | xargs -0 file | grep -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+cat $TMP/$SRCNAM/README > $PKG/usr/doc/$PRGNAM-$VERSION/README
+cat $TMP/$SRCNAM/TODO > $PKG/usr/doc/$PRGNAM-$VERSION/TODO
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/xmms-cue/xmms-cue.info b/multimedia/xmms-cue/xmms-cue.info
new file mode 100644
index 0000000000..cfd4851a8a
--- /dev/null
+++ b/multimedia/xmms-cue/xmms-cue.info
@@ -0,0 +1,10 @@
+PRGNAM="xmms-cue"
+VERSION="0.2"
+HOMEPAGE="http://virtualcuexmms.sourceforge.net/"
+DOWNLOAD="https://downloads.sourceforge.net/project/virtualcuexmms/virtualcuexmms/VirtualCueXmms%200.2/VirtualCueXmms-0.2.tar.gz"
+MD5SUM="c9ebf2a7f07a430b05fa105a0483c000"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Jay"
+EMAIL="ld.jay@protonmail.com"
diff --git a/multimedia/xvid4conf/README b/multimedia/xvid4conf/README
index a0105ddd3e..589594718d 100644
--- a/multimedia/xvid4conf/README
+++ b/multimedia/xvid4conf/README
@@ -1,3 +1,4 @@
-This tool creates XviD configuration files. The generated configuration file
-is meant to be read by transcodes xvid4 export module. This module (and so
-the configuration file) is intended to be used with XviD 1.0 (dev-api-4).
+This tool creates XviD configuration files. The generated
+configuration file is meant to be read by transcodes xvid4 export
+module. This module (and so the configuration file) is intended to be
+used with XviD 1.0 (dev-api-4).
diff --git a/multimedia/xvid4conf/xvid4conf.SlackBuild b/multimedia/xvid4conf/xvid4conf.SlackBuild
index 66137b3c60..dee772cdc1 100644
--- a/multimedia/xvid4conf/xvid4conf.SlackBuild
+++ b/multimedia/xvid4conf/xvid4conf.SlackBuild
@@ -1,29 +1,39 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for xvid4conf
# Written by Luis Henrique <lmello.009@gmail.com>
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=xvid4conf
VERSION=${VERSION:-1.12}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -75,4 +85,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/xvidcore/xvidcore.SlackBuild b/multimedia/xvidcore/xvidcore.SlackBuild
index c2ee4f20c8..c056df029c 100644
--- a/multimedia/xvidcore/xvidcore.SlackBuild
+++ b/multimedia/xvidcore/xvidcore.SlackBuild
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for Xvid
# Copyright 2007, 2008 Frank Caraballo <fecaraballo{at}gmail{dot}com>
-# Copyright 2014-2018 Heinz Wiesinger, Amsterdam, The Netherlands
+# Copyright 2014-2021 Heinz Wiesinger, Amsterdam, The Netherlands
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -12,37 +12,47 @@
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=xvidcore
-VERSION=${VERSION:-1.3.5}
+VERSION=${VERSION:-1.3.7}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -61,7 +71,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM
chown -R root:root .
find -L . \
@@ -77,11 +87,16 @@ CFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
+ --disable-static \
--build=$ARCH-slackware-linux
make
make install DESTDIR=$PKG
+# Don't ship .la/.a files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.a
+
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
@@ -95,4 +110,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/xvidcore/xvidcore.info b/multimedia/xvidcore/xvidcore.info
index fc61f33ef5..5a5869ffd6 100644
--- a/multimedia/xvidcore/xvidcore.info
+++ b/multimedia/xvidcore/xvidcore.info
@@ -1,10 +1,10 @@
PRGNAM="xvidcore"
-VERSION="1.3.5"
+VERSION="1.3.7"
HOMEPAGE="https://labs.xvid.com/project/"
-DOWNLOAD="https://downloads.xvid.com/downloads/xvidcore-1.3.5.tar.bz2"
-MD5SUM="6877498cfc5b7f652e1a564699dba655"
+DOWNLOAD="https://downloads.xvid.com/downloads/xvidcore-1.3.7.tar.gz"
+MD5SUM="5c6c19324608ac491485dbb27d4da517"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Heinz Wiesinger"
-EMAIL="pprkut@liwjatan.at"
+EMAIL="pprkut@slackbuilds.org"
diff --git a/multimedia/xvst/xvst.SlackBuild b/multimedia/xvst/xvst.SlackBuild
index 4497714f9a..7673db95c3 100644
--- a/multimedia/xvst/xvst.SlackBuild
+++ b/multimedia/xvst/xvst.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for xvst
@@ -22,11 +22,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=xvst
SRCNAM=xVideoServiceThief
VERSION=${VERSION:-2.5.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -113,4 +123,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/xvst/xvst.info b/multimedia/xvst/xvst.info
index 85c5f0b241..471d2a9f81 100644
--- a/multimedia/xvst/xvst.info
+++ b/multimedia/xvst/xvst.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/xVST/xVideoServiceThief/archive/2.5.2/xVideoService
MD5SUM="0146a258bd5c582f539c9ac7f6342949"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ffmpeg qt5-webkit"
+REQUIRES=""
MAINTAINER="Larry Hajali"
EMAIL="larryhaja[at]gmail[dot]com"
diff --git a/multimedia/yarock/README b/multimedia/yarock/README
index f6b893d3f1..f58194dece 100644
--- a/multimedia/yarock/README
+++ b/multimedia/yarock/README
@@ -1,10 +1,9 @@
-Yarock is a modern looking music player, packed with features,
-that doesn't depend on any specific desktop environment.
-Yarock is designed to provide an easy and pretty music browser
-based on cover art.
+Yarock is a modern looking music player, packed with features,
+that doesn't depend on any specific desktop environment. Yarock is
+designed to provide an easy and pretty music browser based on cover
+art.
-NOTE:
-You can build yarock with alternate audio engine (phonon is the default one).
-If you want to disable phonon just use -DENABLE_PHONON=OFF as cmake option.
-For vlc audio engine -DENABLE_VLC=ON.
-For mpv audio engine -DENABLE_MPV=ON.
+NOTE: You can build yarock with an alternate audio engine (phonon is
+the default), by editing the SlackBuild. If you want to disable phonon
+just use -DENABLE_PHONON=OFF as a cmake option. For vlc audio engine
+-DENABLE_VLC=ON. For mpv audio engine -DENABLE_MPV=ON.
diff --git a/multimedia/yarock/yarock.SlackBuild b/multimedia/yarock/yarock.SlackBuild
index fd0bdff97e..60dda27047 100644
--- a/multimedia/yarock/yarock.SlackBuild
+++ b/multimedia/yarock/yarock.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for yarock
@@ -22,11 +22,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=yarock
SRCNAM=$(echo ${PRGNAM^})
VERSION=${VERSION:-1.3.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -36,7 +39,14 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -70,6 +80,8 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+SLKCFLAGS+=" -I/usr/include/phonon4qt5/"
+
# Alternate Audio engine
# ----------------------
# You can build yarock with alternate audio engine (phonon is the default one)
@@ -81,7 +93,7 @@ cd build
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DENABLE_QT5=OFF \
+ -DENABLE_QT5=ON \
-DENABLE_PHONON=ON \
-DENABLE_VLC=OFF \
-DENABLE_MPV=OFF \
@@ -109,4 +121,4 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/youtube-viewer/README b/multimedia/youtube-viewer/README
deleted file mode 100644
index e757d99e39..0000000000
--- a/multimedia/youtube-viewer/README
+++ /dev/null
@@ -1,51 +0,0 @@
-youtube-viewer (browse YouTube videos from a terminal or GTK UI)
-
-Youtube Viewer is a dedicated application for searching, viewing, and
-downloading Youtube videos, using wget for downloading and MPlayer for
-viewing. It has been written in Perl and plays videos from Youtube at
-the best quality available without using a flash player.
-
-*********
-Note: Google has revoked the API key formerly used by youtube-viewer. To
-use this, you'll have to create a Google account and register for an API
-key. See /usr/doc/youtube-viewer-$VERSION/README.md for instructions.
-See https://github.com/trizen/youtube-viewer/issues/308 for more
-information.
-
-If you don't like this restriction, try using straw-viewer instead.
-*********
-
-Optional dependencies:
-
-perl-gtk2, perl-File-ShareDir - for gtk2-youtube-viewer.
-perl-Gtk3, perl-File-ShareDir, perl-List-MoreUtils - for gtk3-youtube-viewer.
-perl-Text-CharWidth, perl-Unicode-LineBreak - for better formatting
- in the terminal.
-perl-Term-ReadLine-Gnu - for command editing/history in the terminal.
-youtube-dl [2] - if this is present, youtube-viewer will use it to detect
- available formats for the video.
-
-Counting optional ones, youtube-viewer has over 40 dependencies. To make
-life easier, there's now a "youtube-viewer.sqf" queue file included with
-this build, which includes everything listed above.
-
-[1] A small caveat about youtube-dl: youtube-viewer works without it,
-though occasionally it'll choose a lower quality than is available
-for some videos. However, if youtube-dl is present but outdated,
-youtube-viewer will fail to play videos at all! If you suspect this,
-remove youtube-dl and try without it.
-
-This build always includes the command-line client (youtube-viewer). For
-the GTK client (gtk-youtube-viewer), install perl-gtk2 and
-perl-File-ShareDir before running this script. If you have them installed
-but don't want gtk-youtube-viewer, you can set GTK=no in the script's
-environment.
-
-To force gtk-youtube-viewer to use your preferred terminal for downloading
-with wget and watching in a terminal, set TERMINAL in the script's
-environment (e.g. TERMINAL="xterm" or TERMINAL="urxvt").
-
-When upgrading to 3.2.4, I had to remove my old config file to get the new
-gtk-youtube-viewer to work correctly. If you have issues after an upgrade:
-
-rm -f ~/.config/youtube-viewer/gtk-youtube-viewer.conf
diff --git a/multimedia/youtube-viewer/doinst.sh b/multimedia/youtube-viewer/doinst.sh
deleted file mode 100644
index 696d35bad7..0000000000
--- a/multimedia/youtube-viewer/doinst.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-
-if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
-fi
diff --git a/multimedia/youtube-viewer/list-moreutils.diff b/multimedia/youtube-viewer/list-moreutils.diff
deleted file mode 100644
index 7aaf1676df..0000000000
--- a/multimedia/youtube-viewer/list-moreutils.diff
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -Naur youtube-viewer-3.7.4/bin/gtk3-youtube-viewer youtube-viewer-3.7.4.patched/bin/gtk3-youtube-viewer
---- youtube-viewer-3.7.4/bin/gtk3-youtube-viewer 2020-02-11 22:35:13.000000000 -0500
-+++ youtube-viewer-3.7.4.patched/bin/gtk3-youtube-viewer 2020-03-05 17:02:07.819892140 -0500
-@@ -638,11 +638,11 @@
- undef $history{lc($line)};
- }
-
-- require List::Util;
-+ require List::MoreUtils;
-
- # Keep only the most recent non-duplicated entries
-- @history = reverse(List::Util::uniq(reverse(@history)));
-- @search_history = List::Util::uniq(@search_history);
-+ @history = reverse(List::MoreUtils::uniq(reverse(@history)));
-+ @search_history = List::MoreUtils::uniq(@search_history);
-
- # Set entry completion
- $completion = Gtk3::EntryCompletion->new;
diff --git a/multimedia/youtube-viewer/slack-desc b/multimedia/youtube-viewer/slack-desc
deleted file mode 100644
index 6b3f543618..0000000000
--- a/multimedia/youtube-viewer/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-youtube-viewer: youtube-viewer (browse YouTube videos from a terminal or GTK UI)
-youtube-viewer:
-youtube-viewer: Youtube Viewer is a CLI application dedicated for searching and
-youtube-viewer: streaming Youtube Videos with MPlayer. It has been written in Perl
-youtube-viewer: and plays videos from Youtube at the best quality available without
-youtube-viewer: using a flash player.
-youtube-viewer:
-youtube-viewer:
-youtube-viewer:
-youtube-viewer:
-youtube-viewer:
diff --git a/multimedia/youtube-viewer/youtube-viewer.SlackBuild b/multimedia/youtube-viewer/youtube-viewer.SlackBuild
deleted file mode 100644
index a12b886b9d..0000000000
--- a/multimedia/youtube-viewer/youtube-viewer.SlackBuild
+++ /dev/null
@@ -1,167 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for youtube-viewer
-
-# Written by B. Watson (yalhcru@gmail.com)
-
-# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
-
-# 20200305 bkw: updated for 3.7.4, add README stuff about API keys.
-# 20200110 bkw: updated for 3.7.0, add .sqf.
-# 20191220 bkw: updated for 3.6.0.
-# 20191201 bkw: updated for 3.5.9.
-# 20180917 bkw: updated for 3.5.0.
-# 20180902 bkw: updated for 3.4.1.
-# 20180613 bkw: updated for 3.3.4.
-
-# 20180111 bkw:
-# - updated for 3.3.3.
-# - remove unneeded command history patch.
-
-# 20171225 bkw:
-# - updated for 3.3.2.
-# - add upstream patch (commit d857451) to fix a long-standing bug where
-# youtube-viewer's command history wasn't being saved across sessions.
-# NOTE TO SELF: remove this patch once 3.3.3 is released.
-
-# 20171219 bkw: updated for 3.3.1.
-
-# 20170921 bkw:
-# - updated for 3.2.9.
-# - add warning in README about outdated youtube-dl.
-
-# 20170614 bkw: updated for 3.2.8.
-# 20170423 bkw: updated for 3.2.7.
-# 20170324 bkw: updated for 3.2.6.
-
-# 20170301 bkw:
-# - updated for 3.2.5.
-# - use 'long format' download URL, as per David Spencer's post to
-# the mailing list (thanks David!)
-
-# 20161017 bkw:
-# - updated for 3.2.4.
-
-# 20160804 bkw:
-# - updated for 3.2.3.
-# - ARCH=noarch, there is no compiled code here, only perl scripts.
-# - mention perl-Term-ReadLine-Gnu optional dep in README. In case
-# you wonder about the other optional dep, Unicode::GCString,
-# it's an either-or with perl-Text-CharWidth. No need to install both,
-# and SBo doesn't have a perl-Unicode-GCString build anyway.
-
-# 20150309 bkw: Updated for 3.1.4 release.
-# Quite a bit of changes under the hood for what's supposed to be
-# a point release: upstream dropped the XML::Fast dep and added
-# JSON::XS.
-
-# 20150309 bkw: Updated for 3.1.2 release
-
-# 20140806 bkw:
-# - Updated for 3.1.1 release. This adds a couple of new deps :(
-# - Made perl-LWP-Protocol-https required instead of optional.
-
-# 20140318 bkw:
-# - Updated for 3.0.9 release
-# - Added support for gtk-youtube-viewer
-
-PRGNAM=youtube-viewer
-VERSION=${VERSION:-3.7.4}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-ARCH=noarch
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION/
-chown -R root:root .
-find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
- \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
-
-# perl-gtk2 and perl-Gtk3 are runtime deps, we can build with GTK=yes
-# even if they're not installed... but don't do that by default.
-GTK="${GTK:-auto}"
-
-case "$GTK" in
- no) BUILD_GTK="no" ;;
- yes) BUILD_GTK="yes" ;;
- *) if perl -MGtk2 -MFile::ShareDir -e 0 2>/dev/null; then
- BUILD_GTK="yes"
- elif perl -MGtk3 -MFile::ShareDir -MList::MoreUtils -e 0 2>/dev/null; then
- BUILD_GTK="yes"
- else
- BUILD_GTK="no"
- fi
- ;;
-esac
-
-[ "$BUILD_GTK" = "yes" ] && GTKOPT="--gtk"
-
-echo "=== HAVE_GTK=$HAVE_GTK BUILD_GTK=$BUILD_GTK"
-
-# 20200305 bkw: upstream claims gtk+3-3.20 is required, but everything
-# actually works fine with 14.2's 3.18. So:
-sed -i 's,"3.20","3.18",' share/gtk3-$PRGNAM.glade
-
-# 20200305 bkw: 14.2's perl package has List::Util 1.4.1, which lacks
-# the uniq() function. However, SBo's perl-List-MoreUtils provides it.
-# This means we can ignore the build warning:
-# ! List::Util (1.41) is installed, but we need version >= 1.43
-patch -p1 < $CWD/list-moreutils.diff
-
-perl Build.PL $GTKOPT prefix=/usr installdirs=vendor --destdir="$PKG"
-./Build
-./Build test
-./Build install --install_path script=/usr/bin
-
-# I couldn't figure out what to pass to Build.PL or Build to install
-# man pages correctly, so:
-mv $PKG/usr/share/man $PKG/usr/man
-gzip $PKG/usr/man/man?/*.?
-
-if [ "$BUILD_GTK" = "yes" ]; then
- # link .desktop and icon to standard locations
- mkdir -p $PKG/usr/share/applications $PKG/usr/share/pixmaps
- LNPATH="../perl5/vendor_perl/auto/share/dist/WWW-YoutubeViewer"
- ln -s $LNPATH/gtk-youtube-viewer.desktop \
- $PKG/usr/share/applications/gtk-youtube-viewer.desktop
- ln -s $LNPATH/icons/gtk-youtube-viewer.png \
- $PKG/usr/share/pixmaps/gtk-youtube-viewer.png
-
- # support TERMINAL option for user's preferred terminal.
- if [ "$TERMINAL" != "" ]; then
- sed -i "s/'gnome-terminal'/'$TERMINAL', &/" $PKG/usr/bin/gtk?-$PRGNAM
- fi
-fi
-
-find $PKG -name perllocal.pod \
- -o -name ".packlist" \
- -o -name "*.bs" \
- | xargs rm -f
-
-find $PKG -depth -type d -empty -delete || true
-
-# the permissions in the final package are weird.
-find $PKG -type f -print0 | xargs -0 chmod 644
-find $PKG -type d -print0 | xargs -0 chmod 755
-chmod +x $PKG/usr/bin/*
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a README* Changes $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/youtube-viewer/youtube-viewer.info b/multimedia/youtube-viewer/youtube-viewer.info
deleted file mode 100644
index 39c9f54166..0000000000
--- a/multimedia/youtube-viewer/youtube-viewer.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="youtube-viewer"
-VERSION="3.7.4"
-HOMEPAGE="https://github.com/trizen/youtube-viewer/"
-DOWNLOAD="https://github.com/trizen/youtube-viewer/archive/3.7.4/youtube-viewer-3.7.4.tar.gz"
-MD5SUM="17e183cdccfe30c04aed7263d26654a0"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="perl-data-dump perl-LWP-Protocol-https perl-lwp-useragent-cached perl-JSON perl-JSON-XS perl-Module-Build"
-MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
diff --git a/multimedia/zvbi/README b/multimedia/zvbi/README
index 18f1efda76..257796160e 100644
--- a/multimedia/zvbi/README
+++ b/multimedia/zvbi/README
@@ -1,12 +1,13 @@
-The Zapping VBI library, in short ZVBI, provides functions to capture and
-decode VBI data. It is written in plain ANSI C with few dependencies on other
-tools and libraries, licensed under GPL.
+The Zapping VBI library, in short ZVBI, provides functions to
+capture and decode VBI data. It is written in plain ANSI C with few
+dependencies on other tools and libraries, licensed under GPL.
-The vertical blanking interval (VBI) is an interval in a television signal
-that temporarily suspends transmission of the signal for the electron gun to
-move back up to the first line of the television screen to trace the next
-screen field.
+The vertical blanking interval (VBI) is an interval in a television
+signal that temporarily suspends transmission of the signal for the
+electron gun to move back up to the first line of the television
+screen to trace the next screen field.
-The vertical blanking interval can be used to carry data, since anything sent
-during the VBI would naturally not be displayed; various test signals, closed
-captioning, and other digital data can be sent during this time period.
+The vertical blanking interval can be used to carry data, since
+anything sent during the VBI would naturally not be displayed; various
+test signals, closed captioning, and other digital data can be sent
+during this time period.
diff --git a/multimedia/zvbi/zvbi.SlackBuild b/multimedia/zvbi/zvbi.SlackBuild
index 8108205361..15bdf1c3dc 100644
--- a/multimedia/zvbi/zvbi.SlackBuild
+++ b/multimedia/zvbi/zvbi.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for zvbi
# Copyright 2014 Christoph Willing, Bribane, Australia
+# Copyright 2022 Bill Kirkpatrick, Bay City, Texas, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,26 +23,36 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=zvbi
VERSION=${VERSION:-0.2.35}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -84,6 +95,8 @@ CXXFLAGS="$SLKCFLAGS" \
make
make install DESTDIR=$PKG
+rm -f $PKG/usr/lib*/*.la
+
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
@@ -99,4 +112,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/multimedia/zvbi/zvbi.info b/multimedia/zvbi/zvbi.info
index 52e404e0ec..a7bf950d71 100644
--- a/multimedia/zvbi/zvbi.info
+++ b/multimedia/zvbi/zvbi.info
@@ -6,5 +6,5 @@ MD5SUM="95e53eb208c65ba6667fd4341455fa27"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Christoph Willing"
-EMAIL="chris.willing@linux.com"
+MAINTAINER="Bill Kirkpatrick"
+EMAIL="bkirkp@gmail.com"