[ 背景 ]
FFmpeg7.xを " --enable-amf " 付きでコンパイルする場合、amf-headers がインストールされている
必要があるが、2025年1月19日現在のFFmpeg最新Gitをコンパイルすると、avcodec/amfenc の
B-Frame support 関連でエラーになり、コンパイルに失敗する。
これを回避するには amf-headers-1.4.35 に対策パッチをあてて更新する必要がある。
以下は、その amf-headers-1.4.35 対策パッケージの詳細。
Here is a patch to amf-headers-1.4.35
-- upstream source: Add Interface for AV1 B-frame Support (Commit 8f5a645)
[code] 001_AV1_B-frame-support.patch
|
diff -Nru a/amf/public/include/components/VideoEncoderAV1.h b/amf/public/include/components/VideoEncoderAV1.h --- a/amf/public/include/components/VideoEncoderAV1.h 2024-12-30 22:01:35.454080599 +0900 +++ b/amf/public/include/components/VideoEncoderAV1.h 2024-12-30 21:52:36.161034517 +0900 @@ -356,6 +356,7 @@ #define AMF_VIDEO_ENCODER_AV1_CAP_MAX_NUM_TEMPORAL_LAYERS L"Av1CapMaxNumTemporalLayers" // amf_int64; default = N/A; The cap of maximum number of temporal layers #define AMF_VIDEO_ENCODER_AV1_CAP_MAX_NUM_LTR_FRAMES L"Av1CapMaxNumLTRFrames" // amf_int64; default = N/A; The cap of maximum number of LTR frames. This value is calculated based on current value of AMF_VIDEO_ENCODER_AV1_MAX_NUM_TEMPORAL_LAYERS. #define AMF_VIDEO_ENCODER_AV1_CAP_SUPPORT_TILE_OUTPUT L"AV1SupportTileOutput" // amf_bool; if tile output is supported +#define AMF_VIDEO_ENCODER_AV1_CAP_BFRAMES L"AV1BFrames" // amf_bool; if b frames are supported for AV1 #define AMF_VIDEO_ENCODER_AV1_CAP_SUPPORT_SMART_ACCESS_VIDEO L"Av1EncoderSupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video #define AMF_VIDEO_ENCODER_AV1_CAP_WIDTH_ALIGNMENT_FACTOR L"Av1WidthAlignmentFactor" // amf_int64; default = 1; The encoder capability for width alignment @@ -363,4 +364,9 @@ #define AMF_VIDEO_ENCODER_AV1_MULTI_HW_INSTANCE_ENCODE L"Av1MultiHwInstanceEncode" // amf_bool; flag to enable AV1 multi VCN encode. +// properties for Picture Management (VCN5 feature) +#define AMF_VIDEO_ENCODER_AV1_MAX_CONSECUTIVE_BPICTURES L"Av1MaxConsecutiveBPictures" // amf_int64; default 0 or 127, determined by AMF_VIDEO_ENCODER_AV1_CAP_BFRAMES. Maximum number of consecutive B frames for B frame encoding +#define AMF_VIDEO_ENCODER_AV1_B_PIC_PATTERN L"Av1BPicturesPattern" // amf_int64; default 0. Number of B frames for B frame encoding +#define AMF_VIDEO_ENCODER_AV1_ADAPTIVE_MINIGOP L"Av1AdaptiveMiniGop" // amf_bool; default false. Adaptive miniGOP size for B frame encoding + #endif //#ifndef AMF_VideoEncoderAV1_h |
[code] amf-headers.info (source file)
|
PRGNAM="amf-headers" VERSION="1.4.35" HOMEPAGE="https://github.com/GPUOpen-LibrariesAndSDKs/AMF" DOWNLOAD="https://github.com/GPUOpen-LibrariesAndSDKs/AMF/archive/v1.4.35/AMF-1.4.35.tar.gz" MD5SUM="c00b426ef66b6015470f6496664e609e" DOWNLOAD_x86_64="direct download link(s) of application source tarball(s), x86_64 only" MD5SUM_x86_64="MD5SUM_x86_64@" REQUIRES="%README%" MAINTAINER="JW(Shinichi Abe)" EMAIL="Fake_shin1-dot-abe_AT_nifty-dot-com |
[code] amf-headers.SlackBuild
|
#!/bin/bash # Slackware build script for AMF # Copyright 2024 JW(Shinichi Abe) <shin1.abe@nifty.com> # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=amf-headers SRCNAM=AMF VERSION=${VERSION:-1.4.35} BUILD=${BUILD:-2} TAG=${TAG:-jw} PKGTYPE=${PKGTYPE:-txz} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" exit 0 fi TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" else SLKCFLAGS="-O2" LIBDIRSUFFIX="" fi set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION tar xvf $CWD/$SRCNAM-$VERSION.tar.gz cd $SRCNAM-$VERSION # Add Interface for AV1 B-frame Support patch -p1 < $CWD/001_AV1_B-frame-support.patch --verbose || exit 1 chown -R root:root . find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ -o -perm 511 \) -exec chmod 755 {} \; -o \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ install -dm 755 $PKG/usr/include cp -dr --no-preserve=ownership amf/public/include $PKG/usr/include/AMF install -Dm 644 LICENSE.txt -t $PKG/usr/share/licenses/amf-headers/ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true find $PKG -name perllocal.pod \ -o -name ".packlist" \ -o -name "*.bs" \ | xargs rm -f mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a \ *.txt $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild # Copy the slack-desc (and a custom doinst.sh if necessary) into ./install mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE |
[code] slack-desc
|
# HOW TO EDIT THIS FILE: # The "handy ruler" below makes it easier to edit a package description. # Line up the first '|' above the ':' following the base package name, and # the '|' on the right side marks the last column you can put a character in. # You must make exactly 11 lines for the formatting to be correct. It's also # customary to leave one space after the ':' except on otherwise blank lines. |-----handy-ruler------------------------------------------------------| amf-headers: amf-headers (Header files for Advanced Media Framework (AMF) SDK) amf-headers: amf-headers: AMF is a light-weight, portable multimedia framework that abstracts amf-headers: away most of the platform and API-specific details and allows for amf-headers: easy implementation of multimedia applications using a variety of amf-headers: technologies, such as DirectX 11,OpenGL, and OpenCL and facilitates amf-headers: an efficient interop between them. amf-headers: amf-headers: HOME: https://github.com/GPUOpen-LibrariesAndSDKs/AMF amf-headers: amf-headers: |
![deepl-clip.sh で簡単翻訳 [更新:2025-04-29]](https://resize.blogsys.jp/fc265bdb808435596af7a249f59820084c144620/crop1/120x120_ffffff/https://livedoor.blogimg.jp/jw_slackware/imgs/0/d/0d2fff59-s.png)






