Index: head/multimedia/Makefile =================================================================== --- head/multimedia/Makefile (revision 517257) +++ head/multimedia/Makefile (revision 517258) @@ -1,467 +1,468 @@ # $FreeBSD$ # COMMENT = Multimedia software SUBDIR += Bento4 SUBDIR += QtAV SUBDIR += ab25 SUBDIR += acidrip SUBDIR += aegisub SUBDIR += aom SUBDIR += aravis SUBDIR += assimp SUBDIR += atomicparsley SUBDIR += audacious SUBDIR += audacious-gtk3 SUBDIR += audacious-plugins SUBDIR += audacious-plugins-gtk3 SUBDIR += avidemux SUBDIR += avidemux-cli SUBDIR += avidemux-plugins SUBDIR += avinfo SUBDIR += baka-mplayer SUBDIR += bcmatroska2 SUBDIR += bino SUBDIR += bitstream SUBDIR += blind SUBDIR += bsdbktr_tvtune SUBDIR += butt SUBDIR += camserv SUBDIR += ccextractor SUBDIR += cclive SUBDIR += celluloid SUBDIR += cheese SUBDIR += chilitags SUBDIR += cinelerra-gg SUBDIR += clipgrab SUBDIR += clive SUBDIR += clutter-gst SUBDIR += clutter-gst3 SUBDIR += cmrt SUBDIR += cmrtlib SUBDIR += cuse4bsd-kmod SUBDIR += cx88 SUBDIR += dav1d SUBDIR += deforaos-player SUBDIR += devede SUBDIR += din SUBDIR += dirac SUBDIR += dragon SUBDIR += dtv-scan-tables SUBDIR += dumpmpeg SUBDIR += dv2sub SUBDIR += dvb-apps SUBDIR += dvbcut SUBDIR += dvbsnoop SUBDIR += dvd-slideshow SUBDIR += dvdauthor SUBDIR += dvdid SUBDIR += dvdrip SUBDIR += dvdstyler SUBDIR += emby-server SUBDIR += emovix SUBDIR += ffaudioconverter SUBDIR += ffdec SUBDIR += ffmpeg SUBDIR += ffmpeg2theora SUBDIR += ffmpegthumbnailer SUBDIR += ffms2 SUBDIR += flvmeta SUBDIR += flvstreamer SUBDIR += flvtool++ SUBDIR += fpc-dts SUBDIR += fpc-libvlc SUBDIR += freevo SUBDIR += fxtv SUBDIR += gaupol SUBDIR += gavl SUBDIR += gdialog SUBDIR += gdvrecv SUBDIR += gmerlin SUBDIR += gmimms SUBDIR += gmmlib SUBDIR += gmp-api SUBDIR += gmtk SUBDIR += gnome-mplayer SUBDIR += gnome-subtitles SUBDIR += gnome-twitch SUBDIR += gpac-libgpac SUBDIR += gpac-mp4box SUBDIR += gpodder SUBDIR += grake SUBDIR += gst123 SUBDIR += gstreamer SUBDIR += gstreamer-ffmpeg SUBDIR += gstreamer-plugins SUBDIR += gstreamer-plugins-all SUBDIR += gstreamer-plugins-annodex SUBDIR += gstreamer-plugins-bad SUBDIR += gstreamer-plugins-bz2 SUBDIR += gstreamer-plugins-core SUBDIR += gstreamer-plugins-dts SUBDIR += gstreamer-plugins-dv SUBDIR += gstreamer-plugins-dvd SUBDIR += gstreamer-plugins-fluendo-mpegdemux SUBDIR += gstreamer-plugins-gnonlin SUBDIR += gstreamer-plugins-good SUBDIR += gstreamer-plugins-mpeg2dec SUBDIR += gstreamer-plugins-mpeg2enc SUBDIR += gstreamer-plugins-resindvd SUBDIR += gstreamer-plugins-schroedinger SUBDIR += gstreamer-plugins-theora SUBDIR += gstreamer-plugins-ugly SUBDIR += gstreamer-plugins-v4l2 SUBDIR += gstreamer-plugins-vdpau SUBDIR += gstreamer-plugins-vp8 SUBDIR += gstreamer-plugins-x264 SUBDIR += gstreamer-plugins-xvid SUBDIR += gstreamer1 SUBDIR += gstreamer1-editing-services SUBDIR += gstreamer1-libav SUBDIR += gstreamer1-plugins SUBDIR += gstreamer1-plugins-all SUBDIR += gstreamer1-plugins-aom SUBDIR += gstreamer1-plugins-assrender SUBDIR += gstreamer1-plugins-bad SUBDIR += gstreamer1-plugins-core SUBDIR += gstreamer1-plugins-dash SUBDIR += gstreamer1-plugins-dts SUBDIR += gstreamer1-plugins-dv SUBDIR += gstreamer1-plugins-dvdread SUBDIR += gstreamer1-plugins-gnonlin SUBDIR += gstreamer1-plugins-good SUBDIR += gstreamer1-plugins-hls SUBDIR += gstreamer1-plugins-kate SUBDIR += gstreamer1-plugins-libde265 SUBDIR += gstreamer1-plugins-mpeg2dec SUBDIR += gstreamer1-plugins-mpeg2enc SUBDIR += gstreamer1-plugins-mplex SUBDIR += gstreamer1-plugins-openh264 SUBDIR += gstreamer1-plugins-resindvd SUBDIR += gstreamer1-plugins-rtmp SUBDIR += gstreamer1-plugins-smoothstreaming SUBDIR += gstreamer1-plugins-svt-av1 SUBDIR += gstreamer1-plugins-svt-hevc SUBDIR += gstreamer1-plugins-svt-vp9 SUBDIR += gstreamer1-plugins-theora SUBDIR += gstreamer1-plugins-ttml SUBDIR += gstreamer1-plugins-ugly SUBDIR += gstreamer1-plugins-v4l2 SUBDIR += gstreamer1-plugins-vpx SUBDIR += gstreamer1-plugins-x264 SUBDIR += gstreamer1-plugins-x265 SUBDIR += gstreamer1-qt SUBDIR += gstreamer1-rtsp-server SUBDIR += gstreamer1-transcoder SUBDIR += gstreamer1-vaapi SUBDIR += gstreamer1-validate SUBDIR += gstreamermm SUBDIR += gtk-recordmydesktop SUBDIR += gtk-youtube-viewer SUBDIR += gxine SUBDIR += handbrake SUBDIR += harvid SUBDIR += imagination SUBDIR += iriverter SUBDIR += iso2mkv SUBDIR += jmref SUBDIR += kaffeine SUBDIR += kamoso SUBDIR += kdemultimedia SUBDIR += kdemultimedia-ffmpegthumbs SUBDIR += kdenlive SUBDIR += kf5-kmediaplayer SUBDIR += kmplayer SUBDIR += kodi SUBDIR += kodi-addon-inputstream.adaptive-devel SUBDIR += kodi-addon-peripheral-joystick SUBDIR += kodi-addon-pvr-hts SUBDIR += kodi-addon-pvr-iptvsimple SUBDIR += kodi-addon-vfs.libarchive-devel SUBDIR += kodi-devel SUBDIR += kvazaar SUBDIR += l-smash SUBDIR += libaacs SUBDIR += libass SUBDIR += libav SUBDIR += libbdplus SUBDIR += libbluray SUBDIR += libcec SUBDIR += libdc1394 SUBDIR += libdca SUBDIR += libdcadec SUBDIR += libde265 SUBDIR += libdv SUBDIR += libdvbcsa SUBDIR += libdvbpsi SUBDIR += libdvdcss SUBDIR += libdvdnav SUBDIR += libdvdread SUBDIR += libfame SUBDIR += libhdhomerun SUBDIR += libkate SUBDIR += libmatroska SUBDIR += libmediaart SUBDIR += libmediainfo SUBDIR += libmpeg2 SUBDIR += libmpeg3 SUBDIR += libmtp SUBDIR += libopenshot SUBDIR += libquicktime SUBDIR += libquicktime-lame SUBDIR += libquvi SUBDIR += libquvi-scripts SUBDIR += libquvi-scripts09 SUBDIR += libquvi09 + SUBDIR += librav1e SUBDIR += librtmp SUBDIR += libsmacker SUBDIR += libtheora SUBDIR += libtuner SUBDIR += libuvc SUBDIR += libv4l SUBDIR += libva SUBDIR += libva-glx SUBDIR += libva-intel-driver SUBDIR += libva-intel-hybrid-driver SUBDIR += libva-intel-media-driver SUBDIR += libva-utils SUBDIR += libva-vdpau-driver SUBDIR += libvdpau SUBDIR += libvdpau-va-gl SUBDIR += libvpx SUBDIR += libx264 SUBDIR += libxine SUBDIR += libxspf SUBDIR += libzen SUBDIR += linux-c6-libtheora SUBDIR += linux-c6-libv4l SUBDIR += linux-c7-libtheora SUBDIR += linux-c7-libv4l SUBDIR += linux-tsmuxer SUBDIR += linux_dvbwrapper-kmod SUBDIR += lives SUBDIR += livestreamer SUBDIR += lsdvd SUBDIR += lxdvdrip SUBDIR += m2tstoavi SUBDIR += m2vrequantiser SUBDIR += mediainfo SUBDIR += mencoder SUBDIR += mimms SUBDIR += minitube SUBDIR += mjpegtools SUBDIR += mjpg-streamer SUBDIR += mkclean SUBDIR += mkvalidator SUBDIR += mkvtoolnix SUBDIR += mkxvcd SUBDIR += mlt SUBDIR += mlt-qt5 SUBDIR += mmpython SUBDIR += mmsclient SUBDIR += mmsrip SUBDIR += motion SUBDIR += mp3cd SUBDIR += mp4v2 SUBDIR += mpc-qt SUBDIR += mpeg2codec SUBDIR += mpeg2play SUBDIR += mpeg_encode SUBDIR += mpeg_play SUBDIR += mpeg_stat SUBDIR += mpgtx SUBDIR += mplayer SUBDIR += mplayer-skins SUBDIR += mplex SUBDIR += mps-youtube SUBDIR += mpv SUBDIR += msdl SUBDIR += msopenh264 SUBDIR += mswebrtc SUBDIR += musikcube SUBDIR += mxflib SUBDIR += mythtv SUBDIR += mythtv-frontend SUBDIR += naludump SUBDIR += nordlicht SUBDIR += nostt SUBDIR += obs-qtwebkit SUBDIR += obs-studio SUBDIR += oggvideotools SUBDIR += ogmrip SUBDIR += ogmtools SUBDIR += olive SUBDIR += omxplayer SUBDIR += openh264 SUBDIR += openshot SUBDIR += oscam SUBDIR += p5-Audio-M4P SUBDIR += p5-FFmpeg-Command SUBDIR += p5-FLV-Info SUBDIR += p5-File-Format-RIFF SUBDIR += p5-GStreamer SUBDIR += p5-MP4-Info SUBDIR += p5-Net-UPnP SUBDIR += p5-Subtitles SUBDIR += p5-Umph-Prompt SUBDIR += pHash SUBDIR += peek SUBDIR += phonon SUBDIR += phonon-designerplugin SUBDIR += phonon-gstreamer SUBDIR += phonon-vlc SUBDIR += photofilmstrip SUBDIR += php-pHash SUBDIR += pitivi SUBDIR += plexmediaserver SUBDIR += plexmediaserver-plexpass SUBDIR += plexwatch SUBDIR += podcastdl SUBDIR += poe SUBDIR += ppm2fli SUBDIR += projectx SUBDIR += ptx-kmod SUBDIR += pwcbsd SUBDIR += pwcview SUBDIR += py-PySceneDetect SUBDIR += py-av SUBDIR += py-cec SUBDIR += py-enzyme SUBDIR += py-ffmpeg-python SUBDIR += py-flvlib SUBDIR += py-gstreamer SUBDIR += py-gstreamer1 SUBDIR += py-guessit SUBDIR += py-kaa-base SUBDIR += py-kaa-imlib2 SUBDIR += py-kaa-metadata SUBDIR += py-librtmp SUBDIR += py-mido SUBDIR += py-mlt SUBDIR += py-moviepy SUBDIR += py-openlp SUBDIR += py-periscope SUBDIR += py-pretty_midi SUBDIR += py-pymediainfo SUBDIR += py-qt5-multimedia SUBDIR += py-qt5-multimediawidgets SUBDIR += py-soco SUBDIR += py-subliminal SUBDIR += py-tvnamer SUBDIR += pymp SUBDIR += qmmp-plugin-pack-qt5 SUBDIR += qmmp-qt5 SUBDIR += qt-faststart SUBDIR += qt5-multimedia SUBDIR += quodlibet SUBDIR += quvi SUBDIR += quvi09 SUBDIR += rage SUBDIR += rav1e SUBDIR += recmpeg SUBDIR += recordmydesktop SUBDIR += replex SUBDIR += rox-videothumbnail SUBDIR += rtmpdump SUBDIR += rubygem-av SUBDIR += rubygem-clutter-gstreamer SUBDIR += rubygem-flvtool2 SUBDIR += rubygem-gstreamer SUBDIR += rubygem-paperclip-av-transcoder SUBDIR += rubygem-paperclip-av-transcoder-rails50 SUBDIR += rubygem-streamio-ffmpeg SUBDIR += sabbu SUBDIR += schroedinger SUBDIR += shotcut SUBDIR += simplescreenrecorder SUBDIR += smpeg SUBDIR += smpeg2 SUBDIR += smplayer SUBDIR += smplayer-skins SUBDIR += smplayer-themes SUBDIR += sms1xxx-kmod SUBDIR += smtube SUBDIR += snappy SUBDIR += spigot SUBDIR += spook SUBDIR += subsync SUBDIR += subtitlecomposer SUBDIR += subtitleoffsetmodifier SUBDIR += subtitleripper SUBDIR += subtools SUBDIR += svt-av1 SUBDIR += svt-hevc SUBDIR += svt-vp9 SUBDIR += swfdec-gnome SUBDIR += syncplay SUBDIR += szap-s2 SUBDIR += tautulli SUBDIR += tcmplex-panteltje SUBDIR += termplay SUBDIR += tivodecode SUBDIR += totem SUBDIR += totem-pl-parser SUBDIR += tovid SUBDIR += transcode SUBDIR += tstools SUBDIR += tvheadend SUBDIR += umph SUBDIR += ustreamer SUBDIR += v4l-utils SUBDIR += v4l_compat SUBDIR += vamps SUBDIR += vapoursynth SUBDIR += vapoursynth-l-smash-works SUBDIR += vapoursynth-vmaf SUBDIR += vcdgear SUBDIR += vcdimager SUBDIR += vcdpad SUBDIR += vdpauinfo SUBDIR += vdr SUBDIR += vdr-plugin-control SUBDIR += vdr-plugin-eepg SUBDIR += vdr-plugin-epgsearch SUBDIR += vdr-plugin-extrecmenu SUBDIR += vdr-plugin-femon SUBDIR += vdr-plugin-infosatepg SUBDIR += vdr-plugin-iptv SUBDIR += vdr-plugin-markad SUBDIR += vdr-plugin-osdpip SUBDIR += vdr-plugin-osdteletext SUBDIR += vdr-plugin-reelchannelscan SUBDIR += vdr-plugin-remote SUBDIR += vdr-plugin-skinenigmang SUBDIR += vdr-plugin-sleeptimer SUBDIR += vdr-plugin-streamdev SUBDIR += vdr-plugin-ttxtsubs SUBDIR += vdr-plugin-vdrmanager SUBDIR += vdr-plugin-vnsiserver SUBDIR += vdr-plugin-wirbelscan SUBDIR += vdr-plugin-xineliboutput SUBDIR += vdr-plugin-xvdr SUBDIR += vdr-plugins SUBDIR += vid.stab SUBDIR += vlc SUBDIR += vmaf SUBDIR += vtkmpeg2encode SUBDIR += w_scan SUBDIR += webcamd SUBDIR += webcamoid SUBDIR += webvfx-qt5 SUBDIR += wf-recorder SUBDIR += win32-codecs SUBDIR += winff SUBDIR += x264 SUBDIR += x265 SUBDIR += xanim SUBDIR += xawtv SUBDIR += xfce4-parole SUBDIR += xine SUBDIR += xporthdmv SUBDIR += xvid SUBDIR += yamdi SUBDIR += zart SUBDIR += zoneminder .include Index: head/multimedia/ffmpeg/Makefile =================================================================== --- head/multimedia/ffmpeg/Makefile (revision 517257) +++ head/multimedia/ffmpeg/Makefile (revision 517258) @@ -1,632 +1,637 @@ # Created by: Martin Matuska # $FreeBSD$ PORTNAME= ffmpeg PORTVERSION= 4.2.1 PORTREVISION= 14 PORTEPOCH= 1 CATEGORIES= multimedia audio net MASTER_SITES= https://ffmpeg.org/releases/ MAINTAINER= multimedia@FreeBSD.org COMMENT= Realtime audio/video encoder/converter and streaming server LICENSE= GPLv2+ LGPL21+ LICENSE_COMB= multi BUILD_DEPENDS= ${BUILD_DEPENDS_${ARCH}} BUILD_DEPENDS_aarch64= as:devel/binutils BUILD_DEPENDS_amd64= nasm:devel/nasm BUILD_DEPENDS_armv6= as:devel/binutils BUILD_DEPENDS_armv7= as:devel/binutils BUILD_DEPENDS_i386= nasm:devel/nasm BUILD_DEPENDS_powerpc64=as:devel/binutils BUILD_DEPENDS_powerpc= as:devel/binutils HAS_CONFIGURE= yes CONFIGURE_LOG= ffbuild/config.log USES= compiler:c11 cpe gmake localbase:ldflags perl5 \ pkgconfig shebangfix tar:xz USE_LDCONFIG= yes USE_PERL5= build SHEBANG_FILES= doc/texi2pod.pl NOPRECIOUSMAKEVARS= yes # ARCH PORTSCOUT= limit:^4\. # Option CHROMAPRINT disabled, it cannot work and people are baffled. OPTIONS_DEFINE= ALSA AMR_NB AMR_WB AOM ARIBB24 ASS BEIGNET BS2B CACA CDIO CELT CODEC2 \ DAV1D DAVS2 DC1394 DEBUG DOCS DRM FDK_AAC FLITE FONTCONFIG \ FREETYPE FREI0R FRIBIDI GME GSM ICONV ILBC JACK KLVANC KVAZAAR LADSPA \ LAME LENSFUN LIBBLURAY LIBRSVG2 LIBXML2 LV2 MODPLUG MYSOFA OPENAL OPENCL OPENCV OPENGL \ OPENH264 OPENJPEG OPENMPT OPTIMIZED_CFLAGS OPUS POCKETSPHINX PULSEAUDIO \ - RUBBERBAND RTCPU SDL SMB SNAPPY SNDIO SOXR SPEEX SRT SSH TENSORFLOW \ + RAV1E RUBBERBAND RTCPU SDL SMB SNAPPY SNDIO SOXR SPEEX SRT SSH TENSORFLOW \ TESSERACT THEORA TWOLAME V4L VAAPI VAPOURSYNTH VDPAU VIDSTAB VMAF VORBIS \ VO_AMRWBENC VPX WAVPACK WEBP X264 X265 XAVS2 XCB XVID \ XVIDEO ZIMG ZMQ ZVBI OPTIONS_DEFAULT= AOM DAV1D FONTCONFIG FREETYPE FREI0R GMP GNUTLS ICONV \ OPENCV OPTIMIZED_CFLAGS OPUS RTCPU THEORA V4L VAAPI VDPAU \ VORBIS VPX X264 X265 XCB XVID .if !exists(${.CURDIR:H:H}/multimedia/aribb24) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/100bfac6d6ec OPTIONS_EXCLUDE+= ARIBB24 .endif .if !exists(${.CURDIR:H:H}/multimedia/davs2) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/5985a1bf7233 OPTIONS_EXCLUDE+= DAVS2 .endif .if !exists(${.CURDIR:H:H}/multimedia/xavs2) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/85a921f4618 OPTIONS_EXCLUDE+= XAVS2 .endif .if !exists(${.CURDIR:H:H}/multimedia/klvanc) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/8732dfa9954 OPTIONS_EXCLUDE+= KLVANC .endif .if !exists(${.CURDIR:H:H}/net/srt) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/a2fc8dbae853 OPTIONS_EXCLUDE+= SRT .endif .if !exists(${.CURDIR:H:H}/science/tensorflow) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/d8c0bbb0aa4 OPTIONS_EXCLUDE+= TENSORFLOW .endif OPTIONS_RADIO= RTMP SSL OPTIONS_RADIO_RTMP= GCRYPT GMP LIBRTMP OPTIONS_RADIO_SSL= GNUTLS MBEDTLS OPENSSL OPTIONS_GROUP= LICENSE OPTIONS_GROUP_LICENSE= GPL3 NONFREE OPTIONS_DEFINE_amd64= BEIGNET MMX SSE SVTAV1 SVTHEVC SVTVP9 OPTIONS_DEFINE_armv6= VFP NEON OPTIONS_DEFINE_i386= BEIGNET MMX SSE OPTIONS_DEFAULT_amd64= MMX SSE OPTIONS_DEFAULT_i386= MMX SSE ASS_DESC= Subtitles rendering via libass AOM_DESC= AV1 video encoding/decoding via libaom ARIBB24_DESC= ARIB text and caption decoding via libaribb24 BEIGNET_DESC= DRM/VAAPI to OpenCL mapping for i965 + Beignet BS2B_DESC= Bauer Stereophonic-to-Binaural filter CHROMAPRINT_DESC= Audio fingerprinting with chromaprint CODEC2_DESC= Codec 2 audio encoding/decoding via libcodec2 DAV1D_DESC= AV1 video decoding via libdav1d DAVS2_DESC= AVS2 decoding via libdavs2 DC1394_DESC= IIDC-1394 grabbing using libdc1394 DRM_DESC= KMS grabbing using libdrm FDK_AAC_DESC= AAC audio encoding via Fraunhofer FDK FLITE_DESC= Voice synthesis support via libflite GME_DESC= Game Music Emu demuxer GPL3_DESC= Allow (L)GPL version 3 code(cs) ILBC_DESC= Internet Low Bit Rate codec KLVANC_DESC= Kernel Labs VANC processing KVAZAAR_DESC= H.265 video codec support via Kvazaar LICENSE_DESC= Licensing options LV2_DESC= LV2 audio filtering MYSOFA_DESC= SOFAlizer binaural filter NEON_DESC= Media Processing Engine instructions NONFREE_DESC= Allow use of nonfree code OPENMPT_DESC= Decoding tracked files via libopenmpt OPENH264_DESC= H.264 video codec support via OpenH264 POCKETSPHINX_DESC= Automatic Speech Recognition via PocketSphinx +RAV1E_DESC= AV1 encoding via librav1e RUBBERBAND_DESC=Time-stretching and pitch-shifting with librubberband RTCPU_DESC= Detect CPU capabilities at runtime RTMP_DESC= RTMP(T)E protocol support SRT_DESC= Haivision SRT protocol via libsrt SVTAV1_DESC= AV1 encoding via SVT-AV1 SVTHEVC_DESC= HEVC encoding via SVT-HEVC SVTVP9_DESC= VP9 encoding via SVT-VP9 LIBRTMP_DESC= ${RTMP_DESC} via librtmp TENSORFLOW_DESC=TensorFlow as a DNN module backend for DNN based filters like sr TESSERACT_DESC= Optical Character Recognition via Tesseract VAPOURSYNTH_DESC= VapourSynth demuxer VFP_DESC= Vector Floating Point instructions VIDSTAB_DESC= Video stabilization filter VMAF_DESC= VMAF filter via libvmaf XAVS2_DESC= AVS2 encoding via libxavs2 XCB_DESC= X11 grabbing using XCB ZIMG_DESC= "z" library video scaling filter ZMQ_DESC= Message passing via libzmq${ZMQ_VERSION} ZVBI_DESC= Teletext support via libzvbi OPTIONS_SUB= yes # alsa ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib ALSA_CONFIGURE_ENABLE= alsa # Opencore AMR NB AMR_NB_LIB_DEPENDS= libopencore-amrnb.so:audio/opencore-amr AMR_NB_CONFIGURE_ENABLE= libopencore-amrnb AMR_NB_IMPLIES= GPL3 # Opencore AMR WB AMR_WB_LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr AMR_WB_CONFIGURE_ENABLE= libopencore-amrwb AMR_WB_IMPLIES= GPL3 # aom AOM_LIB_DEPENDS= libaom.so:multimedia/aom AOM_CONFIGURE_ENABLE= libaom # arib ARIBB24_LIB_DEPENDS= libaribb24.so:multimedia/aribb24 ARIBB24_CONFIGURE_ENABLE= libaribb24 # ass ASS_LIB_DEPENDS= libass.so:multimedia/libass ASS_CONFIGURE_ENABLE= libass # beignet BEIGNET_BUILD_DEPENDS= ${LOCALBASE}/include/CL/cl_intel.h:lang/beignet BEIGNET_IMPLIES= DRM OPENCL VAAPI # bs2b BS2B_LIB_DEPENDS= libbs2b.so:audio/libbs2b BS2B_CONFIGURE_ENABLE= libbs2b # caca CACA_LIB_DEPENDS= libcaca.so:graphics/libcaca CACA_CONFIGURE_ENABLE= libcaca # cdio CDIO_LIB_DEPENDS= libcdio_paranoia.so:sysutils/libcdio-paranoia CDIO_CONFIGURE_ENABLE= libcdio # celt CELT_LIB_DEPENDS= libcelt0.so:audio/celt CELT_CONFIGURE_ENABLE= libcelt # chromaprint CHROMAPRINT_BROKEN= Dependency loop CHROMAPRINT_LIB_DEPENDS= libchromaprint.so:audio/chromaprint CHROMAPRINT_CONFIGURE_ENABLE= chromaprint # codec2 CODEC2_LIB_DEPENDS= libcodec2.so:audio/codec2 CODEC2_CONFIGURE_ENABLE= libcodec2 # dav1d DAV1D_LIB_DEPENDS= libdav1d.so:multimedia/dav1d DAV1D_CONFIGURE_ENABLE= libdav1d # davs2 DAVS2_LIB_DEPENDS= libdavs2.so:multimedia/davs2 DAVS2_CONFIGURE_ENABLE= libdavs2 # dc1394 DC1394_LIB_DEPENDS= libdc1394.so:multimedia/libdc1394 DC1394_CONFIGURE_ENABLE= libdc1394 # debugging DEBUG_CONFIGURE_ON= --disable-stripping DEBUG_CONFIGURE_OFF= --disable-debug # docs DOCS_BUILD_DEPENDS= texi2html:textproc/texi2html DOCS_CONFIGURE_ENABLE= htmlpages # drm DRM_LIB_DEPENDS= libdrm.so:graphics/libdrm DRM_CONFIGURE_ENABLE= libdrm # fdk_aac FDK_AAC_LIB_DEPENDS= libfdk-aac.so:audio/fdk-aac FDK_AAC_CONFIGURE_ENABLE= libfdk-aac FDK_AAC_IMPLIES= NONFREE # flite FLITE_LIB_DEPENDS= libflite.so:audio/flite FLITE_CONFIGURE_ENABLE= libflite .if exists(/usr/bin/ld.lld) && (${/usr/bin/ld:L:tA} != /usr/bin/ld.lld) FLITE_LDFLAGS= -fuse-ld=lld .endif # fontconfig FONTCONFIG_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig FONTCONFIG_CONFIGURE_ENABLE= fontconfig # freetype FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2 FREETYPE_CONFIGURE_ENABLE= libfreetype # frei0r FREI0R_BUILD_DEPENDS= ${LOCALBASE}/include/frei0r.h:graphics/frei0r FREI0R_CONFIGURE_ENABLE= frei0r # fribidi FRIBIDI_LIB_DEPENDS= libfribidi.so:converters/fribidi FRIBIDI_CONFIGURE_ENABLE= libfribidi # gcrypt GCRYPT_LIB_DEPENDS= libgcrypt.so:security/libgcrypt GCRYPT_CONFIGURE_ENABLE= gcrypt # gnutls GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls GNUTLS_CONFIGURE_ENABLE= gnutls # gme GME_LIB_DEPENDS= libgme.so:audio/libgme GME_CONFIGURE_ENABLE= libgme # gmp GMP_LIB_DEPENDS= libgmp.so:math/gmp GMP_CONFIGURE_ENABLE= gmp GMP_IMPLIES= GPL3 # gsm GSM_LIB_DEPENDS= libgsm.so:audio/gsm GSM_CONFIGURE_ENABLE= libgsm # iconv ICONV_USES= iconv ICONV_CONFIGURE_ENABLE= iconv # ilbc ILBC_LIB_DEPENDS= libilbc.so:net/libilbc ILBC_CONFIGURE_ENABLE= libilbc # jack JACK_LIB_DEPENDS= libjack.so:audio/jack JACK_CONFIGURE_ENABLE= libjack # klvanc KLVANC_LIB_DEPENDS= libklvanc.so:multimedia/libklvanc KLVANC_CONFIGURE_ENABLE= libklvanc # kvazaar KVAZAAR_LIB_DEPENDS= libkvazaar.so:multimedia/kvazaar KVAZAAR_CONFIGURE_ENABLE= libkvazaar # ladspa LADSPA_BUILD_DEPENDS= ${LOCALBASE}/include/ladspa.h:audio/ladspa LADSPA_RUN_DEPENDS= ${LOCALBASE}/lib/ladspa/amp.so:audio/ladspa LADSPA_CONFIGURE_ENABLE= ladspa # lame LAME_LIB_DEPENDS= libmp3lame.so:audio/lame LAME_CONFIGURE_ENABLE= libmp3lame # lensfun LENSFUN_LIB_DEPENDS= liblensfun.so:graphics/lensfun LENSFUN_CONFIGURE_ENABLE= liblensfun # libbluray LIBBLURAY_LIB_DEPENDS= libbluray.so:multimedia/libbluray LIBBLURAY_CONFIGURE_ENABLE= libbluray # librsvg LIBRSVG2_USES= gnome LIBRSVG2_USE= GNOME=librsvg2 LIBRSVG2_CONFIGURE_ENABLE= librsvg # libxml LIBXML2_LIB_DEPENDS= libxml2.so:textproc/libxml2 LIBXML2_CONFIGURE_ENABLE= libxml2 # lv2 LV2_BUILD_DEPENDS= lv2>0:audio/lv2 LV2_LIB_DEPENDS= liblilv-0.so:audio/lilv LV2_CONFIGURE_ENABLE= lv2 # libv4l V4L_BUILD_DEPENDS= v4l_compat>0:multimedia/v4l_compat V4L_LIB_DEPENDS= libv4l2.so:multimedia/libv4l V4L_CONFIGURE_ENABLE= libv4l2 V4L_CONFIGURE_OFF= --disable-indev=v4l2 \ --disable-outdev=v4l2 # mbedtls MBEDTLS_LIB_DEPENDS= libmbedtls.so:security/mbedtls MBEDTLS_CONFIGURE_ENABLE= mbedtls # mmx support MMX_CONFIGURE_ENABLE= mmx # modplug MODPLUG_LIB_DEPENDS= libmodplug.so:audio/libmodplug MODPLUG_CONFIGURE_ENABLE= libmodplug # mysofa MYSOFA_LIB_DEPENDS= libmysofa.so:audio/libmysofa MYSOFA_CONFIGURE_ENABLE= libmysofa # OpenAL OPENAL_LIB_DEPENDS= libopenal.so:audio/openal-soft OPENAL_CONFIGURE_ENABLE= openal # opencl OPENCL_BUILD_DEPENDS= ${LOCALBASE}/include/CL/opencl.h:devel/opencl OPENCL_LIB_DEPENDS= libOpenCL.so:devel/ocl-icd OPENCL_CONFIGURE_ENABLE= opencl # opencv OPENCV_LIB_DEPENDS= libopencv_imgproc.so:graphics/opencv-core OPENCV_CONFIGURE_ENABLE= libopencv # opengl OPENGL_USES= gl OPENGL_USE= GL=gl OPENGL_CONFIGURE_ENABLE= opengl # openh264 OPENH264_LIB_DEPENDS= libopenh264.so:multimedia/openh264 OPENH264_CONFIGURE_ENABLE= libopenh264 # openjpeg OPENJPEG_LIB_DEPENDS= libopenjp2.so:graphics/openjpeg OPENJPEG_CONFIGURE_ENABLE= libopenjpeg # openmpt OPENMPT_LIB_DEPENDS= libopenmpt.so:audio/libopenmpt OPENMPT_CONFIGURE_ENABLE= libopenmpt # openssl/libtls OPENSSL_USES= ssl OPENSSL_CONFIGURE_ENABLE= ${"${SSL_DEFAULT:Mlibressl*}"!="":?libtls:openssl} OPENSSL_IMPLIES= NONFREE # optimizations OPTIMIZED_CFLAGS_CONFIGURE_ENABLE= optimizations # opus OPUS_LIB_DEPENDS= libopus.so:audio/opus OPUS_CONFIGURE_ENABLE= libopus # pocketsphinx POCKETSPHINX_LIB_DEPENDS= libpocketsphinx.so:audio/pocketsphinx POCKETSPHINX_CONFIGURE_ENABLE= pocketsphinx POCKETSPHINX_BROKEN= pocketsphinx < 5prealpha is not supported # pulseaudio PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio PULSEAUDIO_CONFIGURE_ENABLE= libpulse + +# rav1e +RAV1E_LIB_DEPENDS= librav1e.so:multimedia/librav1e +RAV1E_CONFIGURE_ENABLE= librav1e # rubberband RUBBERBAND_LIB_DEPENDS= librubberband.so:audio/rubberband RUBBERBAND_CONFIGURE_ENABLE= librubberband # rtcpu RTCPU_CONFIGURE_ENABLE= runtime-cpudetect # rtmp LIBRTMP_LIB_DEPENDS= librtmp.so:multimedia/librtmp LIBRTMP_CONFIGURE_ENABLE= librtmp # sdl SDL_USE= SDL=sdl2 SDL_CONFIGURE_ENABLE= sdl2 # smbclient SMB_USES= samba:lib SMB_CONFIGURE_ENABLE= libsmbclient SMB_IMPLIES= GPL3 # snappy SNAPPY_LIB_DEPENDS= libsnappy.so:archivers/snappy SNAPPY_CONFIGURE_ENABLE= libsnappy # sndio SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio SNDIO_CONFIGURE_ENABLE= sndio # soxr SOXR_LIB_DEPENDS= libsoxr.so:audio/libsoxr SOXR_CONFIGURE_ENABLE= libsoxr # speex SPEEX_LIB_DEPENDS= libspeex.so:audio/speex SPEEX_CONFIGURE_ENABLE= libspeex # sse support SSE_CONFIGURE_ENABLE= sse SSE_IMPLIES= MMX # ssh SSH_LIB_DEPENDS= libssh.so:security/libssh SSH_CONFIGURE_ENABLE= libssh # srt SRT_LIB_DEPENDS= libsrt.so:net/srt SRT_CONFIGURE_ENABLE= libsrt # svt-av1 SVTAV1_LIB_DEPENDS= libSvtAv1Enc.so:multimedia/svt-av1 SVTAV1_CONFIGURE_ON= --enable-libsvtav1 SVTAV1_PATCH_SITES= https://github.com/OpenVisualCloud/SVT-AV1/raw/v0.7.0/ffmpeg_plugin/:svtav1 SVTAV1_PATCHFILES= 0001-Add-ability-for-ffmpeg-to-run-svt-av1.patch:-p1:svtav1 .if make(makesum) .MAKEFLAGS: WITH+=SVTAV1 .else SVTAV1_PREVENTS= SVTHEVC SVTVP9 SVTAV1_PREVENTS_MSG= Only one SVT vendor patch can be applied at the same time .endif # svt-hevc SVTHEVC_LIB_DEPENDS= libSvtHevcEnc.so:multimedia/svt-hevc SVTHEVC_CONFIGURE_ON= --enable-libsvthevc SVTHEVC_PATCH_SITES= https://github.com/Intel/SVT-HEVC/raw/v1.4.1/ffmpeg_plugin/:svthevc SVTHEVC_PATCHFILES= 0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch:-p1:svthevc \ 0002-doc-Add-libsvt_hevc-encoder-docs.patch:-p1:svthevc .if make(makesum) .MAKEFLAGS: WITH+=SVTHEVC .else SVTHEVC_PREVENTS= SVTAV1 SVTVP9 SVTHEVC_PREVENTS_MSG= ${SVTAV1_PREVENTS_MSG} .endif # svt-vp9 SVTVP9_LIB_DEPENDS= libSvtVp9Enc.so:multimedia/svt-vp9 SVTVP9_CONFIGURE_ON= --enable-libsvtvp9 SVTVP9_PATCH_SITES= https://github.com/OpenVisualCloud/SVT-VP9/raw/v0.1.0/ffmpeg_plugin/:svtvp9 SVTVP9_PATCHFILES= 0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch:-p1:svtvp9 .if make(makesum) .MAKEFLAGS: WITH+=SVTVP9 .else SVTVP9_PREVENTS= SVTAV1 SVTHEVC SVTVP9_PREVENTS_MSG= ${SVTAV1_PREVENTS_MSG} .endif # tensorflow TENSORFLOW_LIB_DEPENDS= libtensorflow.so:science/tensorflow TENSORFLOW_CONFIGURE_ENABLE= libtensorflow # tesseract TESSERACT_LIB_DEPENDS= libtesseract.so:graphics/tesseract TESSERACT_CONFIGURE_ENABLE= libtesseract # theora THEORA_LIB_DEPENDS= libtheora.so:multimedia/libtheora THEORA_CONFIGURE_ENABLE= libtheora # twolame TWOLAME_LIB_DEPENDS= libtwolame.so:audio/twolame TWOLAME_CONFIGURE_ENABLE= libtwolame # vaapi VAAPI_LIB_DEPENDS= libva.so:multimedia/libva VAAPI_CONFIGURE_ENABLE= vaapi # vapoursynth VAPOURSYNTH_LIB_DEPENDS= libvapoursynth-script.so:multimedia/vapoursynth VAPOURSYNTH_CONFIGURE_ENABLE= vapoursynth # vdpau VDPAU_USES= xorg VDPAU_USE= XORG=x11 VDPAU_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau VDPAU_CONFIGURE_ENABLE= vdpau # vmaf VMAF_BUILD_DEPENDS= ${LOCALBASE}/lib/libvmaf.a:multimedia/vmaf VMAF_CONFIGURE_ENABLE= libvmaf # armv6/armv7 VFP_CONFIGURE_ENABLE= vfp NEON_CONFIGURE_ENABLE= neon .if ! ${CFLAGS:M-march*} NEON_CONFIGURE_ON= --cpu=armv7-a .endif # vo-amrwbenc VO_AMRWBENC_LIB_DEPENDS= libvo-amrwbenc.so:audio/vo-amrwbenc VO_AMRWBENC_CONFIGURE_ENABLE= libvo-amrwbenc VO_AMRWBENC_IMPLIES= GPL3 # vid.stab VIDSTAB_LIB_DEPENDS= libvidstab.so:multimedia/vid.stab VIDSTAB_CONFIGURE_ENABLE= libvidstab # vorbis VORBIS_LIB_DEPENDS= libvorbisenc.so:audio/libvorbis VORBIS_CONFIGURE_ENABLE= libvorbis # vp8 VPX_LIB_DEPENDS= libvpx.so:multimedia/libvpx VPX_CONFIGURE_ENABLE= libvpx # wavpack WAVPACK_LIB_DEPENDS= libwavpack.so:audio/wavpack WAVPACK_CONFIGURE_ENABLE= libwavpack # webp WEBP_LIB_DEPENDS= libwebp.so:graphics/webp WEBP_CONFIGURE_ENABLE= libwebp # x264 X264_LIB_DEPENDS= libx264.so:multimedia/libx264 X264_CONFIGURE_ENABLE= libx264 # x265 X265_LIB_DEPENDS= libx265.so:multimedia/x265 X265_CONFIGURE_ENABLE= libx265 # xavs2 XAVS2_LIB_DEPENDS= libxavs2.so:multimedia/xavs2 XAVS2_CONFIGURE_ENABLE= libxavs2 # xcb XCB_USES= xorg XCB_USE= XORG=xcb XCB_CONFIGURE_ENABLE= libxcb # xvid XVID_LIB_DEPENDS= libxvidcore.so:multimedia/xvid XVID_CONFIGURE_ENABLE= libxvid # xv XVIDEO_USES= xorg XVIDEO_USE= XORG=x11,xext,xv XVIDEO_CONFIGURE_OFF= --disable-outdev=xv # zimg ZIMG_LIB_DEPENDS= libzimg.so:graphics/sekrit-twc-zimg ZIMG_CONFIGURE_ENABLE= libzimg # zmq ZMQ_LIB_DEPENDS= libzmq.so:net/libzmq${ZMQ_VERSION} ZMQ_CONFIGURE_ENABLE= libzmq ZMQ_VERSION?= 4 # zvbi ZVBI_LIB_DEPENDS= libzvbi.so:devel/libzvbi ZVBI_CONFIGURE_ENABLE= libzvbi # License knobs GPL3_CONFIGURE_ENABLE= version3 GPL3_VARS= LICENSE="GPLv3+ LGPL3+" LICENSE_FILE_GPLv3+ = ${WRKSRC}/COPYING.GPLv3 LICENSE_FILE_LGPL3+ = ${WRKSRC}/COPYING.LGPLv3 NONFREE_CONFIGURE_ENABLE=nonfree NONFREE_VARS= RESTRICTED="enabling OPENSSL or FDK_AAC restricts redistribution" INSTALL_TARGET= install-progs install-doc install-data \ install-libs install-headers install-examples DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX} DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${PKGNAMESUFFIX} MAKE_ENV+= V=1 LDFLAGS_aarch64=-Wl,-z,notext LDFLAGS_armv6= -Wl,-z,notext LDFLAGS_armv7= -Wl,-z,notext LDFLAGS_i386= -Wl,-z,notext CONFIGURE_ARGS+=--prefix="${PREFIX}" \ --mandir="${PREFIX}/man" \ --datadir="${DATADIR}" \ --pkgconfigdir="${PREFIX}/libdata/pkgconfig" \ --enable-shared \ --enable-pic \ --enable-gpl \ --enable-avresample \ --cc="${CC}" DOC_FILES= Changelog CREDITS INSTALL.md LICENSE.md MAINTAINERS \ README.md RELEASE_NOTES # under doc subdirectory DOC_DOCFILES= APIchanges *.txt PORTDOCS= * post-patch: # {C,LD}FLAGS safeness @${REINPLACE_CMD} -E \ -e 's|require_pkg_config opencv|require_pkg_config opencv-core|g' \ ${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT} post-install: (cd ${WRKSRC} && ${COPYTREE_SHARE} \ "${DOC_FILES}" ${STAGEDIR}${DOCSDIR}) (cd ${WRKSRC}/doc && ${COPYTREE_SHARE} \ "${DOC_DOCFILES}" ${STAGEDIR}${DOCSDIR}) .include Index: head/multimedia/ffmpeg/files/patch-rav1e =================================================================== --- head/multimedia/ffmpeg/files/patch-rav1e (nonexistent) +++ head/multimedia/ffmpeg/files/patch-rav1e (revision 517258) @@ -0,0 +1,722 @@ +https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/d8bf24459b69 +https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/3a84081cbd98 + +--- configure.orig 2019-11-11 11:47:47 UTC ++++ configure +@@ -254,6 +254,7 @@ External library support: + --enable-libopenmpt enable decoding tracked files via libopenmpt [no] + --enable-libopus enable Opus de/encoding via libopus [no] + --enable-libpulse enable Pulseaudio input via libpulse [no] ++ --enable-librav1e enable AV1 encoding via rav1e [no] + --enable-librsvg enable SVG rasterization via librsvg [no] + --enable-librubberband enable rubberband needed for rubberband filter [no] + --enable-librtmp enable RTMP[E] support via librtmp [no] +@@ -1785,6 +1786,7 @@ EXTERNAL_LIBRARY_LIST=" + libopenmpt + libopus + libpulse ++ librav1e + librsvg + librtmp + libshine +@@ -3187,6 +3189,8 @@ libopenmpt_demuxer_deps="libopenmpt" + libopus_decoder_deps="libopus" + libopus_encoder_deps="libopus" + libopus_encoder_select="audio_frame_queue" ++librav1e_encoder_deps="librav1e" ++librav1e_encoder_select="extract_extradata_bsf" + librsvg_decoder_deps="librsvg" + libshine_encoder_deps="libshine" + libshine_encoder_select="audio_frame_queue" +@@ -6255,6 +6259,7 @@ enabled libopus && { + } + } + enabled libpulse && require_pkg_config libpulse libpulse pulse/pulseaudio.h pa_context_new ++enabled librav1e && require_pkg_config librav1e "rav1e >= 0.1.0" rav1e.h rav1e_context_new + enabled librsvg && require_pkg_config librsvg librsvg-2.0 librsvg-2.0/librsvg/rsvg.h rsvg_handle_render_cairo + enabled librtmp && require_pkg_config librtmp librtmp librtmp/rtmp.h RTMP_Socket + enabled librubberband && require_pkg_config librubberband "rubberband >= 1.8.1" rubberband/rubberband-c.h rubberband_new -lstdc++ && append librubberband_extralibs "-lstdc++" +--- doc/encoders.texi.orig 2019-08-05 20:52:21 UTC ++++ doc/encoders.texi +@@ -1378,6 +1378,49 @@ makes it possible to store non-rgb pix_fmts. + + @end table + ++@section librav1e ++ ++rav1e AV1 encoder wrapper. ++ ++Requires the presence of the rav1e headers and library during configuration. ++You need to explicitly configure the build with @code{--enable-librav1e}. ++ ++@subsection Options ++ ++@table @option ++@item qmax ++Sets the maximum quantizer to use when using bitrate mode. ++ ++@item qmin ++Sets the minimum quantizer to use when using bitrate mode. ++ ++@item qp ++Uses quantizer mode to encode at the given quantizer. ++ ++@item speed ++Selects the speed preset (0-10) to encode with. ++ ++@item tiles ++Selects how many tiles to encode with. ++ ++@item tile-rows ++Selects how many rows of tiles to encode with. ++ ++@item tile-columns ++Selects how many columns of tiles to encode with. ++ ++@item rav1e-params ++Set rav1e options using a list of @var{key}=@var{value} pairs separated ++by ":". See @command{rav1e --help} for a list of options. ++ ++For example to specify librav1e encoding options with @option{-rav1e-params}: ++ ++@example ++ffmpeg -i input -c:v librav1e -b:v 500K -rav1e-params speed=5:low_latency=true output.mp4 ++@end example ++ ++@end table ++ + @section libaom-av1 + + libaom AV1 encoder wrapper. +--- doc/general.texi.orig 2019-08-05 20:52:21 UTC ++++ doc/general.texi +@@ -243,6 +243,13 @@ FFmpeg can use the OpenJPEG libraries for decoding/enc + instructions. To enable using OpenJPEG in FFmpeg, pass @code{--enable-libopenjpeg} to + @file{./configure}. + ++@section rav1e ++ ++FFmpeg can make use of rav1e (Rust AV1 Encoder) via its C bindings to encode videos. ++Go to @url{https://github.com/xiph/rav1e/} and follow the instructions to build ++the C library. To enable using rav1e in FFmpeg, pass @code{--enable-librav1e} ++to @file{./configure}. ++ + @section TwoLAME + + FFmpeg can make use of the TwoLAME library for MP2 encoding. +--- libavcodec/Makefile.orig 2019-11-11 11:47:47 UTC ++++ libavcodec/Makefile +@@ -988,6 +988,7 @@ OBJS-$(CONFIG_LIBOPUS_DECODER) += libopusde + vorbis_data.o + OBJS-$(CONFIG_LIBOPUS_ENCODER) += libopusenc.o libopus.o \ + vorbis_data.o ++OBJS-$(CONFIG_LIBRAV1E_ENCODER) += librav1e.o + OBJS-$(CONFIG_LIBSHINE_ENCODER) += libshine.o + OBJS-$(CONFIG_LIBSPEEX_DECODER) += libspeexdec.o + OBJS-$(CONFIG_LIBSPEEX_ENCODER) += libspeexenc.o +--- libavcodec/allcodecs.c.orig 2019-11-11 11:47:47 UTC ++++ libavcodec/allcodecs.c +@@ -703,6 +703,7 @@ extern AVCodec ff_libopenjpeg_encoder; + extern AVCodec ff_libopenjpeg_decoder; + extern AVCodec ff_libopus_encoder; + extern AVCodec ff_libopus_decoder; ++extern AVCodec ff_librav1e_encoder; + extern AVCodec ff_librsvg_decoder; + extern AVCodec ff_libshine_encoder; + extern AVCodec ff_libspeex_encoder; +--- libavcodec/librav1e.c.orig 2019-11-11 11:47:47 UTC ++++ libavcodec/librav1e.c +@@ -0,0 +1,593 @@ ++/* ++ * librav1e encoder ++ * ++ * Copyright (c) 2019 Derek Buitenhuis ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg 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 ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#include ++ ++#include "libavutil/internal.h" ++#include "libavutil/avassert.h" ++#include "libavutil/base64.h" ++#include "libavutil/common.h" ++#include "libavutil/mathematics.h" ++#include "libavutil/opt.h" ++#include "libavutil/pixdesc.h" ++#include "avcodec.h" ++#include "internal.h" ++ ++typedef struct librav1eContext { ++ const AVClass *class; ++ ++ RaContext *ctx; ++ AVBSFContext *bsf; ++ ++ uint8_t *pass_data; ++ size_t pass_pos; ++ int pass_size; ++ ++ char *rav1e_opts; ++ int quantizer; ++ int speed; ++ int tiles; ++ int tile_rows; ++ int tile_cols; ++} librav1eContext; ++ ++static inline RaPixelRange range_map(enum AVPixelFormat pix_fmt, enum AVColorRange range) ++{ ++ switch (pix_fmt) { ++ case AV_PIX_FMT_YUVJ420P: ++ case AV_PIX_FMT_YUVJ422P: ++ case AV_PIX_FMT_YUVJ444P: ++ return RA_PIXEL_RANGE_FULL; ++ } ++ ++ switch (range) { ++ case AVCOL_RANGE_JPEG: ++ return RA_PIXEL_RANGE_FULL; ++ case AVCOL_RANGE_MPEG: ++ default: ++ return RA_PIXEL_RANGE_LIMITED; ++ } ++} ++ ++static inline RaChromaSampling pix_fmt_map(enum AVPixelFormat pix_fmt) ++{ ++ switch (pix_fmt) { ++ case AV_PIX_FMT_YUV420P: ++ case AV_PIX_FMT_YUVJ420P: ++ case AV_PIX_FMT_YUV420P10: ++ case AV_PIX_FMT_YUV420P12: ++ return RA_CHROMA_SAMPLING_CS420; ++ case AV_PIX_FMT_YUV422P: ++ case AV_PIX_FMT_YUVJ422P: ++ case AV_PIX_FMT_YUV422P10: ++ case AV_PIX_FMT_YUV422P12: ++ return RA_CHROMA_SAMPLING_CS422; ++ case AV_PIX_FMT_YUV444P: ++ case AV_PIX_FMT_YUVJ444P: ++ case AV_PIX_FMT_YUV444P10: ++ case AV_PIX_FMT_YUV444P12: ++ return RA_CHROMA_SAMPLING_CS444; ++ default: ++ av_assert0(0); ++ } ++} ++ ++static inline RaChromaSamplePosition chroma_loc_map(enum AVChromaLocation chroma_loc) ++{ ++ switch (chroma_loc) { ++ case AVCHROMA_LOC_LEFT: ++ return RA_CHROMA_SAMPLE_POSITION_VERTICAL; ++ case AVCHROMA_LOC_TOPLEFT: ++ return RA_CHROMA_SAMPLE_POSITION_COLOCATED; ++ default: ++ return RA_CHROMA_SAMPLE_POSITION_UNKNOWN; ++ } ++} ++ ++static int get_stats(AVCodecContext *avctx, int eos) ++{ ++ librav1eContext *ctx = avctx->priv_data; ++ RaData* buf = rav1e_twopass_out(ctx->ctx); ++ if (!buf) ++ return 0; ++ ++ if (!eos) { ++ uint8_t *tmp = av_fast_realloc(ctx->pass_data, &ctx->pass_size, ++ ctx->pass_pos + buf->len); ++ if (!tmp) { ++ rav1e_data_unref(buf); ++ return AVERROR(ENOMEM); ++ } ++ ++ ctx->pass_data = tmp; ++ memcpy(ctx->pass_data + ctx->pass_pos, buf->data, buf->len); ++ ctx->pass_pos += buf->len; ++ } else { ++ size_t b64_size = AV_BASE64_SIZE(ctx->pass_pos); ++ ++ memcpy(ctx->pass_data, buf->data, buf->len); ++ ++ avctx->stats_out = av_malloc(b64_size); ++ if (!avctx->stats_out) { ++ rav1e_data_unref(buf); ++ return AVERROR(ENOMEM); ++ } ++ ++ av_base64_encode(avctx->stats_out, b64_size, ctx->pass_data, ctx->pass_pos); ++ ++ av_freep(&ctx->pass_data); ++ } ++ ++ rav1e_data_unref(buf); ++ ++ return 0; ++} ++ ++static int set_stats(AVCodecContext *avctx) ++{ ++ librav1eContext *ctx = avctx->priv_data; ++ int ret = 1; ++ ++ while (ret > 0 && ctx->pass_size - ctx->pass_pos > 0) { ++ ret = rav1e_twopass_in(ctx->ctx, ctx->pass_data + ctx->pass_pos, ctx->pass_size); ++ if (ret < 0) ++ return AVERROR_EXTERNAL; ++ ctx->pass_pos += ret; ++ } ++ ++ return 0; ++} ++ ++static av_cold int librav1e_encode_close(AVCodecContext *avctx) ++{ ++ librav1eContext *ctx = avctx->priv_data; ++ ++ if (ctx->ctx) { ++ rav1e_context_unref(ctx->ctx); ++ ctx->ctx = NULL; ++ } ++ ++ av_bsf_free(&ctx->bsf); ++ av_freep(&ctx->pass_data); ++ ++ return 0; ++} ++ ++static av_cold int librav1e_encode_init(AVCodecContext *avctx) ++{ ++ librav1eContext *ctx = avctx->priv_data; ++ const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); ++ RaConfig *cfg = NULL; ++ int rret; ++ int ret = 0; ++ ++ cfg = rav1e_config_default(); ++ if (!cfg) { ++ av_log(avctx, AV_LOG_ERROR, "Could not allocate rav1e config.\n"); ++ return AVERROR_EXTERNAL; ++ } ++ ++ rav1e_config_set_time_base(cfg, (RaRational) { ++ avctx->time_base.num * avctx->ticks_per_frame, ++ avctx->time_base.den ++ }); ++ ++ if (avctx->flags & AV_CODEC_FLAG_PASS2) { ++ if (!avctx->stats_in) { ++ av_log(avctx, AV_LOG_ERROR, "No stats file provided for second pass.\n"); ++ ret = AVERROR(EINVAL); ++ goto end; ++ } ++ ++ ctx->pass_size = (strlen(avctx->stats_in) * 3) / 4; ++ ctx->pass_data = av_malloc(ctx->pass_size); ++ if (!ctx->pass_data) { ++ av_log(avctx, AV_LOG_ERROR, "Could not allocate stats buffer.\n"); ++ ret = AVERROR(ENOMEM); ++ goto end; ++ } ++ ++ ctx->pass_size = av_base64_decode(ctx->pass_data, avctx->stats_in, ctx->pass_size); ++ if (ctx->pass_size < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Invalid pass file.\n"); ++ ret = AVERROR(EINVAL); ++ goto end; ++ } ++ } ++ ++ if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) { ++ const AVBitStreamFilter *filter = av_bsf_get_by_name("extract_extradata"); ++ int bret; ++ ++ if (!filter) { ++ av_log(avctx, AV_LOG_ERROR, "extract_extradata bitstream filter " ++ "not found. This is a bug, please report it.\n"); ++ ret = AVERROR_BUG; ++ goto end; ++ } ++ ++ bret = av_bsf_alloc(filter, &ctx->bsf); ++ if (bret < 0) { ++ ret = bret; ++ goto end; ++ } ++ ++ bret = avcodec_parameters_from_context(ctx->bsf->par_in, avctx); ++ if (bret < 0) { ++ ret = bret; ++ goto end; ++ } ++ ++ bret = av_bsf_init(ctx->bsf); ++ if (bret < 0) { ++ ret = bret; ++ goto end; ++ } ++ } ++ ++ if (ctx->rav1e_opts) { ++ AVDictionary *dict = NULL; ++ AVDictionaryEntry *en = NULL; ++ ++ if (!av_dict_parse_string(&dict, ctx->rav1e_opts, "=", ":", 0)) { ++ while (en = av_dict_get(dict, "", en, AV_DICT_IGNORE_SUFFIX)) { ++ int parse_ret = rav1e_config_parse(cfg, en->key, en->value); ++ if (parse_ret < 0) ++ av_log(avctx, AV_LOG_WARNING, "Invalid value for %s: %s.\n", en->key, en->value); ++ } ++ av_dict_free(&dict); ++ } ++ } ++ ++ rret = rav1e_config_parse_int(cfg, "width", avctx->width); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Invalid width passed to rav1e.\n"); ++ ret = AVERROR_INVALIDDATA; ++ goto end; ++ } ++ ++ rret = rav1e_config_parse_int(cfg, "height", avctx->height); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Invalid height passed to rav1e.\n"); ++ ret = AVERROR_INVALIDDATA; ++ goto end; ++ } ++ ++ rret = rav1e_config_parse_int(cfg, "threads", avctx->thread_count); ++ if (rret < 0) ++ av_log(avctx, AV_LOG_WARNING, "Invalid number of threads, defaulting to auto.\n"); ++ ++ if (ctx->speed >= 0) { ++ rret = rav1e_config_parse_int(cfg, "speed", ctx->speed); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Could not set speed preset.\n"); ++ ret = AVERROR_EXTERNAL; ++ goto end; ++ } ++ } ++ ++ /* rav1e handles precedence between 'tiles' and cols/rows for us. */ ++ if (ctx->tiles > 0) { ++ rret = rav1e_config_parse_int(cfg, "tiles", ctx->tiles); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Could not set number of tiles to encode with.\n"); ++ ret = AVERROR_EXTERNAL; ++ goto end; ++ } ++ } ++ if (ctx->tile_rows > 0) { ++ rret = rav1e_config_parse_int(cfg, "tile_rows", ctx->tile_rows); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Could not set number of tile rows to encode with.\n"); ++ ret = AVERROR_EXTERNAL; ++ goto end; ++ } ++ } ++ if (ctx->tile_cols > 0) { ++ rret = rav1e_config_parse_int(cfg, "tile_cols", ctx->tile_cols); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Could not set number of tile cols to encode with.\n"); ++ ret = AVERROR_EXTERNAL; ++ goto end; ++ } ++ } ++ ++ if (avctx->gop_size > 0) { ++ rret = rav1e_config_parse_int(cfg, "key_frame_interval", avctx->gop_size); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Could not set max keyint.\n"); ++ ret = AVERROR_EXTERNAL; ++ goto end; ++ } ++ } ++ ++ if (avctx->keyint_min > 0) { ++ rret = rav1e_config_parse_int(cfg, "min_key_frame_interval", avctx->keyint_min); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Could not set min keyint.\n"); ++ ret = AVERROR_EXTERNAL; ++ goto end; ++ } ++ } ++ ++ if (avctx->bit_rate && ctx->quantizer < 0) { ++ int max_quantizer = avctx->qmax >= 0 ? avctx->qmax : 255; ++ ++ rret = rav1e_config_parse_int(cfg, "quantizer", max_quantizer); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Could not set max quantizer.\n"); ++ ret = AVERROR_EXTERNAL; ++ goto end; ++ } ++ ++ if (avctx->qmin >= 0) { ++ rret = rav1e_config_parse_int(cfg, "min_quantizer", avctx->qmin); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Could not set min quantizer.\n"); ++ ret = AVERROR_EXTERNAL; ++ goto end; ++ } ++ } ++ ++ rret = rav1e_config_parse_int(cfg, "bitrate", avctx->bit_rate); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Could not set bitrate.\n"); ++ ret = AVERROR_INVALIDDATA; ++ goto end; ++ } ++ } else if (ctx->quantizer >= 0) { ++ if (avctx->bit_rate) ++ av_log(avctx, AV_LOG_WARNING, "Both bitrate and quantizer specified. Using quantizer mode."); ++ ++ rret = rav1e_config_parse_int(cfg, "quantizer", ctx->quantizer); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Could not set quantizer.\n"); ++ ret = AVERROR_EXTERNAL; ++ goto end; ++ } ++ } ++ ++ rret = rav1e_config_set_pixel_format(cfg, desc->comp[0].depth, ++ pix_fmt_map(avctx->pix_fmt), ++ chroma_loc_map(avctx->chroma_sample_location), ++ range_map(avctx->pix_fmt, avctx->color_range)); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Failed to set pixel format properties.\n"); ++ ret = AVERROR_INVALIDDATA; ++ goto end; ++ } ++ ++ /* rav1e's colorspace enums match standard values. */ ++ rret = rav1e_config_set_color_description(cfg, (RaMatrixCoefficients) avctx->colorspace, ++ (RaColorPrimaries) avctx->color_primaries, ++ (RaTransferCharacteristics) avctx->color_trc); ++ if (rret < 0) { ++ av_log(avctx, AV_LOG_WARNING, "Failed to set color properties.\n"); ++ if (avctx->err_recognition & AV_EF_EXPLODE) { ++ ret = AVERROR_INVALIDDATA; ++ goto end; ++ } ++ } ++ ++ ctx->ctx = rav1e_context_new(cfg); ++ if (!ctx->ctx) { ++ av_log(avctx, AV_LOG_ERROR, "Failed to create rav1e encode context.\n"); ++ ret = AVERROR_EXTERNAL; ++ goto end; ++ } ++ ++ ret = 0; ++ ++end: ++ ++ rav1e_config_unref(cfg); ++ ++ return ret; ++} ++ ++static int librav1e_send_frame(AVCodecContext *avctx, const AVFrame *frame) ++{ ++ librav1eContext *ctx = avctx->priv_data; ++ RaFrame *rframe = NULL; ++ int ret; ++ ++ if (frame) { ++ const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format); ++ ++ rframe = rav1e_frame_new(ctx->ctx); ++ if (!rframe) { ++ av_log(avctx, AV_LOG_ERROR, "Could not allocate new rav1e frame.\n"); ++ return AVERROR(ENOMEM); ++ } ++ ++ for (int i = 0; i < desc->nb_components; i++) { ++ int shift = i ? desc->log2_chroma_h : 0; ++ int bytes = desc->comp[0].depth == 8 ? 1 : 2; ++ rav1e_frame_fill_plane(rframe, i, frame->data[i], ++ (frame->height >> shift) * frame->linesize[i], ++ frame->linesize[i], bytes); ++ } ++ } ++ ++ ret = rav1e_send_frame(ctx->ctx, rframe); ++ if (rframe) ++ rav1e_frame_unref(rframe); /* No need to unref if flushing. */ ++ ++ switch (ret) { ++ case RA_ENCODER_STATUS_SUCCESS: ++ break; ++ case RA_ENCODER_STATUS_ENOUGH_DATA: ++ return AVERROR(EAGAIN); ++ case RA_ENCODER_STATUS_FAILURE: ++ av_log(avctx, AV_LOG_ERROR, "Could not send frame: %s\n", rav1e_status_to_str(ret)); ++ return AVERROR_EXTERNAL; ++ default: ++ av_log(avctx, AV_LOG_ERROR, "Unknown return code %d from rav1e_send_frame: %s\n", ret, rav1e_status_to_str(ret)); ++ return AVERROR_UNKNOWN; ++ } ++ ++ return 0; ++} ++ ++static int librav1e_receive_packet(AVCodecContext *avctx, AVPacket *pkt) ++{ ++ librav1eContext *ctx = avctx->priv_data; ++ RaPacket *rpkt = NULL; ++ int ret; ++ ++retry: ++ ++ if (avctx->flags & AV_CODEC_FLAG_PASS1) { ++ int sret = get_stats(avctx, 0); ++ if (sret < 0) ++ return sret; ++ } else if (avctx->flags & AV_CODEC_FLAG_PASS2) { ++ int sret = set_stats(avctx); ++ if (sret < 0) ++ return sret; ++ } ++ ++ ret = rav1e_receive_packet(ctx->ctx, &rpkt); ++ switch (ret) { ++ case RA_ENCODER_STATUS_SUCCESS: ++ break; ++ case RA_ENCODER_STATUS_LIMIT_REACHED: ++ if (avctx->flags & AV_CODEC_FLAG_PASS1) { ++ int sret = get_stats(avctx, 1); ++ if (sret < 0) ++ return sret; ++ } ++ return AVERROR_EOF; ++ case RA_ENCODER_STATUS_ENCODED: ++ if (avctx->internal->draining) ++ goto retry; ++ return AVERROR(EAGAIN); ++ case RA_ENCODER_STATUS_NEED_MORE_DATA: ++ if (avctx->internal->draining) { ++ av_log(avctx, AV_LOG_ERROR, "Unexpected error when receiving packet after EOF.\n"); ++ return AVERROR_EXTERNAL; ++ } ++ return AVERROR(EAGAIN); ++ case RA_ENCODER_STATUS_FAILURE: ++ av_log(avctx, AV_LOG_ERROR, "Could not encode frame: %s\n", rav1e_status_to_str(ret)); ++ return AVERROR_EXTERNAL; ++ default: ++ av_log(avctx, AV_LOG_ERROR, "Unknown return code %d from rav1e_receive_packet: %s\n", ret, rav1e_status_to_str(ret)); ++ return AVERROR_UNKNOWN; ++ } ++ ++ ret = av_new_packet(pkt, rpkt->len); ++ if (ret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "Could not allocate packet.\n"); ++ rav1e_packet_unref(rpkt); ++ return ret; ++ } ++ ++ memcpy(pkt->data, rpkt->data, rpkt->len); ++ ++ if (rpkt->frame_type == RA_FRAME_TYPE_KEY) ++ pkt->flags |= AV_PKT_FLAG_KEY; ++ ++ pkt->pts = pkt->dts = rpkt->input_frameno * avctx->ticks_per_frame; ++ rav1e_packet_unref(rpkt); ++ ++ if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) { ++ int ret = av_bsf_send_packet(ctx->bsf, pkt); ++ if (ret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "extradata extraction send failed.\n"); ++ av_packet_unref(pkt); ++ return ret; ++ } ++ ++ ret = av_bsf_receive_packet(ctx->bsf, pkt); ++ if (ret < 0) { ++ av_log(avctx, AV_LOG_ERROR, "extradata extraction receive failed.\n"); ++ av_packet_unref(pkt); ++ return ret; ++ } ++ } ++ ++ return 0; ++} ++ ++#define OFFSET(x) offsetof(librav1eContext, x) ++#define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM ++ ++static const AVOption options[] = { ++ { "qp", "use constant quantizer mode", OFFSET(quantizer), AV_OPT_TYPE_INT, { .i64 = 100 }, -1, 255, VE }, ++ { "speed", "what speed preset to use", OFFSET(speed), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 10, VE }, ++ { "tiles", "number of tiles encode with", OFFSET(tiles), AV_OPT_TYPE_INT, { .i64 = 0 }, -1, INT64_MAX, VE }, ++ { "tile-rows", "number of tiles rows to encode with", OFFSET(tile_rows), AV_OPT_TYPE_INT, { .i64 = 0 }, -1, INT64_MAX, VE }, ++ { "tile-columns", "number of tiles columns to encode with", OFFSET(tile_cols), AV_OPT_TYPE_INT, { .i64 = 0 }, -1, INT64_MAX, VE }, ++ { "rav1e-params", "set the rav1e configuration using a :-separated list of key=value parameters", OFFSET(rav1e_opts), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, ++ { NULL } ++}; ++ ++static const AVCodecDefault librav1e_defaults[] = { ++ { "b", "0" }, ++ { "g", "0" }, ++ { "keyint_min", "0" }, ++ { "qmax", "-1" }, ++ { "qmin", "-1" }, ++ { NULL } ++}; ++ ++const enum AVPixelFormat librav1e_pix_fmts[] = { ++ AV_PIX_FMT_YUV420P, ++ AV_PIX_FMT_YUVJ420P, ++ AV_PIX_FMT_YUV420P10, ++ AV_PIX_FMT_YUV420P12, ++ AV_PIX_FMT_YUV422P, ++ AV_PIX_FMT_YUVJ422P, ++ AV_PIX_FMT_YUV422P10, ++ AV_PIX_FMT_YUV422P12, ++ AV_PIX_FMT_YUV444P, ++ AV_PIX_FMT_YUVJ444P, ++ AV_PIX_FMT_YUV444P10, ++ AV_PIX_FMT_YUV444P12, ++ AV_PIX_FMT_NONE ++}; ++ ++static const AVClass class = { ++ .class_name = "librav1e", ++ .item_name = av_default_item_name, ++ .option = options, ++ .version = LIBAVUTIL_VERSION_INT, ++}; ++ ++AVCodec ff_librav1e_encoder = { ++ .name = "librav1e", ++ .long_name = NULL_IF_CONFIG_SMALL("librav1e AV1"), ++ .type = AVMEDIA_TYPE_VIDEO, ++ .id = AV_CODEC_ID_AV1, ++ .init = librav1e_encode_init, ++ .send_frame = librav1e_send_frame, ++ .receive_packet = librav1e_receive_packet, ++ .close = librav1e_encode_close, ++ .priv_data_size = sizeof(librav1eContext), ++ .priv_class = &class, ++ .defaults = librav1e_defaults, ++ .pix_fmts = librav1e_pix_fmts, ++ .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS, ++ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, ++ .wrapper_name = "librav1e", ++}; Property changes on: head/multimedia/ffmpeg/files/patch-rav1e ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/multimedia/librav1e/Makefile =================================================================== --- head/multimedia/librav1e/Makefile (nonexistent) +++ head/multimedia/librav1e/Makefile (revision 517258) @@ -0,0 +1,27 @@ +# $FreeBSD$ + +PORTREVISION= 0 +PKGNAMEPREFIX= lib + +MASTERDIR= ${.CURDIR}/../rav1e +PLIST= ${.CURDIR}/pkg-plist + +BUILD_DEPENDS= cargo-cbuild:devel/cargo-c + +PLIST_FILES= # empty +PLIST_SUB= VERSION=${DISTVERSION:C/-.*//} + +do-build: + @${CARGO_CARGO_RUN} cbuild \ + ${CARGO_BUILD_ARGS} + +do-install: + @${CARGO_CARGO_RUN} cinstall \ + --destdir "${STAGEDIR}" \ + ${CARGO_BUILD_ARGS} \ + ${CARGO_INSTALL_ARGS} + +post-install: + @${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/*.so + +.include "${MASTERDIR}/Makefile" Property changes on: head/multimedia/librav1e/Makefile ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/multimedia/librav1e/pkg-plist =================================================================== --- head/multimedia/librav1e/pkg-plist (nonexistent) +++ head/multimedia/librav1e/pkg-plist (revision 517258) @@ -0,0 +1,6 @@ +include/rav1e/rav1e.h +lib/librav1e.a +lib/librav1e.so +lib/librav1e.so.0 +lib/librav1e.so.%%VERSION%% +libdata/pkgconfig/rav1e.pc Property changes on: head/multimedia/librav1e/pkg-plist ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/multimedia/rav1e/Makefile =================================================================== --- head/multimedia/rav1e/Makefile (revision 517257) +++ head/multimedia/rav1e/Makefile (revision 517258) @@ -1,162 +1,164 @@ # $FreeBSD$ PORTNAME= rav1e DISTVERSION= 0.1.0 CATEGORIES= multimedia MAINTAINER= jbeich@FreeBSD.org COMMENT= Fast and safe AV1 encoder LICENSE= BSD2CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE -BUILD_DEPENDS= ${BUILD_DEPENDS_${ARCH}} +BUILD_DEPENDS+= ${BUILD_DEPENDS_${ARCH}} BUILD_DEPENDS_amd64= nasm:devel/nasm USES= cargo USE_GITHUB= yes GH_ACCOUNT= xiph -PLIST_FILES= bin/${PORTNAME} +PLIST_FILES?= bin/${PORTNAME} CARGO_CRATES= adler32-1.0.4 \ aho-corasick-0.7.6 \ ansi_term-0.11.0 \ aom-sys-0.1.3 \ arbitrary-0.2.0 \ arc-swap-0.4.3 \ arg_enum_proc_macro-0.3.0 \ arrayvec-0.5.1 \ atty-0.2.13 \ autocfg-0.1.7 \ backtrace-0.3.40 \ backtrace-sys-0.1.32 \ better-panic-0.2.0 \ bincode-1.2.0 \ bindgen-0.51.1 \ bitflags-1.2.1 \ bitstream-io-0.8.4 \ bstr-0.2.8 \ byteorder-1.3.2 \ c2-chacha-0.2.3 \ cast-0.2.2 \ cc-1.0.47 \ cexpr-0.3.6 \ cfg-if-0.1.10 \ chrono-0.4.9 \ clang-sys-0.28.1 \ clap-2.33.0 \ clicolors-control-1.0.1 \ console-0.9.1 \ crc32fast-1.2.0 \ criterion-0.3.0 \ criterion-plot-0.4.0 \ crossbeam-deque-0.7.2 \ crossbeam-epoch-0.8.0 \ crossbeam-queue-0.1.2 \ crossbeam-utils-0.6.6 \ crossbeam-utils-0.7.0 \ csv-1.1.1 \ csv-core-0.1.6 \ ctor-0.1.12 \ dav1d-sys-0.2.1 \ deflate-0.7.20 \ difference-2.0.0 \ either-1.5.3 \ encode_unicode-0.3.6 \ env_logger-0.6.2 \ err-derive-0.2.1 \ error-chain-0.10.0 \ getrandom-0.1.13 \ glob-0.3.0 \ hermit-abi-0.1.3 \ humantime-1.3.0 \ image-0.22.3 \ inflate-0.4.5 \ interpolate_name-0.2.3 \ itertools-0.8.1 \ itoa-0.4.4 \ lazy_static-1.4.0 \ libc-0.2.65 \ libloading-0.5.2 \ log-0.4.8 \ memchr-2.2.1 \ memoffset-0.5.3 \ metadeps-1.1.2 \ nom-4.2.3 \ noop_proc_macro-0.1.0 \ num-derive-0.3.0 \ num-integer-0.1.41 \ num-iter-0.1.39 \ num-rational-0.2.2 \ num-traits-0.2.8 \ num_cpus-1.11.0 \ output_vt100-0.1.2 \ paste-0.1.6 \ paste-impl-0.1.6 \ peeking_take_while-0.1.2 \ pkg-config-0.3.17 \ png-0.15.0 \ ppv-lite86-0.2.6 \ pretty_assertions-0.6.1 \ pretty_env_logger-0.3.1 \ proc-macro-error-0.2.6 \ proc-macro-hack-0.5.11 \ proc-macro2-1.0.6 \ quick-error-1.2.2 \ quote-1.0.2 \ rand-0.7.2 \ rand_chacha-0.2.1 \ rand_core-0.5.1 \ rand_hc-0.2.0 \ rand_os-0.2.2 \ rand_xoshiro-0.3.1 \ rayon-1.2.0 \ rayon-core-1.6.0 \ redox_syscall-0.1.56 \ regex-1.3.1 \ regex-automata-0.1.8 \ regex-syntax-0.6.12 \ rustc-demangle-0.1.16 \ rustc-hash-1.0.1 \ rustc_version-0.2.3 \ ryu-1.0.2 \ same-file-1.0.5 \ scan_fmt-0.2.4 \ scopeguard-1.0.0 \ semver-0.9.0 \ semver-parser-0.7.0 \ serde-1.0.102 \ serde_derive-1.0.102 \ serde_json-1.0.41 \ shlex-0.1.1 \ signal-hook-0.1.11 \ signal-hook-registry-1.1.1 \ simd_helpers-0.1.0 \ strsim-0.8.0 \ syn-1.0.8 \ synstructure-0.12.2 \ termcolor-1.0.5 \ termios-0.3.1 \ textwrap-0.11.0 \ thread_local-0.3.6 \ time-0.1.42 \ tinytemplate-1.0.2 \ toml-0.2.1 \ unicode-width-0.1.6 \ unicode-xid-0.2.0 \ vec_map-0.8.1 \ version_check-0.1.5 \ walkdir-2.2.9 \ wasi-0.7.0 \ which-3.1.0 \ winapi-0.3.8 \ winapi-i686-pc-windows-gnu-0.4.0 \ winapi-util-0.1.2 \ winapi-x86_64-pc-windows-gnu-0.4.0 \ wincolor-1.0.2 \ y4m-0.4.0 +.if !target(post-install) post-install: @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${PORTNAME} +.endif .include