Fri Jun 2 16:44:07 2023 UTC ()
multimedia/ffmpeg6: import ffmpeg6-6.0

FFmpeg is a complete, cross-platform solution to record, convert
and stream audio and video.  It includes libavcodec - the leading
audio/video codec library.

This package contains major version 6.

Changes compared to 5:

A new major release, FFmpeg 6.0 "Von Neumann", is now available
for download. This release has many new encoders and decoders,
filters, ffmpeg CLI tool improvements, and also, changes the way
releases are done. All major releases will now bump the version of
the ABI. We plan to have a new major release each year. Another
release-specific change is that deprecated APIs will be removed
after 3 releases, upon the next major bump. This means that releases
will be done more often and will be more organized.

New decoders featured are Bonk, RKA, Radiance, SC-4, APAC, VQC,
WavArc and a few ADPCM formats. QSV and NVenc now support AV1
encoding. The FFmpeg CLI (we usually reffer to it as ffmpeg.c to
avoid confusion) has speed-up improvements due to threading, as
well as statistics options, and the ability to pass option values
for filters from a file. There are quite a few new audio and video
filters, such as adrc, showcwt, backgroundkey and ssim360, with a
few hardware ones too. Finally, the release features many
behind-the-scenes changes, including a new FFT and MDCT implementation
used in codecs (expect a blog post about this soon), numerous
bugfixes, better ICC profile handling and colorspace signalling
improvement, introduction of a number of RISC-V vector and scalar
assembly optimized routines, and a few new improved APIs, which
can be viewed in the doc/APIchanges file in our tree. A few submitted
features, such as the Vulkan improvements and more FFT optimizations
will be in the next minor release, 6.1, which we plan to release
soon, in line with our new release schedule. Some highlights are:

    Radiance HDR image support
    ddagrab (Desktop Duplication) video capture filter
    ffmpeg -shortest_buf_duration option
    ffmpeg now requires threading to be built
    ffmpeg now runs every muxer in a separate thread
    Add new mode to cropdetect filter to detect crop-area based on motion vectors and edges
    VAAPI decoding and encoding for 10/12bit 422, 10/12bit 444 HEVC and VP9
    WBMP (Wireless Application Protocol Bitmap) image format
    a3dscope filter
    bonk decoder and demuxer
    Micronas SC-4 audio decoder
    LAF demuxer
    APAC decoder and demuxer
    Media 100i decoders
    DTS to PTS reorder bsf
    ViewQuest VQC decoder
    backgroundkey filter
    nvenc AV1 encoding support
    MediaCodec decoder via NDKMediaCodec
    MediaCodec encoder
    oneVPL support for QSV
    QSV AV1 encoder
    QSV decoding and encoding for 10/12bit 422, 10/12bit 444 HEVC and VP9
    showcwt multimedia filter
    corr video filter
    adrc audio filter
    afdelaysrc audio filter
    WADY DPCM decoder and demuxer
    CBD2 DPCM decoder
    ssim360 video filter
    ffmpeg CLI new options: -stats_enc_pre[_fmt], -stats_enc_post[_fmt], -stats_mux_pre[_fmt]
    hstack_vaapi, vstack_vaapi and xstack_vaapi filters
    XMD ADPCM decoder and demuxer
    media100 to mjpegb bsf
    ffmpeg CLI new option: -fix_sub_duration_heartbeat
    WavArc decoder and demuxer
    CrystalHD decoders deprecated
    SDNS demuxer
    RKA decoder and demuxer
    filtergraph syntax in ffmpeg CLI now supports passing file contents as option values
    hstack_qsv, vstack_qsv and xstack_qsv filters


(wiz)
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/ALTERNATIVES
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/DESCR
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/Makefile
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/Makefile.common
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/PLIST
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/buildlink3.mk
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/distinfo
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/options.mk
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-Makefile
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-configure
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-doc_Makefile
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-doc_general__contents.texi
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-doc_indevs.texi
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-doc_outdevs.texi
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_Makefile
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_alldevices.c
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_sunau.c
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_sunau.h
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_sunau__dec.c
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_sunau__enc.c
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-libavutil_macros.h
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-libavutil_x86_asm.h
diff -r0 -r1.1 pkgsrc/multimedia/ffmpeg6/patches/patch-libavutil_x86_cpu.c

File Added: pkgsrc/multimedia/ffmpeg6/ALTERNATIVES
bin/ffmpeg @PREFIX@/bin/ffmpeg6
bin/ffprobe @PREFIX@/bin/ffprobe6

File Added: pkgsrc/multimedia/ffmpeg6/DESCR
FFmpeg is a complete, cross-platform solution to record, convert
and stream audio and video.  It includes libavcodec - the leading
audio/video codec library.

This package contains major version 6.

File Added: pkgsrc/multimedia/ffmpeg6/Makefile
# $NetBSD: Makefile,v 1.1 2023/06/02 16:44:06 wiz Exp $

PKGNAME=	${DISTNAME:S/ffmpeg/ffmpeg6/}
MAINTAINER=	pkgsrc-users@NetBSD.org
HOMEPAGE=	https://ffmpeg.org/
COMMENT=	Decoding, encoding and streaming software (v6.x)

CONFIGURE_ARGS+=	--enable-avfilter
CONFIGURE_ARGS+=	--enable-postproc
CONFIGURE_ARGS+=	--enable-rpath
CONFIGURE_ARGS+=	--disable-ffplay

INSTALLATION_DIRS=	lib/ffmpeg6 share/doc/ffmpeg6

.include "../../mk/bsd.prefs.mk"

.if ${USE_CROSS_COMPILE:U:tl} == yes
CONFIGURE_ARGS+=	--enable-cross-compile
CONFIGURE_ARGS+=	--host-cc=${NATIVE_CC:Q}
CONFIGURE_ARGS+=	--host-ld=${NATIVE_CC:Q}
CONFIGURE_ARGS+=	--target-os=${LOWER_OPSYS}
.endif

PRINT_PLIST_AWK+=	/html/ { $$0 = "$${PLIST.doc}" $$0 }
PRINT_PLIST_AWK+=	/css/ { $$0 = "$${PLIST.doc}" $$0 }

TEST_TARGET=	check

post-install:
	${INSTALL_DATA} ${WRKSRC}/doc/*.txt \
		${DESTDIR}${PREFIX}/share/doc/ffmpeg6

.include "options.mk"

# disable asm on i386 to avoid text relocations
.if ${MACHINE_ARCH} == "i386"
CONFIGURE_ARGS+=	--disable-asm
.endif

# configure script uses uname -m to detect arch, as opposed to uname -p in
# GNU/configure. Unable to detect NetBSD/macppc hosts correctly.
CONFIGURE_ARGS+=	--arch=${MACHINE_ARCH}

.include "../../multimedia/ffmpeg6/Makefile.common"
.include "../../mk/bsd.pkg.mk"

File Added: pkgsrc/multimedia/ffmpeg6/Makefile.common
# $NetBSD: Makefile.common,v 1.1 2023/06/02 16:44:06 wiz Exp $
# used by multimedia/ffmpeg6/Makefile
# used by multimedia/ffplay6/Makefile

DISTNAME=	ffmpeg-6.0
CATEGORIES=	multimedia
MASTER_SITES=	http://www.ffmpeg.org/releases/
EXTRACT_SUFX=	.tar.xz

LICENSE=	gnu-lgpl-v2.1 AND gnu-gpl-v2 ${ADDITIONAL_LICENSE}

PATCHDIR=	${.CURDIR}/../../multimedia/ffmpeg6/patches

USE_LIBTOOL=		yes
USE_TOOLS+=		gmake pod2man perl pkg-config
HAS_CONFIGURE=		yes
CONFIGURE_ARGS+=	--cc=${CC:Q}
CONFIGURE_ARGS+=	--disable-debug
CONFIGURE_ARGS+=	--disable-optimizations
CONFIGURE_ARGS+=	--disable-stripping
CONFIGURE_ARGS+=	--enable-gpl
CONFIGURE_ARGS+=	--enable-libxml2
CONFIGURE_ARGS+=	--enable-pthreads
CONFIGURE_ARGS+=	--enable-shared
CONFIGURE_ARGS+=	--mandir=${PREFIX}/${PKGMANDIR}
CONFIGURE_ARGS+=	--prefix=${PREFIX}
CONFIGURE_ARGS+=	--progs-suffix=6

CONFIGURE_ARGS+=	--enable-runtime-cpudetect
CONFIGURE_ARGS+=	--datadir=${PREFIX}/share/ffmpeg6
CONFIGURE_ARGS+=	--docdir=${PREFIX}/share/doc/ffmpeg6
CONFIGURE_ARGS+=	--incdir=${PREFIX}/include/ffmpeg6
CONFIGURE_ARGS+=	--libdir=${PREFIX}/lib/ffmpeg6
CONFIGURE_ARGS+=	--shlibdir=${PREFIX}/lib/ffmpeg6
LDFLAGS+=		${COMPILER_RPATH_FLAG}${PREFIX}/lib/ffmpeg6

.if !empty(MACHINE_PLATFORM:MDarwin-1[2-9].*-*) || !empty(MACHINE_PLATFORM:MDarwin-2*)
CONFIGURE_ARGS+=	--enable-opencl
.endif

.if ${OPSYS} == "SunOS"
USE_TOOLS+=	bash:build
CONFIG_SHELL=	${TOOLS_PATH.bash}
.endif

# Let's not put garbage into /tmp
CONFIGURE_ENV+=		TMPDIR=${WRKSRC}/tmp

.include "../../mk/compiler.mk"

.if !empty(PKGSRC_COMPILER:Msunpro)
SUBST_CLASSES+=		sunwspro
SUBST_MESSAGE.sunwspro=	Fixing compiler options for SunStudio C compiler.
SUBST_STAGE.sunwspro=	post-configure
SUBST_FILES.sunwspro=	config.mak
SUBST_SED.sunwspro=	-e "s/-O /-KPIC -DPIC /"
SUBST_SED.sunwspro+=	-e "s/-O3/-xO2/g"
SUBST_SED.sunwspro+=	-e "s/-std=c99/-xc99=all/"
SUBST_SED.sunwspro+=	-e "s/-Wl,-rpath-link,/-L /g"
.endif

.if ${MACHINE_ARCH} == x86_64 || ${MACHINE_ARCH} == i386
BUILD_DEPENDS+=	nasm>=2.13:../../devel/nasm
.endif

REPLACE_PERL+=	doc/texi2pod.pl
REPLACE_SH+=	configure
REPLACE_SH+=	ffbuild/pkgconfig_generate.sh
REPLACE_SH+=	ffbuild/version.sh

PLIST_SRC+=	${PKGDIR}/PLIST

MAKE_ENV+=	EXTRA_LIBS=${LIBGETOPT:Q}

pre-configure:
	${MKDIR} ${WRKSRC}/tmp

.include "../../archivers/bzip2/buildlink3.mk"
.include "../../archivers/xz/buildlink3.mk"
.include "../../devel/libgetopt/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../textproc/libxml2/buildlink3.mk"
.include "../../mk/atomic64.mk"
.include "../../mk/pthread.buildlink3.mk"

File Added: pkgsrc/multimedia/ffmpeg6/PLIST
@comment $NetBSD: PLIST,v 1.1 2023/06/02 16:44:06 wiz Exp $
bin/ffmpeg6
bin/ffprobe6
include/ffmpeg6/libavcodec/ac3_parser.h
include/ffmpeg6/libavcodec/adts_parser.h
include/ffmpeg6/libavcodec/avcodec.h
include/ffmpeg6/libavcodec/avdct.h
include/ffmpeg6/libavcodec/avfft.h
include/ffmpeg6/libavcodec/bsf.h
include/ffmpeg6/libavcodec/codec.h
include/ffmpeg6/libavcodec/codec_desc.h
include/ffmpeg6/libavcodec/codec_id.h
include/ffmpeg6/libavcodec/codec_par.h
include/ffmpeg6/libavcodec/d3d11va.h
include/ffmpeg6/libavcodec/defs.h
include/ffmpeg6/libavcodec/dirac.h
include/ffmpeg6/libavcodec/dv_profile.h
include/ffmpeg6/libavcodec/dxva2.h
include/ffmpeg6/libavcodec/jni.h
include/ffmpeg6/libavcodec/mediacodec.h
include/ffmpeg6/libavcodec/packet.h
include/ffmpeg6/libavcodec/qsv.h
include/ffmpeg6/libavcodec/vdpau.h
include/ffmpeg6/libavcodec/version.h
include/ffmpeg6/libavcodec/version_major.h
include/ffmpeg6/libavcodec/videotoolbox.h
include/ffmpeg6/libavcodec/vorbis_parser.h
include/ffmpeg6/libavcodec/xvmc.h
include/ffmpeg6/libavdevice/avdevice.h
include/ffmpeg6/libavdevice/version.h
include/ffmpeg6/libavdevice/version_major.h
include/ffmpeg6/libavfilter/avfilter.h
include/ffmpeg6/libavfilter/buffersink.h
include/ffmpeg6/libavfilter/buffersrc.h
include/ffmpeg6/libavfilter/version.h
include/ffmpeg6/libavfilter/version_major.h
include/ffmpeg6/libavformat/avformat.h
include/ffmpeg6/libavformat/avio.h
include/ffmpeg6/libavformat/version.h
include/ffmpeg6/libavformat/version_major.h
include/ffmpeg6/libavutil/adler32.h
include/ffmpeg6/libavutil/aes.h
include/ffmpeg6/libavutil/aes_ctr.h
include/ffmpeg6/libavutil/ambient_viewing_environment.h
include/ffmpeg6/libavutil/attributes.h
include/ffmpeg6/libavutil/audio_fifo.h
include/ffmpeg6/libavutil/avassert.h
include/ffmpeg6/libavutil/avconfig.h
include/ffmpeg6/libavutil/avstring.h
include/ffmpeg6/libavutil/avutil.h
include/ffmpeg6/libavutil/base64.h
include/ffmpeg6/libavutil/blowfish.h
include/ffmpeg6/libavutil/bprint.h
include/ffmpeg6/libavutil/bswap.h
include/ffmpeg6/libavutil/buffer.h
include/ffmpeg6/libavutil/camellia.h
include/ffmpeg6/libavutil/cast5.h
include/ffmpeg6/libavutil/channel_layout.h
include/ffmpeg6/libavutil/common.h
include/ffmpeg6/libavutil/cpu.h
include/ffmpeg6/libavutil/crc.h
include/ffmpeg6/libavutil/csp.h
include/ffmpeg6/libavutil/des.h
include/ffmpeg6/libavutil/detection_bbox.h
include/ffmpeg6/libavutil/dict.h
include/ffmpeg6/libavutil/display.h
include/ffmpeg6/libavutil/dovi_meta.h
include/ffmpeg6/libavutil/downmix_info.h
include/ffmpeg6/libavutil/encryption_info.h
include/ffmpeg6/libavutil/error.h
include/ffmpeg6/libavutil/eval.h
include/ffmpeg6/libavutil/ffversion.h
include/ffmpeg6/libavutil/fifo.h
include/ffmpeg6/libavutil/file.h
include/ffmpeg6/libavutil/film_grain_params.h
include/ffmpeg6/libavutil/frame.h
include/ffmpeg6/libavutil/hash.h
include/ffmpeg6/libavutil/hdr_dynamic_metadata.h
include/ffmpeg6/libavutil/hdr_dynamic_vivid_metadata.h
include/ffmpeg6/libavutil/hmac.h
include/ffmpeg6/libavutil/hwcontext.h
include/ffmpeg6/libavutil/hwcontext_cuda.h
include/ffmpeg6/libavutil/hwcontext_d3d11va.h
include/ffmpeg6/libavutil/hwcontext_drm.h
include/ffmpeg6/libavutil/hwcontext_dxva2.h
include/ffmpeg6/libavutil/hwcontext_mediacodec.h
include/ffmpeg6/libavutil/hwcontext_opencl.h
include/ffmpeg6/libavutil/hwcontext_qsv.h
include/ffmpeg6/libavutil/hwcontext_vaapi.h
include/ffmpeg6/libavutil/hwcontext_vdpau.h
include/ffmpeg6/libavutil/hwcontext_videotoolbox.h
include/ffmpeg6/libavutil/hwcontext_vulkan.h
include/ffmpeg6/libavutil/imgutils.h
include/ffmpeg6/libavutil/intfloat.h
include/ffmpeg6/libavutil/intreadwrite.h
include/ffmpeg6/libavutil/lfg.h
include/ffmpeg6/libavutil/log.h
include/ffmpeg6/libavutil/lzo.h
include/ffmpeg6/libavutil/macros.h
include/ffmpeg6/libavutil/mastering_display_metadata.h
include/ffmpeg6/libavutil/mathematics.h
include/ffmpeg6/libavutil/md5.h
include/ffmpeg6/libavutil/mem.h
include/ffmpeg6/libavutil/motion_vector.h
include/ffmpeg6/libavutil/murmur3.h
include/ffmpeg6/libavutil/opt.h
include/ffmpeg6/libavutil/parseutils.h
include/ffmpeg6/libavutil/pixdesc.h
include/ffmpeg6/libavutil/pixelutils.h
include/ffmpeg6/libavutil/pixfmt.h
include/ffmpeg6/libavutil/random_seed.h
include/ffmpeg6/libavutil/rational.h
include/ffmpeg6/libavutil/rc4.h
include/ffmpeg6/libavutil/replaygain.h
include/ffmpeg6/libavutil/ripemd.h
include/ffmpeg6/libavutil/samplefmt.h
include/ffmpeg6/libavutil/sha.h
include/ffmpeg6/libavutil/sha512.h
include/ffmpeg6/libavutil/spherical.h
include/ffmpeg6/libavutil/stereo3d.h
include/ffmpeg6/libavutil/tea.h
include/ffmpeg6/libavutil/threadmessage.h
include/ffmpeg6/libavutil/time.h
include/ffmpeg6/libavutil/timecode.h
include/ffmpeg6/libavutil/timestamp.h
include/ffmpeg6/libavutil/tree.h
include/ffmpeg6/libavutil/twofish.h
include/ffmpeg6/libavutil/tx.h
include/ffmpeg6/libavutil/uuid.h
include/ffmpeg6/libavutil/version.h
include/ffmpeg6/libavutil/video_enc_params.h
include/ffmpeg6/libavutil/xtea.h
include/ffmpeg6/libpostproc/postprocess.h
include/ffmpeg6/libpostproc/version.h
include/ffmpeg6/libpostproc/version_major.h
include/ffmpeg6/libswresample/swresample.h
include/ffmpeg6/libswresample/version.h
include/ffmpeg6/libswresample/version_major.h
include/ffmpeg6/libswscale/swscale.h
include/ffmpeg6/libswscale/version.h
include/ffmpeg6/libswscale/version_major.h
lib/ffmpeg6/libavcodec.a
lib/ffmpeg6/libavcodec.so
lib/ffmpeg6/libavcodec.so.60
lib/ffmpeg6/libavcodec.so.60.3.100
lib/ffmpeg6/libavdevice.a
lib/ffmpeg6/libavdevice.so
lib/ffmpeg6/libavdevice.so.60
lib/ffmpeg6/libavdevice.so.60.1.100
lib/ffmpeg6/libavfilter.a
lib/ffmpeg6/libavfilter.so
lib/ffmpeg6/libavfilter.so.9
lib/ffmpeg6/libavfilter.so.9.3.100
lib/ffmpeg6/libavformat.a
lib/ffmpeg6/libavformat.so
lib/ffmpeg6/libavformat.so.60
lib/ffmpeg6/libavformat.so.60.3.100
lib/ffmpeg6/libavutil.a
lib/ffmpeg6/libavutil.so
lib/ffmpeg6/libavutil.so.58
lib/ffmpeg6/libavutil.so.58.2.100
lib/ffmpeg6/libpostproc.a
lib/ffmpeg6/libpostproc.so
lib/ffmpeg6/libpostproc.so.57
lib/ffmpeg6/libpostproc.so.57.1.100
lib/ffmpeg6/libswresample.a
lib/ffmpeg6/libswresample.so
lib/ffmpeg6/libswresample.so.4
lib/ffmpeg6/libswresample.so.4.10.100
lib/ffmpeg6/libswscale.a
lib/ffmpeg6/libswscale.so
lib/ffmpeg6/libswscale.so.7
lib/ffmpeg6/libswscale.so.7.1.100
lib/ffmpeg6/pkgconfig/libavcodec.pc
lib/ffmpeg6/pkgconfig/libavdevice.pc
lib/ffmpeg6/pkgconfig/libavfilter.pc
lib/ffmpeg6/pkgconfig/libavformat.pc
lib/ffmpeg6/pkgconfig/libavutil.pc
lib/ffmpeg6/pkgconfig/libpostproc.pc
lib/ffmpeg6/pkgconfig/libswresample.pc
lib/ffmpeg6/pkgconfig/libswscale.pc
man/man1/ffmpeg-all6.1
man/man1/ffmpeg-bitstream-filters6.1
man/man1/ffmpeg-codecs6.1
man/man1/ffmpeg-devices6.1
man/man1/ffmpeg-filters6.1
man/man1/ffmpeg-formats6.1
man/man1/ffmpeg-protocols6.1
man/man1/ffmpeg-resampler6.1
man/man1/ffmpeg-scaler6.1
man/man1/ffmpeg-utils6.1
man/man1/ffmpeg6.1
man/man1/ffprobe-all6.1
man/man1/ffprobe6.1
man/man3/libavcodec6.3
man/man3/libavdevice6.3
man/man3/libavfilter6.3
man/man3/libavformat6.3
man/man3/libavutil6.3
man/man3/libswresample6.3
man/man3/libswscale6.3
${PLIST.doc}share/doc/ffmpeg6/bootstrap.min.css
share/doc/ffmpeg6/build_system.txt
${PLIST.doc}share/doc/ffmpeg6/default.css
${PLIST.doc}share/doc/ffmpeg6/developer.html
share/doc/ffmpeg6/errno.txt
${PLIST.doc}share/doc/ffmpeg6/faq.html
${PLIST.doc}share/doc/ffmpeg6/fate.html
${PLIST.doc}share/doc/ffmpeg6/ffmpeg-all.html
${PLIST.doc}share/doc/ffmpeg6/ffmpeg-bitstream-filters.html
${PLIST.doc}share/doc/ffmpeg6/ffmpeg-codecs.html
${PLIST.doc}share/doc/ffmpeg6/ffmpeg-devices.html
${PLIST.doc}share/doc/ffmpeg6/ffmpeg-filters.html
${PLIST.doc}share/doc/ffmpeg6/ffmpeg-formats.html
${PLIST.doc}share/doc/ffmpeg6/ffmpeg-protocols.html
${PLIST.doc}share/doc/ffmpeg6/ffmpeg-resampler.html
${PLIST.doc}share/doc/ffmpeg6/ffmpeg-scaler.html
${PLIST.doc}share/doc/ffmpeg6/ffmpeg-utils.html
${PLIST.doc}share/doc/ffmpeg6/ffmpeg.html
share/doc/ffmpeg6/ffmpeg.txt
${PLIST.doc}share/doc/ffmpeg6/ffprobe-all.html
${PLIST.doc}share/doc/ffmpeg6/ffprobe.html
share/doc/ffmpeg6/filter_design.txt
${PLIST.doc}share/doc/ffmpeg6/general.html
${PLIST.doc}share/doc/ffmpeg6/git-howto.html
share/doc/ffmpeg6/issue_tracker.txt
share/doc/ffmpeg6/libav-merge.txt
${PLIST.doc}share/doc/ffmpeg6/libavcodec.html
${PLIST.doc}share/doc/ffmpeg6/libavdevice.html
${PLIST.doc}share/doc/ffmpeg6/libavfilter.html
${PLIST.doc}share/doc/ffmpeg6/libavformat.html
${PLIST.doc}share/doc/ffmpeg6/libavutil.html
${PLIST.doc}share/doc/ffmpeg6/libswresample.html
${PLIST.doc}share/doc/ffmpeg6/libswscale.html
${PLIST.doc}share/doc/ffmpeg6/mailing-list-faq.html
share/doc/ffmpeg6/mips.txt
share/doc/ffmpeg6/multithreading.txt
${PLIST.doc}share/doc/ffmpeg6/nut.html
share/doc/ffmpeg6/optimization.txt
${PLIST.doc}share/doc/ffmpeg6/platform.html
share/doc/ffmpeg6/rate_distortion.txt
share/doc/ffmpeg6/snow.txt
${PLIST.doc}share/doc/ffmpeg6/style.min.css
share/doc/ffmpeg6/swresample.txt
share/doc/ffmpeg6/swscale.txt
share/doc/ffmpeg6/tablegen.txt
share/doc/ffmpeg6/undefined.txt
share/doc/ffmpeg6/writing_filters.txt
share/ffmpeg6/examples/Makefile
share/ffmpeg6/examples/README
share/ffmpeg6/examples/avio_http_serve_files.c
share/ffmpeg6/examples/avio_list_dir.c
share/ffmpeg6/examples/avio_read_callback.c
share/ffmpeg6/examples/decode_audio.c
share/ffmpeg6/examples/decode_filter_audio.c
share/ffmpeg6/examples/decode_filter_video.c
share/ffmpeg6/examples/decode_video.c
share/ffmpeg6/examples/demux_decode.c
share/ffmpeg6/examples/encode_audio.c
share/ffmpeg6/examples/encode_video.c
share/ffmpeg6/examples/extract_mvs.c
share/ffmpeg6/examples/filter_audio.c
share/ffmpeg6/examples/hw_decode.c
share/ffmpeg6/examples/mux.c
share/ffmpeg6/examples/qsv_decode.c
share/ffmpeg6/examples/qsv_transcode.c
share/ffmpeg6/examples/remux.c
share/ffmpeg6/examples/resample_audio.c
share/ffmpeg6/examples/scale_video.c
share/ffmpeg6/examples/show_metadata.c
share/ffmpeg6/examples/transcode.c
share/ffmpeg6/examples/transcode_aac.c
share/ffmpeg6/examples/vaapi_encode.c
share/ffmpeg6/examples/vaapi_transcode.c
share/ffmpeg6/ffprobe.xsd
share/ffmpeg6/libvpx-1080p.ffpreset
share/ffmpeg6/libvpx-1080p50_60.ffpreset
share/ffmpeg6/libvpx-360p.ffpreset
share/ffmpeg6/libvpx-720p.ffpreset
share/ffmpeg6/libvpx-720p50_60.ffpreset

File Added: pkgsrc/multimedia/ffmpeg6/buildlink3.mk
# $NetBSD: buildlink3.mk,v 1.1 2023/06/02 16:44:06 wiz Exp $

BUILDLINK_TREE+=	ffmpeg6

.if !defined(FFMPEG6_BUILDLINK3_MK)
FFMPEG6_BUILDLINK3_MK:=

BUILDLINK_API_DEPENDS.ffmpeg6+=	ffmpeg6>=6.0
BUILDLINK_PKGSRCDIR.ffmpeg6?=	../../multimedia/ffmpeg6

pkgbase := ffmpeg6
.include "../../mk/pkg-build-options.mk"

.include "../../mk/bsd.fast.prefs.mk"

.if ${PKG_BUILD_OPTIONS.ffmpeg6:Mav1}
.  include "../../multimedia/libaom/buildlink3.mk"
.endif

.if ${PKG_BUILD_OPTIONS.ffmpeg6:Mfreetype}
.  include "../../graphics/freetype2/buildlink3.mk"
.endif

.if ${PKG_BUILD_OPTIONS.ffmpeg6:Mfontconfig}
.  include "../../fonts/fontconfig/buildlink3.mk"
.endif

.if ${PKG_BUILD_OPTIONS.ffmpeg6:Mtheora}
.  include "../../multimedia/libtheora/buildlink3.mk"
.endif

.if ${PKG_BUILD_OPTIONS.ffmpeg6:Mxvid}
.  include "../../multimedia/xvidcore/buildlink3.mk"
.endif

.if ${PKG_BUILD_OPTIONS.ffmpeg6:Mx264}
.  include "../../multimedia/x264/buildlink3.mk"
.endif

.if ${PKG_BUILD_OPTIONS.ffmpeg6:Mlibvpx}
.  include "../../multimedia/libvpx/buildlink3.mk"
.endif

.if ${PKG_BUILD_OPTIONS.ffmpeg6:Mvaapi}
.  include "../../multimedia/libva/buildlink3.mk"
.endif

.if ${PKG_BUILD_OPTIONS.ffmpeg6:Mvdpau}
.  include "../../multimedia/libvdpau/buildlink3.mk"
.endif

BUILDLINK_INCDIRS.ffmpeg6+=		include/ffmpeg6
BUILDLINK_LIBDIRS.ffmpeg6+=		lib/ffmpeg6
BUILDLINK_FNAME_TRANSFORM.ffmpeg6+=	-e 's|lib/ffmpeg6/pkgconfig/|lib/pkgconfig/|'

.include "../../archivers/bzip2/buildlink3.mk"
.include "../../archivers/xz/buildlink3.mk"
.include "../../devel/libgetopt/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.endif # FFMPEG6_BUILDLINK3_MK

BUILDLINK_TREE+=	-ffmpeg6

File Added: pkgsrc/multimedia/ffmpeg6/distinfo
$NetBSD: distinfo,v 1.1 2023/06/02 16:44:06 wiz Exp $

BLAKE2s (ffmpeg-6.0.tar.xz) = ce6f75464ac37374825b33d7b32b22f7e9dcea51026cc885cd6668fbada65c08
SHA512 (ffmpeg-6.0.tar.xz) = 4d0e8f635d5a1633710f30cb3e0a854b6ca3bf85e33a289d1ec7aca2ad55dc4910010bc9cf3f13eee9f6decb9d50a0df6d7aa5a342f308c3868d2730f3a6b980
Size (ffmpeg-6.0.tar.xz) = 10234012 bytes
SHA1 (patch-Makefile) = 2d27f218ee49179fdea14bb5c86c506dfb64dbd6
SHA1 (patch-configure) = 59195d37ae1a70b2eb4b6576e1680e0916e1e99f
SHA1 (patch-doc_Makefile) = c513af183e374bff4fa5945d374ddae472d51bad
SHA1 (patch-doc_general__contents.texi) = 13704795d2688dc0377a512dc6e65025ad674724
SHA1 (patch-doc_indevs.texi) = 8cd421a67f34ebbe6099102bf1de7c6cdb13dcb7
SHA1 (patch-doc_outdevs.texi) = 0aec04682b516016abe9b81f6efcbbef97b1c3b2
SHA1 (patch-libavdevice_Makefile) = 526efd20021068245d8904c0d55508a540ae4054
SHA1 (patch-libavdevice_alldevices.c) = a9e2a2027fb2c18d5509b68deb5fd8523305dfc7
SHA1 (patch-libavdevice_sunau.c) = 554a5fc77c0e94828e9eadc7f1f9d4067a76d4ae
SHA1 (patch-libavdevice_sunau.h) = 2678d87f81e7b3faa42b5cc9814e373c4ad812f6
SHA1 (patch-libavdevice_sunau__dec.c) = d2fc01e941c68ab8b6f5e0b98ee536a32cc56bdc
SHA1 (patch-libavdevice_sunau__enc.c) = efe765b99ad6379d0237c619ac0dce41306431be
SHA1 (patch-libavutil_macros.h) = 7d9770f018a2207d2dcb1fe057564e30be51fd42
SHA1 (patch-libavutil_x86_asm.h) = 8f48f9e8ec08b5176bb40fc0021f3bb913dbef22
SHA1 (patch-libavutil_x86_cpu.c) = 9c97e68fde0fcb19741e034a803d509040ea4487

File Added: pkgsrc/multimedia/ffmpeg6/options.mk
# $NetBSD: options.mk,v 1.1 2023/06/02 16:44:06 wiz Exp $

PKG_OPTIONS_VAR=		PKG_OPTIONS.ffmpeg6
PKG_OPTIONS_OPTIONAL_GROUPS=	ssl
PKG_OPTIONS_GROUP.ssl=		gnutls mbedtls openssl

PKG_SUPPORTED_OPTIONS=	ass aom bluray doc fdk-aac fontconfig freetype jack \
			lame libvpx libwebp opencore-amr opus pulseaudio rav1e rpi rtmp \
			speex tesseract theora vorbis x11 x264 x265 xvid
PKG_SUGGESTED_OPTIONS=	ass aom bluray freetype fontconfig gnutls lame \
			libvpx libwebp opus speex theora vorbis x11 x264 x265 xvid

PLIST_VARS+=		doc

# Add VDPAU if it is available
.include "../../multimedia/libvdpau/available.mk"
.if ${VDPAU_AVAILABLE} == "yes"
PKG_SUPPORTED_OPTIONS+= vdpau
PKG_SUGGESTED_OPTIONS+=	vdpau
.endif

# Add VAAPI if it is available
.include "../../multimedia/libva/available.mk"
.if ${VAAPI_AVAILABLE} == "yes"
PKG_SUPPORTED_OPTIONS+= vaapi
PKG_SUGGESTED_OPTIONS+=	vaapi
.endif

.include "../../mk/bsd.options.mk"

# Fontconfig
.if !empty(PKG_OPTIONS:Mfontconfig)
CONFIGURE_ARGS+=	--enable-fontconfig
.include "../../fonts/fontconfig/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-fontconfig
.endif

# freetype option
.if !empty(PKG_OPTIONS:Mfreetype)
CONFIGURE_ARGS+=	--enable-libfreetype
.include "../../graphics/freetype2/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libfreetype
.endif

# ass option
.if !empty(PKG_OPTIONS:Mass)
CONFIGURE_ARGS+=	--enable-libass
.include "../../multimedia/libass/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libass
.endif

# av1 option with libaom
.if !empty(PKG_OPTIONS:Maom)
CONFIGURE_ARGS+=	--enable-libaom
BUILDLINK_API_DEPENDS.libaom+=	libaom>=1.0.0nb1
.include "../../multimedia/libaom/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libaom
.endif

# av1 option with rav1e
.if !empty(PKG_OPTIONS:Mrav1e)
CONFIGURE_ARGS+=	--enable-librav1e
.include "../../multimedia/rav1e/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-librav1e
.endif

.if !empty(PKG_OPTIONS:Maom) || !empty(PKG_OPTIONS:Mrav1e)
CONFIGURE_ARGS+=	--enable-libdav1d
.include "../../multimedia/dav1d/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libdav1d
.endif

# doc option
.if !empty(PKG_OPTIONS:Mdoc)
PLIST.doc=		yes
USE_TOOLS+=		texi2html
CONFIGURE_ARGS+=	--enable-htmlpages
.else
CONFIGURE_ARGS+=	--disable-htmlpages
.endif

# Fraunhofer FDK AAC codec support
.if !empty(PKG_OPTIONS:Mfdk-aac)
RESTRICTED=		ffmpeg built with fdk-aac combines GPL and GPL-incompatible code
NO_BIN_ON_CDROM=	${RESTRICTED}
NO_BIN_ON_FTP=		${RESTRICTED}
CONFIGURE_ARGS+=	--enable-libfdk_aac
CONFIGURE_ARGS+=	--enable-nonfree
.include "../../audio/fdk-aac/buildlink3.mk"
.endif

# GnuTLS support
.if !empty(PKG_OPTIONS:Mgnutls)
CONFIGURE_ARGS+=	--enable-gnutls
.include "../../security/gnutls/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-gnutls
.endif

# mbedTLS support
.if !empty(PKG_OPTIONS:Mmbedtls)
CONFIGURE_ARGS+=	--enable-mbedtls
# Apache License 2.0 is incompatible with (L)GPL versions before 3
CONFIGURE_ARGS+=	--enable-version3
ADDITIONAL_LICENSE+=	AND gnu-lgpl-v3
.include "../../security/mbedtls/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-mbedtls
.endif

# opencore-amr option
.if !empty(PKG_OPTIONS:Mopencore-amr)
CONFIGURE_ARGS+=	--enable-libopencore-amrnb
CONFIGURE_ARGS+=	--enable-libopencore-amrwb
# Apache License 2.0 is incompatible with (L)GPL versions before 3
CONFIGURE_ARGS+=	--enable-version3
ADDITIONAL_LICENSE+=	AND gnu-lgpl-v3
.include "../../audio/opencore-amr/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libopencore-amrnb
CONFIGURE_ARGS+=	--disable-libopencore-amrwb
.endif

# OpenSSL support
.if !empty(PKG_OPTIONS:Mopenssl)
CONFIGURE_ARGS+=	--enable-nonfree
CONFIGURE_ARGS+=	--enable-openssl
.include "../../security/openssl/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-openssl
.endif

# jack option
.if !empty(PKG_OPTIONS:Mjack)
CONFIGURE_ARGS+=	--enable-libjack
.include "../../audio/jack/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libjack
.endif

# pulseaudio option
.if !empty(PKG_OPTIONS:Mpulseaudio)
CONFIGURE_ARGS+=	--enable-libpulse
.include "../../audio/pulseaudio/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libpulse
.endif

# RTMP support via librtmp
.if !empty(PKG_OPTIONS:Mrtmp)
CONFIGURE_ARGS+=	--enable-librtmp
.include "../../net/rtmpdump/buildlink3.mk"
.endif

# OCR filter using Tesseract
.if !empty(PKG_OPTIONS:Mtesseract)
CONFIGURE_ARGS+=	--enable-libtesseract
.include "../../graphics/tesseract/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libtesseract
.endif

# OGG Theora support
.if !empty(PKG_OPTIONS:Mtheora)
CONFIGURE_ARGS+=	--enable-libtheora
.include "../../multimedia/libtheora/buildlink3.mk"
.endif

# OGG Vorbis support
.if !empty(PKG_OPTIONS:Mvorbis)
CONFIGURE_ARGS+=	--enable-libvorbis
.include "../../audio/libvorbis/buildlink3.mk"
.endif

# LAME MP3 encoder
.if !empty(PKG_OPTIONS:Mlame)
# "lame-3.98" isn't compatible with "ffmpeg" which breaks audio encoding.
BUILDLINK_API_DEPENDS.lame+= lame>=3.98.2nb1
CONFIGURE_ARGS+=	--enable-libmp3lame
.include "../../audio/lame/buildlink3.mk"
.endif

# OPUS support
.if !empty(PKG_OPTIONS:Mopus)
CONFIGURE_ARGS+=	--enable-libopus
.include "../../audio/libopus/buildlink3.mk"
.endif

# Speex support
.if !empty(PKG_OPTIONS:Mspeex)
CONFIGURE_ARGS+=	--enable-libspeex
.include "../../audio/speex/buildlink3.mk"
.endif

# Raspberry Pi support
.if !empty(PKG_OPTIONS:Mrpi)
CONFIGURE_ARGS+=	--enable-omx-rpi
CONFIGURE_ARGS+=	--enable-mmal
SUBST_CLASSES+=		vc
SUBST_STAGE.vc=		pre-configure
SUBST_MESSAGE.vc=	Fixing path to VideoCore libraries.
SUBST_FILES.vc=		configure
SUBST_SED.vc+=		-e 's;-isystem/opt/vc;-I${PREFIX};g'
SUBST_SED.vc+=		-e 's;/opt/vc;${PREFIX};g'
.include "../../misc/raspberrypi-userland/buildlink3.mk"
.endif

# XviD support
.if !empty(PKG_OPTIONS:Mxvid)
CONFIGURE_ARGS+=	--enable-libxvid
.include "../../multimedia/xvidcore/buildlink3.mk"
.endif

# x264 support
.if !empty(PKG_OPTIONS:Mx264)
BUILDLINK_API_DEPENDS.x264+=	x264>=20220601
CONFIGURE_ARGS+=	--enable-libx264
.include "../../multimedia/x264/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libx264
.endif

# x265 support
.if !empty(PKG_OPTIONS:Mx265)
CONFIGURE_ARGS+=	--enable-libx265
.include "../../multimedia/x265/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libx265
.endif

# VDPAU support
.if !empty(PKG_OPTIONS:Mvdpau) && !empty(PKG_OPTIONS:Mx11)
CONFIGURE_ARGS+=	--enable-vdpau
.include "../../multimedia/libvdpau/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-vdpau
.endif

# VAAPI support
.if !empty(PKG_OPTIONS:Mvaapi) && !empty(PKG_OPTIONS:Mx11)
CONFIGURE_ARGS+=	--enable-vaapi
.include "../../multimedia/libva/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-vaapi
.endif

# VPX support
.if !empty(PKG_OPTIONS:Mlibvpx)
CONFIGURE_ARGS+=	--enable-libvpx
.include "../../multimedia/libvpx/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libvpx
.endif

# WEBP support
.if !empty(PKG_OPTIONS:Mlibwebp)
CONFIGURE_ARGS+=	--enable-libwebp
.include "../../graphics/libwebp/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libwebp
.endif

# X11 screen capture support using libxcb
.if !empty(PKG_OPTIONS:Mx11)
CONFIGURE_ARGS+=	--enable-libxcb
CONFIGURE_ARGS+=	--enable-libxcb-shape
CONFIGURE_ARGS+=	--enable-libxcb-shm
CONFIGURE_ARGS+=	--enable-libxcb-xfixes
.include "../../x11/libxcb/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libxcb
.endif

# Bluray support
.if !empty(PKG_OPTIONS:Mbluray)
CONFIGURE_ARGS+=	--enable-libbluray
.include "../../multimedia/libbluray/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-libbluray
.endif

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-Makefile
$NetBSD: patch-Makefile,v 1.1 2023/06/02 16:44:06 wiz Exp $

Do "install -c".

--- Makefile.orig	2018-04-20 10:02:55.000000000 +0000
+++ Makefile
@@ -125,7 +125,7 @@ install-libs: install-libs-yes
 
 install-data: $(DATA_FILES)
 	$(Q)mkdir -p "$(DATADIR)"
-	$(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)"
+	$(INSTALL) -c -m 644 $(DATA_FILES) "$(DATADIR)"
 
 uninstall: uninstall-data uninstall-headers uninstall-libs uninstall-pkgconfig
 

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-configure
$NetBSD: patch-configure,v 1.1 2023/06/02 16:44:06 wiz Exp $

Sun audio support.

Enable PIC and section_data_rel_ro on NetBSD, even on i386,
to avoid text relocations.

Fix install_name_dir on Darwin.

Do not use 'rsync'.

--- configure.orig	2022-04-04 14:40:22.000000000 +0000
+++ configure
@@ -2196,6 +2196,7 @@ HEADERS_LIST="
     sys_resource_h
     sys_select_h
     sys_soundcard_h
+    sys_audioio_h
     sys_time_h
     sys_un_h
     sys_videoio_h
@@ -2337,7 +2338,6 @@ TOOLCHAIN_FEATURES="
     inline_asm_labels
     inline_asm_nonlocal_labels
     pragma_deprecated
-    rsync_contimeout
     symver_asm_label
     symver_gnu_asm
     vfp_args
@@ -3521,6 +3521,8 @@ opengl_outdev_deps="opengl"
 opengl_outdev_suggest="sdl2"
 oss_indev_deps_any="sys_soundcard_h"
 oss_outdev_deps_any="sys_soundcard_h"
+sunau_indev_deps_any="sys_audioio_h"
+sunau_outdev_deps_any="sys_audioio_h"
 pulse_indev_deps="libpulse"
 pulse_outdev_deps="libpulse"
 sdl2_outdev_deps="sdl2"
@@ -5491,6 +5493,8 @@ case $target_os in
         ;;
     netbsd)
         disable symver
+        enable section_data_rel_ro
+        enable pic
         oss_indev_extralibs="-lossaudio"
         oss_outdev_extralibs="-lossaudio"
         enabled gcc || check_ldflags -Wl,-zmuldefs
@@ -5516,7 +5520,7 @@ case $target_os in
         ;;
     darwin)
         enabled ppc && add_asflags -force_cpusubtype_ALL
-        install_name_dir_default='$(SHLIBDIR)'
+        install_name_dir_default=$shlibdir
         SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(INSTALL_NAME_DIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
         enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
         strip="${strip} -x"
@@ -5889,10 +5893,13 @@ done
 check_cc pragma_deprecated "" '_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")'
 
 # The global variable ensures the bits appear unchanged in the object file.
-test_cc <<EOF || die "endian test failed"
-unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
+test_exec <<EOF || enable bigendian
+int main()
+{
+ long one = 1;
+ return !(*((char *)(&one)));
+}
 EOF
-od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
 
 check_cc const_nan math.h "struct { double d; } static const bar[] = { { NAN } }"
 
@@ -6305,6 +6312,7 @@ check_headers malloc.h
 check_headers mftransform.h
 check_headers net/udplite.h
 check_headers poll.h
+check_headers sys/audioio.h
 check_headers sys/param.h
 check_headers sys/resource.h
 check_headers sys/select.h
@@ -6783,7 +6791,6 @@ enabled makeinfo \
 disabled makeinfo_html && texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
 perl -v            > /dev/null 2>&1 && enable perl      || disable perl
 pod2man --help     > /dev/null 2>&1 && enable pod2man   || disable pod2man
-rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
 xmllint --version  > /dev/null 2>&1 && enable xmllint   || disable xmllint
 
 # check V4L2 codecs available in the API

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-doc_Makefile
$NetBSD: patch-doc_Makefile,v 1.1 2023/06/02 16:44:06 wiz Exp $

Make man pages and html docs versioned.

--- doc/Makefile.orig	2016-02-15 02:29:37.000000000 +0000
+++ doc/Makefile
@@ -14,8 +14,8 @@ COMPONENTS-$(CONFIG_AVFORMAT)   += ffmpe
 COMPONENTS-$(CONFIG_AVDEVICE)   += ffmpeg-devices
 COMPONENTS-$(CONFIG_AVFILTER)   += ffmpeg-filters
 
-MANPAGES1   = $(AVPROGS-yes:%=doc/%.1)    $(AVPROGS-yes:%=doc/%-all.1)    $(COMPONENTS-yes:%=doc/%.1)
-MANPAGES3   = $(LIBRARIES-yes:%=doc/%.3)
+MANPAGES1   = $(AVPROGS-yes:%=doc/%6.1)    $(AVPROGS-yes:%=doc/%-all6.1)    $(COMPONENTS-yes:%=doc/%6.1)
+MANPAGES3   = $(LIBRARIES-yes:%=doc/%6.3)
 MANPAGES    = $(MANPAGES1) $(MANPAGES3)
 PODPAGES    = $(AVPROGS-yes:%=doc/%.pod)  $(AVPROGS-yes:%=doc/%-all.pod)  $(COMPONENTS-yes:%=doc/%.pod)  $(LIBRARIES-yes:%=doc/%.pod)
 HTMLPAGES   = $(AVPROGS-yes:%=doc/%.html) $(AVPROGS-yes:%=doc/%-all.html) $(COMPONENTS-yes:%=doc/%.html) $(LIBRARIES-yes:%=doc/%.html) \
@@ -114,10 +114,10 @@ doc/%-all.pod: doc/%.texi $(SRC_PATH)/do
 	$(Q)$(TEXIDEP)
 	$(M)perl $(SRC_PATH)/doc/texi2pod.pl -Dconfig-all=yes -Idoc $< $@
 
-doc/%.1 doc/%.3: TAG = MAN
-doc/%.1: doc/%.pod $(GENTEXI)
+doc/%6.1 doc/%6.3: TAG = MAN
+doc/%6.1: doc/%.pod $(GENTEXI)
 	$(M)pod2man --section=1 --center=" " --release=" " --date=" " $< > $@
-doc/%.3: doc/%.pod $(GENTEXI)
+doc/%6.3: doc/%.pod $(GENTEXI)
 	$(M)pod2man --section=3 --center=" " --release=" " --date=" " $< > $@
 
 $(DOCS) doc/doxy/html: | doc/

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-doc_general__contents.texi
$NetBSD: patch-doc_general__contents.texi,v 1.1 2023/06/02 16:44:06 wiz Exp $

Add Sun Audio.

--- doc/general_contents.texi.orig	2021-04-10 06:55:24.000000000 +0000
+++ doc/general_contents.texi
@@ -1419,6 +1419,7 @@ performance on systems without hardware 
 @item OSS               @tab X      @tab X
 @item PulseAudio        @tab X      @tab X
 @item SDL               @tab        @tab X
+@item Sun Audio         @tab        @tab X
 @item Video4Linux2      @tab X      @tab X
 @item VfW capture       @tab X      @tab
 @item X11 grabbing      @tab X      @tab

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-doc_indevs.texi
$NetBSD: patch-doc_indevs.texi,v 1.1 2023/06/02 16:44:06 wiz Exp $

* Add sunau documentation.

--- doc/indevs.texi.orig	2019-12-31 21:35:22.000000000 +0000
+++ doc/indevs.texi
@@ -1282,6 +1282,35 @@ Set the number of channels. Default is 2
 
 @end table
 
+@section sunau
+
+Solaris/NetBSD audio input device.
+
+The filename to provide to the input device is the device node
+representing the Sun input device, and is usually set to
+@file{/dev/audio0}.
+
+For example to grab from @file{/dev/audio0} using @command{ffmpeg} use the
+command:
+@example
+ffmpeg -f sunau -i /dev/audio0 /tmp/oss.wav
+@end example
+
+@subsection Options
+
+@table @option
+
+@item buffer_samples
+Set the size of the audio buffer in samples. Default is 32.
+
+@item sample_rate
+Set the sample rate in Hz. Default is 48000.
+
+@item channels
+Set the number of channels. Default is 2.
+
+@end table
+
 @section video4linux2, v4l2
 
 Video4Linux2 input video device.

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-doc_outdevs.texi
$NetBSD: patch-doc_outdevs.texi,v 1.1 2023/06/02 16:44:06 wiz Exp $

* Add sunau documentation.

--- doc/outdevs.texi.orig	2019-12-31 21:35:22.000000000 +0000
+++ doc/outdevs.texi
@@ -393,6 +393,17 @@ ffmpeg -i INPUT -c:v rawvideo -pix_fmt y
 
 sndio audio output device.
 
+@section sunau
+
+Solaris/NetBSD audio output device.
+
+@subsection Options
+@table @option
+
+@item buffer_samples
+Set the size of the audio buffer in samples. Default is 32.
+@end table
+
 @section v4l2
 
 Video4Linux2 output device.

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_Makefile
$NetBSD: patch-libavdevice_Makefile,v 1.1 2023/06/02 16:44:06 wiz Exp $

Sun audio support.

--- libavdevice/Makefile.orig	2019-12-31 21:35:24.000000000 +0000
+++ libavdevice/Makefile
@@ -43,6 +43,8 @@ OBJS-$(CONFIG_PULSE_OUTDEV)             
 OBJS-$(CONFIG_SDL2_OUTDEV)               += sdl2.o
 OBJS-$(CONFIG_SNDIO_INDEV)               += sndio_dec.o sndio.o
 OBJS-$(CONFIG_SNDIO_OUTDEV)              += sndio_enc.o sndio.o
+OBJS-$(CONFIG_SUNAU_INDEV)               += sunau_dec.o sunau.o
+OBJS-$(CONFIG_SUNAU_OUTDEV)              += sunau_enc.o sunau.o
 OBJS-$(CONFIG_V4L2_INDEV)                += v4l2.o v4l2-common.o timefilter.o
 OBJS-$(CONFIG_V4L2_OUTDEV)               += v4l2enc.o v4l2-common.o
 OBJS-$(CONFIG_VFWCAP_INDEV)              += vfwcap.o

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_alldevices.c
$NetBSD: patch-libavdevice_alldevices.c,v 1.1 2023/06/02 16:44:06 wiz Exp $

Sun audio support.

--- libavdevice/alldevices.c.orig	2023-02-27 20:43:45.000000000 +0000
+++ libavdevice/alldevices.c
@@ -48,6 +48,8 @@ extern const AVInputFormat  ff_pulse_dem
 extern const FFOutputFormat ff_pulse_muxer;
 extern const FFOutputFormat ff_sdl2_muxer;
 extern const AVInputFormat  ff_sndio_demuxer;
+extern const AVInputFormat  ff_sunau_demuxer;
+extern const AVOutputFormat ff_sunau_muxer;
 extern const FFOutputFormat ff_sndio_muxer;
 extern const AVInputFormat  ff_v4l2_demuxer;
 extern const FFOutputFormat ff_v4l2_muxer;

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_sunau.c
$NetBSD: patch-libavdevice_sunau.c,v 1.1 2023/06/02 16:44:06 wiz Exp $

Sun audio support.

--- libavdevice/sunau.c.orig	2023-06-02 16:15:11.549198344 +0000
+++ libavdevice/sunau.c
@@ -0,0 +1,103 @@
+/*
+ * Solaris/NetBSD play and grab interface
+ * Copyright (c) 2020 Yorick Hardy
+ * Copyright (c) 2020 Nia Alarie <nia@NetBSD.org>
+ *
+ * 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 "config.h"
+
+#include <string.h>
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/audioio.h>
+#include <sys/ioctl.h>
+
+#include "libavutil/file_open.h"
+#include "libavutil/log.h"
+
+#include "libavcodec/avcodec.h"
+#include "avdevice.h"
+
+#include "sunau.h"
+
+int ff_sunau_audio_open(AVFormatContext *s1, int is_output,
+                          const char *audio_device)
+{
+    SunAudioData *s = s1->priv_data;
+    struct audio_info info;
+    struct audio_prinfo *prinfo;
+    int audio_fd, err;
+
+    audio_fd = avpriv_open(audio_device, is_output ? O_WRONLY : O_RDONLY);
+    if (audio_fd < 0) {
+        av_log(s1, AV_LOG_ERROR, "%s: %s\n", audio_device, av_err2str(AVERROR(errno)));
+        return AVERROR(EIO);
+    }
+
+    AUDIO_INITINFO(&info);
+
+#ifdef AUMODE_PLAY /* BSD extension */
+    info.mode = is_output ? AUMODE_PLAY : AUMODE_RECORD;
+#endif
+
+    prinfo = is_output ? &info.play : &info.record;
+
+    prinfo->encoding = AUDIO_ENCODING_LINEAR;
+    prinfo->precision = 16;
+    prinfo->sample_rate = s->sample_rate;
+    prinfo->channels = s->channels;
+
+    if ((err = ioctl(audio_fd, AUDIO_SETINFO, &info)) < 0) {
+        av_log(s1, AV_LOG_ERROR, "AUDIO_SETINFO: %s\n", av_err2str(AVERROR(errno)));
+        goto fail;
+    }
+
+    if ((err = ioctl(audio_fd, AUDIO_GETINFO, &info)) < 0) {
+        av_log(s1, AV_LOG_ERROR, "AUDIO_GETINFO: %s\n", av_err2str(AVERROR(errno)));
+        goto fail;
+    }
+
+    s->fd = audio_fd;
+#if HAVE_BIGENDIAN
+    s->codec_id = AV_CODEC_ID_PCM_S16BE;
+#else
+    s->codec_id = AV_CODEC_ID_PCM_S16LE;
+#endif
+    s->precision = prinfo->precision;
+    s->sample_rate = prinfo->sample_rate;
+    s->channels = prinfo->channels;
+    s->blocksize = s->buffer_samples * prinfo->precision * prinfo->channels;
+
+    if ((s->buffer = malloc(s->blocksize)) == NULL) {
+        av_log(s1, AV_LOG_ERROR, "malloc: %s\n", av_err2str(AVERROR(errno)));
+        goto fail;
+    }
+
+    return 0;
+ fail:
+    close(audio_fd);
+    return AVERROR(EIO);
+}
+
+int ff_sunau_audio_close(SunAudioData *s)
+{
+    close(s->fd);
+    return 0;
+}

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_sunau.h
$NetBSD: patch-libavdevice_sunau.h,v 1.1 2023/06/02 16:44:06 wiz Exp $

Sun audio support.

--- libavdevice/sunau.h.orig	2020-03-20 20:53:01.579839153 +0000
+++ libavdevice/sunau.h
@@ -0,0 +1,48 @@
+/*
+ * Solaris/NetBSD play and grab interface
+ * Copyright (c) 2020 Yorick Hardy
+ * Copyright (c) 2020 Nia Alarie <nia@NetBSD.org>
+ *
+ * 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
+ */
+
+#ifndef AVDEVICE_SUNAU_H
+#define AVDEVICE_SUNAU_H
+
+#include "libavcodec/avcodec.h"
+
+#include "libavformat/avformat.h"
+
+typedef struct SunAudioData {
+    AVClass *class;
+    int fd;
+    int buffer_samples;
+    unsigned int sample_rate;
+    unsigned int channels;
+    unsigned int precision;
+    size_t blocksize;
+    enum AVCodecID codec_id;
+    uint8_t *buffer;
+    size_t buffer_ptr;
+} SunAudioData;
+
+int ff_sunau_audio_open(AVFormatContext *s1, int is_output,
+                        const char *audio_device);
+
+int ff_sunau_audio_close(SunAudioData *s);
+
+#endif /* AVDEVICE_SUNAU_H */

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_sunau__dec.c
$NetBSD: patch-libavdevice_sunau__dec.c,v 1.1 2023/06/02 16:44:06 wiz Exp $

Sun audio support.

--- libavdevice/sunau_dec.c.orig	2020-03-20 20:53:01.607986932 +0000
+++ libavdevice/sunau_dec.c
@@ -0,0 +1,138 @@
+/*
+ * Solaris/NetBSD play and grab interface
+ * Copyright (c) 2020 Yorick Hardy
+ * Copyright (c) 2020 Nia Alarie <nia@NetBSD.org>
+ *
+ * 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 "config.h"
+
+#include <stdint.h>
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <poll.h>
+#include <sys/audioio.h>
+#include <sys/ioctl.h>
+
+#include "libavutil/internal.h"
+#include "libavutil/opt.h"
+#include "libavutil/time.h"
+
+#include "libavcodec/avcodec.h"
+
+#include "avdevice.h"
+#include "libavformat/internal.h"
+
+#include "sunau.h"
+
+static int audio_read_header(AVFormatContext *s1)
+{
+    SunAudioData *s = s1->priv_data;
+    AVStream *st;
+
+    st = avformat_new_stream(s1, NULL);
+    if (!st) {
+        return AVERROR(ENOMEM);
+    }
+
+    if (ff_sunau_audio_open(s1, 0, s1->url) < 0) {
+        return AVERROR(EIO);
+    }
+
+    /* take real parameters */
+    st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
+    st->codecpar->codec_id = s->codec_id;
+    st->codecpar->sample_rate = s->sample_rate;
+    st->codecpar->channels = s->channels;
+
+    avpriv_set_pts_info(st, 64, 1, 1000000);  /* 64 bits pts in us */
+
+    return 0;
+}
+
+static int audio_read_packet(AVFormatContext *s1, AVPacket *pkt)
+{
+    SunAudioData *s = s1->priv_data;
+    struct audio_info info;
+    int ret;
+    long bdelay;
+    int64_t cur_time;
+
+    if ((ret = av_new_packet(pkt, s->blocksize)) < 0)
+        return ret;
+
+    ret = read(s->fd, pkt->data, pkt->size);
+    if (ret <= 0) {
+        av_packet_unref(pkt);
+        pkt->size = 0;
+        return ret < 0 ? AVERROR(errno) : AVERROR_EOF;
+    }
+
+    /* compute pts of the start of the packet */
+    cur_time = av_gettime();
+    bdelay = ret;
+
+#ifdef AUDIO_GETBUFINFO /* BSD extension */
+    if (ioctl(s->fd, AUDIO_GETBUFINFO, &info) == 0) {
+        bdelay += info.record.seek;
+    }
+#endif
+
+    /* subtract time represented by the number of bytes in the audio fifo */
+    cur_time -= (bdelay * 1000000LL) / (s->sample_rate * s->channels * s->precision);
+
+    /* convert to wanted units */
+    pkt->pts = cur_time;
+
+    return 0;
+}
+
+static int audio_read_close(AVFormatContext *s1)
+{
+    SunAudioData *s = s1->priv_data;
+
+    ff_sunau_audio_close(s);
+    return 0;
+}
+
+static const AVOption options[] = {
+    { "buffer_samples", "", offsetof(SunAudioData, buffer_samples), AV_OPT_TYPE_INT, {.i64 = 32},    1,     INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
+    { "sample_rate",    "", offsetof(SunAudioData, sample_rate),    AV_OPT_TYPE_INT, {.i64 = 48000}, 1000,  192000,  AV_OPT_FLAG_DECODING_PARAM },
+    { "channels",       "", offsetof(SunAudioData, channels),       AV_OPT_TYPE_INT, {.i64 = 2},     1,     12,      AV_OPT_FLAG_DECODING_PARAM },
+    { NULL },
+};
+
+static const AVClass sunau_demuxer_class = {
+    .class_name     = "Sun/NetBSD audio demuxer",
+    .item_name      = av_default_item_name,
+    .option         = options,
+    .version        = LIBAVUTIL_VERSION_INT,
+    .category       = AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT,
+};
+
+AVInputFormat ff_sunau_demuxer = {
+    .name           = "sunau",
+    .long_name      = NULL_IF_CONFIG_SMALL("Sun/NetBSD audio capture"),
+    .priv_data_size = sizeof(SunAudioData),
+    .read_header    = audio_read_header,
+    .read_packet    = audio_read_packet,
+    .read_close     = audio_read_close,
+    .flags          = AVFMT_NOFILE,
+    .priv_class     = &sunau_demuxer_class,
+};

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-libavdevice_sunau__enc.c
$NetBSD: patch-libavdevice_sunau__enc.c,v 1.1 2023/06/02 16:44:06 wiz Exp $

Sun audio support.

--- libavdevice/sunau_enc.c.orig	2020-03-20 20:53:01.636938971 +0000
+++ libavdevice/sunau_enc.c
@@ -0,0 +1,114 @@
+/*
+ * Solaris/NetBSD play and grab interface
+ * Copyright (c) 2020 Yorick Hardy
+ * Copyright (c) 2020 Nia Alarie <nia@NetBSD.org>
+ *
+ * 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 "config.h"
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/audioio.h>
+#include <sys/ioctl.h>
+
+#include "libavutil/internal.h"
+
+#include "libavcodec/avcodec.h"
+
+#include "avdevice.h"
+#include "libavformat/internal.h"
+
+#include "sunau.h"
+
+static int audio_write_header(AVFormatContext *s1)
+{
+    SunAudioData *s = s1->priv_data;
+    AVStream *st;
+
+    st = s1->streams[0];
+    s->sample_rate = st->codecpar->sample_rate;
+    s->channels = st->codecpar->channels;
+    s->codec_id = st->codecpar->codec_id;
+    return ff_sunau_audio_open(s1, 1, s1->url) < 0 ? AVERROR(EIO) : 0;
+}
+
+static int audio_write_packet(AVFormatContext *s1, AVPacket *pkt)
+{
+    SunAudioData *s = s1->priv_data;
+    unsigned int len, size = pkt->size;
+    uint8_t *buf = pkt->data;
+    int ret;
+
+    while (size > 0) {
+        len = FFMIN(s->blocksize - s->buffer_ptr, size);
+        memcpy(s->buffer + s->buffer_ptr, buf, len);
+        s->buffer_ptr += len;
+        if (s->buffer_ptr >= s->blocksize) {
+            for (;;) {
+                ret = write(s->fd, s->buffer, s->blocksize);
+                if (ret > 0)
+                    break;
+                if (ret < 0 && (errno != EAGAIN && errno != EINTR))
+                    return AVERROR(EIO);
+            }
+            s->buffer_ptr = 0;
+        }
+        buf += len;
+        size -= len;
+    }
+    return 0;
+}
+
+static int audio_write_trailer(AVFormatContext *s1)
+{
+    SunAudioData *s = s1->priv_data;
+
+    ff_sunau_audio_close(s);
+    return 0;
+}
+
+static const AVOption options[] = {
+    { "buffer_samples", "", offsetof(SunAudioData, buffer_samples), AV_OPT_TYPE_INT, {.i64 = 32}, 1, 192000, AV_OPT_FLAG_DECODING_PARAM },
+    { NULL },
+};
+
+static const AVClass sunau_muxer_class = {
+    .class_name     = "Sun/NetBSD audio muxer",
+    .item_name      = av_default_item_name,
+    .option         = options,
+    .version        = LIBAVUTIL_VERSION_INT,
+    .category       = AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT,
+};
+
+AVOutputFormat ff_sunau_muxer = {
+    .name           = "sunau",
+    .long_name      = NULL_IF_CONFIG_SMALL("Sun/NetBSD audio playback"),
+    .priv_data_size = sizeof(SunAudioData),
+    /* XXX: we may need to support higher precisions in the future, but
+       right now this is what the kernel can handle natively */
+    /* XXX: find better solution with "preinit" method, needed also in
+       other formats */
+    .audio_codec    = AV_NE(AV_CODEC_ID_PCM_S16BE, AV_CODEC_ID_PCM_S16LE),
+    .video_codec    = AV_CODEC_ID_NONE,
+    .write_header   = audio_write_header,
+    .write_packet   = audio_write_packet,
+    .write_trailer  = audio_write_trailer,
+    .flags          = AVFMT_NOFILE,
+    .priv_class     = &sunau_muxer_class,
+};

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-libavutil_macros.h
$NetBSD: patch-libavutil_macros.h,v 1.1 2023/06/02 16:44:06 wiz Exp $

Add required int includes on various opensource platforms.

--- libavutil/macros.h.orig	2022-01-14 18:45:40.000000000 +0000
+++ libavutil/macros.h
@@ -27,6 +27,22 @@
 
 #include "libavutil/avconfig.h"
 
+#if defined(__cplusplus)
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__linux__)
+#undef _STDINT_H_
+#undef _SYS_STDINT_H_
+#undef _STDINT_H
+#undef _GCC_WRAP_STDINT_H
+#ifndef __STDC_CONSTANT_MACROS
+#define __STDC_CONSTANT_MACROS
+#endif
+#include <stdint.h>
+#endif /* FreeBSD | OpenBSD | linux */
+#if defined(__DragonFly__) || defined(__NetBSD__)
+#include <machine/int_const.h>
+#endif /* DragonFly | NetBSD */
+#endif /* __cplusplus */
+
 #if AV_HAVE_BIGENDIAN
 #   define AV_NE(be, le) (be)
 #else

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-libavutil_x86_asm.h
$NetBSD: patch-libavutil_x86_asm.h,v 1.1 2023/06/02 16:44:06 wiz Exp $

Avoid SunOS regset.h definition for REG_SP

--- libavutil/x86/asm.h.orig	2016-10-28 18:31:25.000000000 +0000
+++ libavutil/x86/asm.h
@@ -27,6 +27,11 @@
 typedef struct xmm_reg { uint64_t a, b; } xmm_reg;
 typedef struct ymm_reg { uint64_t a, b, c, d; } ymm_reg;
 
+/* avoid SunOS regset.h definition for REG_SP */
+#if defined (__sun) && defined (REG_SP)
+#undef REG_SP
+#endif
+
 #if ARCH_X86_64
 #    define FF_OPSIZE "q"
 #    define FF_REG_a "rax"

File Added: pkgsrc/multimedia/ffmpeg6/patches/patch-libavutil_x86_cpu.c
$NetBSD: patch-libavutil_x86_cpu.c,v 1.1 2023/06/02 16:44:06 wiz Exp $

Make a part of the code depend on GCC >= 4.2.

--- libavutil/x86/cpu.c.orig	2016-01-15 16:58:37.000000000 +0000
+++ libavutil/x86/cpu.c
@@ -116,6 +116,7 @@ int ff_get_cpu_flags_x86(void)
 #if HAVE_SSE
         if (std_caps & (1 << 25))
             rval |= AV_CPU_FLAG_SSE;
+#if !defined(__GNUC__) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
         if (std_caps & (1 << 26))
             rval |= AV_CPU_FLAG_SSE2;
         if (ecx & 1)
@@ -138,6 +139,7 @@ int ff_get_cpu_flags_x86(void)
             }
         }
 #endif /* HAVE_AVX */
+#endif /* gcc >= 4.2 */
 #endif /* HAVE_SSE */
     }
     if (max_std_level >= 7) {