Package Details: ffmpeg-amd-full-git 7.2.r117451.g0f5592cfc7-1

Git Clone URL: https://aur.archlinux.org/ffmpeg-amd-full-git.git (read-only, click to copy)
Package Base: ffmpeg-amd-full-git
Description: Complete solution to record, convert and stream audio and video (all possible features for AMD; git version)
Upstream URL: https://www.ffmpeg.org/
Keywords: audio codec convert encoder media svt video
Licenses: LicenseRef-nonfree-and-unredistributable
Conflicts: ffmpeg
Provides: ffmpeg, ffmpeg-full, ffmpeg-full-git, ffmpeg-git, libavcodec.so, libavdevice.so, libavfilter.so, libavformat.so, libavutil.so, libpostproc.so, libswresample.so, libswscale.so
Submitter: clap22
Maintainer: nathanielcwm
Last Packager: nathanielcwm
Votes: 14
Popularity: 0.197460
First Submitted: 2018-11-20 15:20 (UTC)
Last Updated: 2024-10-10 14:08 (UTC)

Required by (1888)

Sources (8)

Pinned Comments

saburouta commented on 2023-04-26 18:45 (UTC)

I adopted this package to keep it from falling off, but I haven't had the chance to update it yet.

I think only patches 40 and 60 still work. I'm not sure the other even need to be updated. I've been building with just 40 and 60.

Latest Comments

1 2 3 4 5 6 .. 11 Next › Last »

Insprill commented on 2024-08-24 15:40 (UTC) (edited on 2024-08-24 15:41 (UTC) by Insprill)

Patch 050 doesn't apply for me - removing it from prepare lets everything build as expected.

scjet commented on 2024-06-20 02:32 (UTC) (edited on 2024-06-20 02:41 (UTC) by scjet)

Grabbed the latest ffmpeg-snapshot.tar.bz2 and dependencies -(some from arch official and some from AUR) and compiled the main encoders/decoders from ffmpeg's compilation web guide. So now I have a working ffmpeg7 in Arch.


PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --extra-libs="-lpthread -lm" --ld="g++" --bindir="$HOME/bin" --enable-gpl --enable-openssl --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-libpulse --enable-chromaprint --enable-frei0r --enable-libbluray --enable-libbs2b --enable-libcdio --enable-librubberband --enable-libspeex --enable-libtheora --enable-libfontconfig --enable-libfribidi --enable-libxml2 --enable-libxvid --enable-version3 --enable-libvidstab --enable-libcaca --enable-libopenmpt --enable-libgme  --enable-opengl --enable-librav1e --enable-libsvtav1 --enable-libsnappy --enable-libshine --enable-libtwolame --enable-libvo-amrwbenc --enable-libsoxr --enable-ladspa --enable-libvmaf && PATH="$HOME/bin:$PATH" make -j$(nproc) && make install && hash -r

./ffmpeg -version
ffmpeg version N-115881-g0ae157b360 [2024-06-19] [7.0.git]  Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14.1.1 (GCC) 20240522
configuration: --prefix=/home/duh/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/duh/ffmpeg_build/include --extra-ldflags=-L/home/duh/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --bindir=/home/duh/bin --enable-gpl --enable-openssl --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-libpulse --enable-chromaprint --enable-frei0r --enable-libbluray --enable-libbs2b --enable-libcdio --enable-librubberband --enable-libspeex --enable-libtheora --enable-libfontconfig --enable-libfribidi --enable-libxml2 --enable-libxvid --enable-version3 --enable-libvidstab --enable-libcaca --enable-libopenmpt --enable-libgme --enable-opengl --enable-librav1e --enable-libsvtav1 --enable-libsnappy --enable-libshine --enable-libtwolame --enable-libvo-amrwbenc --enable-libsoxr --enable-ladspa --enable-libvmaf
libavutil      59. 24.100 / 59. 24.100
libavcodec     61.  8.100 / 61.  8.100
libavformat    61.  3.104 / 61.  3.104
libavdevice    61.  2.100 / 61.  2.100
libavfilter    10.  2.102 / 10.  2.102
libswscale      8.  2.100 /  8.  2.100
libswresample   5.  2.100 /  5.  2.100
libpostproc    58.  2.100 / 58.  2.100

./x265 --version
x265 [info]: HEVC encoder version 3.6+27-8787e8702
x265 [info]: build info [Linux][GCC 14.1.1][64 bit] 8bit+10bit+12bit
x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2

...

scjet commented on 2024-06-19 07:24 (UTC) (edited on 2024-06-19 08:30 (UTC) by scjet)

  • I installed the quirc-git, and vulkan-headers as dependencies, but it still failed:

AUR Explicit (1): ffmpeg-amd-full-git-7.1.r115820.g959cb2e2e3-1
:: PKGBUILD up to date, skipping download: ffmpeg-amd-full-git
  1 ffmpeg-amd-full-git              (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> 
  1 ffmpeg-amd-full-git              (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> 
==> Making package: ffmpeg-amd-full-git 7.1.r115820.g959cb2e2e3-1 (Wed 19 Jun 2024 03:02:14 AM EDT)
==> Retrieving sources...
  -> Updating ffmpeg git repo...
  -> Found 010-ffmpeg-add-svt-hevc-ged80959.patch
  -> Found 020-ffmpeg-add-svt-hevc-docs-ged80959.patch
  -> Found 030-ffmpeg-add-svt-vp9-g3b9a3fa.patch
  -> Found 040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch
  -> Found 050-ffmpeg-fix-segfault-with-avisynthplus.patch
  -> Found LICENSE
==> WARNING: Skipping verification of source file PGP signatures.
==> Validating source files with sha256sums...
    ffmpeg ... Skipped
    010-ffmpeg-add-svt-hevc-ged80959.patch ... Passed
    020-ffmpeg-add-svt-hevc-docs-ged80959.patch ... Passed
    030-ffmpeg-add-svt-vp9-g3b9a3fa.patch ... Passed
    040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch ... Passed
    050-ffmpeg-fix-segfault-with-avisynthplus.patch ... Passed
    LICENSE ... Passed
:: (1/1) Parsing SRCINFO: ffmpeg-amd-full-git
==> Making package: ffmpeg-amd-full-git 7.1.r115820.g959cb2e2e3-1 (Wed 19 Jun 2024 03:02:15 AM EDT)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Updating ffmpeg git repo...
  -> Found 010-ffmpeg-add-svt-hevc-ged80959.patch
  -> Found 020-ffmpeg-add-svt-hevc-docs-ged80959.patch
  -> Found 030-ffmpeg-add-svt-vp9-g3b9a3fa.patch
  -> Found 040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch
  -> Found 050-ffmpeg-fix-segfault-with-avisynthplus.patch
  -> Found LICENSE
==> Validating source files with sha256sums...
    ffmpeg ... Skipped
    010-ffmpeg-add-svt-hevc-ged80959.patch ... Passed
    020-ffmpeg-add-svt-hevc-docs-ged80959.patch ... Passed
    030-ffmpeg-add-svt-vp9-g3b9a3fa.patch ... Passed
    040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch ... Passed
    050-ffmpeg-fix-segfault-with-avisynthplus.patch ... Passed
    LICENSE ... Passed
==> Removing existing $srcdir/ directory...
==> Extracting sources...
  -> Creating working copy of ffmpeg git repo...
Cloning into 'ffmpeg'...
done.
==> Starting prepare()...
patching file configure
Hunk #1 succeeded at 336 (offset 3 lines).
Hunk #2 succeeded at 1958 (offset 4 lines).
Hunk #3 succeeded at 3578 (offset 24 lines).
Hunk #4 succeeded at 6955 (offset 1 line).
patching file libavcodec/Makefile
Hunk #1 succeeded at 1156 (offset 2 lines).
patching file libavcodec/allcodecs.c
Hunk #1 succeeded at 814 (offset -6 lines).
patching file libavcodec/libsvt_hevc.c
patching file doc/encoders.texi
Hunk #1 succeeded at 2035 (offset 151 lines).
patching file doc/general_contents.texi
Hunk #1 succeeded at 282 (offset 15 lines).
patching file configure
Hunk #1 FAILED at 292.
Hunk #2 succeeded at 1952 (offset 4 lines).
Hunk #3 FAILED at 3538.
Hunk #4 FAILED at 6996.
3 out of 4 hunks FAILED -- saving rejects to file configure.rej
patching file libavcodec/Makefile
Hunk #1 FAILED at 1149.
1 out of 1 hunk FAILED -- saving rejects to file libavcodec/Makefile.rej
patching file libavcodec/allcodecs.c
Hunk #1 FAILED at 799.
1 out of 1 hunk FAILED -- saving rejects to file libavcodec/allcodecs.c.rej
patching file libavcodec/libsvt_vp9.c
==> ERROR: A failure occurred in prepare().
    Aborting...
 -> error making: ffmpeg-amd-full-git-exit status 4
 -> Failed to install the following packages. Manual intervention is required:
ffmpeg-amd-full-git - exit status 4

OzzyHelix commented on 2024-06-12 22:19 (UTC)

I fail to build this I get error: libquirc not found

xz-dev commented on 2024-04-10 02:11 (UTC)

vulkan-headers's bug also see: https://forums.gentoo.org/viewtopic-p-8822966.html?sid=9a4311a8107289fafa28eaf0cebff8b1 and https://bugs.gentoo.org/928593

veganvelociraptr commented on 2024-03-02 10:38 (UTC)

I found the culprit, it's because I had (perhaps an older) vulkan-headers-git package installed, instead of vulkan-headers.

veganvelociraptr commented on 2024-02-14 19:54 (UTC)

This occurs on both packages ffmpeg-amd-full and ffmpeg-amd-full-git:

In file included from libavcodec/vulkan_decode.c:21:
libavcodec/vulkan_decode.h:31:5: error: unknown type name 'VkVideoDecodeAV1ProfileInfoMESA'
31 |     VkVideoDecodeAV1ProfileInfoMESA av1_profile;
|     ^
CC      libavcodec/vvc/vvc_filter.o
libavcodec/vulkan_decode.c: In function 'get_video_profile':
libavcodec/vulkan_decode.c:53:40: error: 'VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_MESA' undeclared (first use in this function); did you mean 'VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR'?
53 |         codec_id == AV_CODEC_ID_AV1  ? VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_MESA :
|                                        ^~
|                                        VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR
libavcodec/vulkan_decode.c:53:40: note: each undeclared identifier is reported only once for each function it appears in
In file included from libavcodec/vulkan_av1.c:21:
libavcodec/vulkan_decode.h:31:5: error: unknown type name 'VkVideoDecodeAV1ProfileInfoMESA'
31 |     VkVideoDecodeAV1ProfileInfoMESA av1_profile;
|     ^
libavcodec/vulkan_av1.c:38:5: error: unknown type name 'StdVideoAV1MESATile'
38 |     StdVideoAV1MESATile            tiles[MAX_TILES];
|     ^
libavcodec/vulkan_av1.c:39:5: error: unknown type name 'StdVideoAV1MESATileList'
39 |     StdVideoAV1MESATileList        tile_list;
|     ^
libavcodec/vulkan_av1.c:43:5: error: unknown type name 'VkVideoDecodeAV1DpbSlotInfoMESA'
43 |     VkVideoDecodeAV1DpbSlotInfoMESA    vkav1_ref;
|     ^
libavcodec/vulkan_av1.c:44:5: error: unknown type name 'StdVideoAV1MESAFrameHeader'
44 |     StdVideoAV1MESAFrameHeader         av1_frame_header;
|     ^~
libavcodec/vulkan_av1.c:45:5: error: unknown type name 'VkVideoDecodeAV1PictureInfoMESA'
45 |     VkVideoDecodeAV1PictureInfoMESA    av1_pic_info;
|     ^
libavcodec/vulkan_av1.c:49:5: error: unknown type name 'VkVideoDecodeAV1DpbSlotInfoMESA'
49 |     VkVideoDecodeAV1DpbSlotInfoMESA     vkav1_refs[AV1_NUM_REF_FRAMES];
|     ^
In file included from libavcodec/vulkan_hevc.c:23:
libavcodec/vulkan_decode.h:31:5: error: unknown type name 'VkVideoDecodeAV1ProfileInfoMESA'
31 |     VkVideoDecodeAV1ProfileInfoMESA av1_profile;
|     ^
libavcodec/vulkan_decode.c: At top level:
libavcodec/vulkan_decode.c:666:38: error: unknown type name 'VkVideoDecodeAV1CapabilitiesMESA'; did you mean 'VkVideoDecodeAV1CapabilitiesKHR'?
666 |                                      VkVideoDecodeAV1CapabilitiesMESA av1_caps,
|                                      ^~
|                                      VkVideoDecodeAV1CapabilitiesKHR
In file included from libavcodec/vulkan_h264.c:22:
libavcodec/vulkan_decode.h:31:5: error: unknown type name 'VkVideoDecodeAV1ProfileInfoMESA'
31 |     VkVideoDecodeAV1ProfileInfoMESA av1_profile;
|     ^
libavcodec/vulkan_av1.c:58:29: error: unknown type name 'VkVideoDecodeAV1DpbSlotInfoMESA'; did you mean 'VkVideoDecodeAV1DpbSlotInfoKHR'?
58 |                             VkVideoDecodeAV1DpbSlotInfoMESA vkav1_ref, / Goes in ^ /
|                             ^
|                             VkVideoDecodeAV1DpbSlotInfoKHR
make: *** [ffbuild/common.mak:81: libavcodec/vulkan_hevc.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [ffbuild/common.mak:81: libavcodec/vulkan_h264.o] Error 1
libavcodec/vulkan_decode.c: In function 'vulkan_decode_get_profile':
libavcodec/vulkan_decode.c:761:5: error: unknown type name 'VkVideoDecodeAV1CapabilitiesMESA'; did you mean 'VkVideoDecodeAV1CapabilitiesKHR'?
761 |     VkVideoDecodeAV1CapabilitiesMESA av1_caps = {
|     ^~
|     VkVideoDecodeAV1CapabilitiesKHR
libavcodec/vulkan_decode.c:762:9: error: field name not in record or union initializer
762 |         .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_MESA,
|         ^
libavcodec/vulkan_decode.c:762:9: note: (near initialization for 'av1_caps')
libavcodec/vulkan_av1.c: In function 'vk_av1_create_params':
libavcodec/vulkan_av1.c:113:5: error: unknown type name 'StdVideoAV1MESASequenceHeader'; did you mean 'StdVideoAV1SequenceHeader'?
113 |     StdVideoAV1MESASequenceHeader av1_sequence_header;
|     ^
|     StdVideoAV1SequenceHeader
libavcodec/vulkan_av1.c:114:5: error: unknown type name 'VkVideoDecodeAV1SessionParametersAddInfoMESA'; did you mean 'VkVideoDecodeH265SessionParametersAddInfoKHR'?
114 |     VkVideoDecodeAV1SessionParametersAddInfoMESA av1_params_info;
|     ^~
|     VkVideoDecodeH265SessionParametersAddInfoKHR
libavcodec/vulkan_av1.c:115:5: error: unknown type name 'VkVideoDecodeAV1SessionParametersCreateInfoMESA'; didyou mean 'VkVideoDecodeAV1SessionParametersCreateInfoKHR'?
115 |     VkVideoDecodeAV1SessionParametersCreateInfoMESA av1_params;
|     ^
|     VkVideoDecodeAV1SessionParametersCreateInfoKHR
libavcodec/vulkan_decode.c:762:18: error: 'VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_MESA' undeclared (first use in this function); did you mean 'VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR'?
762 |         .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_MESA,
|                  ^~
|                  VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR
libavcodec/vulkan_av1.c:120:28: error: 'StdVideoAV1MESASequenceHeader' undeclared (first use in this function); did you mean 'StdVideoAV1SequenceHeader'?
120 |     av1_sequence_header = (StdVideoAV1MESASequenceHeader) {
|                            ^
|                            StdVideoAV1SequenceHeader
libavcodec/vulkan_av1.c:120:28: note: each undeclared identifier is reported only once for each function it appears in
libavcodec/vulkan_av1.c:120:58: error: expected ';' before '{' token
120 |     av1_sequence_header = (StdVideoAV1MESASequenceHeader) {
|                                                          ^~
|                                                          ;
libavcodec/vulkan_decode.c:785:58: error: 'STD_VIDEO_AV1_MESA_PROFILE_MAIN' undeclared (first use in this function); did you mean 'STD_VIDEO_AV1_PROFILE_MAIN'?
785 |                    avctx->codec_id == AV_CODEC_ID_AV1  ? STD_VIDEO_AV1_MESA_PROFILE_MAIN :
|                                                          ^
|                                                          STD_VIDEO_AV1_PROFILE_MAIN
libavcodec/vulkan_decode.c:833:63: error: request for member 'maxLevelIdc' in something not a structure or union
833 |                 avctx->codec_id == AV_CODEC_ID_AV1  ? av1_caps.maxLevelIdc  :
|                                                               ^
libavcodec/vulkan_decode.c:914:32: error: request for member 'flags' in something not a structure or union
914 |     dec->external_fg = av1_caps.flags & VK_VIDEO_DECODE_AV1_CAPABILITY_EXTERNAL_FILM_GRAIN_MESA;
|                                ^
libavcodec/vulkan_av1.c:171:24: error: 'VkVideoDecodeAV1SessionParametersAddInfoMESA' undeclared (first use inthis function); did you mean 'VkVideoDecodeH265SessionParametersAddInfoKHR'?
171 |     av1_params_info = (VkVideoDecodeAV1SessionParametersAddInfoMESA) {
|                        ^~
|                        VkVideoDecodeH265SessionParametersAddInfoKHR
libavcodec/vulkan_av1.c:171:69: error: expected ';' before '{' token
171 |     av1_params_info = (VkVideoDecodeAV1SessionParametersAddInfoMESA) {
|                                                                     ^~
|                                                                     ;
libavcodec/vulkan_av1.c:175:19: error: 'VkVideoDecodeAV1SessionParametersCreateInfoMESA' undeclared (first usein this function); did you mean 'VkVideoDecodeAV1SessionParametersCreateInfoKHR'?
175 |     av1_params = (VkVideoDecodeAV1SessionParametersCreateInfoMESA) {
|                   ^
|                   VkVideoDecodeAV1SessionParametersCreateInfoKHR
libavcodec/vulkan_av1.c:175:67: error: expected ';' before '{' token
175 |     av1_params = (VkVideoDecodeAV1SessionParametersCreateInfoMESA) {
|                                                                   ^~
|                                                                   ;
libavcodec/vulkan_av1.c: In function 'vk_av1_start_frame':
libavcodec/vulkan_av1.c:252:18: error: request for member 'nb_tiles' in something not a structure or union
252 |     ap->tile_list.nb_tiles = 0;
|                  ^
libavcodec/vulkan_av1.c:253:18: error: request for member 'tile_list' in something not a structure or union
253 |     ap->tile_list.tile_list = ap->tiles;
|                  ^
libavcodec/vulkan_av1.c:255:25: error: 'VkVideoDecodeAV1PictureInfoMESA' undeclared (first use in this function); did you mean 'VkVideoDecodeAV1PictureInfoKHR'?
255 |     ap->av1_pic_info = (VkVideoDecodeAV1PictureInfoMESA) {
|                         ^
|                         VkVideoDecodeAV1PictureInfoKHR
libavcodec/vulkan_av1.c:255:57: error: expected ';' before '{' token
255 |     ap->av1_pic_info = (VkVideoDecodeAV1PictureInfoMESA) {
|                                                         ^~
|                                                         ;
libavcodec/vulkan_decode.c:914:41: error: 'VK_VIDEO_DECODE_AV1_CAPABILITY_EXTERNAL_FILM_GRAIN_MESA' undeclared(first use in this function)
914 |     dec->external_fg = av1_caps.flags & VK_VIDEO_DECODE_AV1_CAPABILITY_EXTERNAL_FILM_GRAIN_MESA;
|                                         ^
libavcodec/vulkan_decode.c: In function 'ff_vk_decode_init':
libavcodec/vulkan_decode.c:1121:5: error: unknown type name 'VkVideoDecodeAV1SessionParametersCreateInfoMESA';did you mean 'VkVideoDecodeAV1SessionParametersCreateInfoKHR'?
1121 |     VkVideoDecodeAV1SessionParametersCreateInfoMESA av1_params = {
|     ^
|     VkVideoDecodeAV1SessionParametersCreateInfoKHR
libavcodec/vulkan_decode.c:1122:9: error: field name not in record or union initializer
1122 |         .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_MESA,
|         ^
libavcodec/vulkan_decode.c:1122:9: note: (near initialization for 'av1_params')
libavcodec/vulkan_av1.c:278:29: error: 'StdVideoAV1MESAFrameHeader' undeclared (first use in this function); did you mean 'StdVideoAV1SequenceHeader'?
278 |     ap->av1_frame_header = (StdVideoAV1MESAFrameHeader) {
|                             ^~
|                             StdVideoAV1SequenceHeader
libavcodec/vulkan_av1.c:278:56: error: expected ';' before '{' token
278 |     ap->av1_frame_header = (StdVideoAV1MESAFrameHeader) {
|                                                        ^~
|                                                        ;
libavcodec/vulkan_av1.c:402:29: error: request for member 'tiling' in something not a structure or union
402 |         ap->av1_frame_header.tiling.width_in_sbs_minus_1[i] = frame_header->width_in_sbs_minus_1[i];
|                             ^
libavcodec/vulkan_av1.c:403:29: error: request for member 'tiling' in something not a structure or union
403 |         ap->av1_frame_header.tiling.height_in_sbs_minus_1[i] = frame_header->height_in_sbs_minus_1[i];
|                             ^
libavcodec/vulkan_av1.c:404:29: error: request for member 'tiling' in something not a structure or union
404 |         ap->av1_frame_header.tiling.tile_start_col_sb[i] = frame_header->tile_start_col_sb[i];
|                             ^
libavcodec/vulkan_av1.c:405:29: error: request for member 'tiling' in something not a structure or union
405 |         ap->av1_frame_header.tiling.tile_start_row_sb[i] = frame_header->tile_start_row_sb[i];
|                             ^
libavcodec/vulkan_av1.c:409:29: error: request for member 'segmentation' in something not a structure or union
409 |         ap->av1_frame_header.segmentation.feature_enabled_bits[i] = 0;
|                             ^
libavcodec/vulkan_av1.c:411:33: error: request for member 'segmentation' in something not a structure or union
411 |             ap->av1_frame_header.segmentation.feature_enabled_bits[i] |= (frame_header->feature_enabled[i][j] << j);
|                                 ^
libavcodec/vulkan_av1.c:412:33: error: request for member 'segmentation' in something not a structure or union
412 |             ap->av1_frame_header.segmentation.feature_data[i][j] = frame_header->feature_value[i][j];
|                                 ^
libavcodec/vulkan_av1.c:415:29: error: request for member 'loop_filter' in something not a structure or union
415 |         ap->av1_frame_header.loop_filter.ref_deltas[i] = frame_header->loop_filter_ref_deltas[i];
|                             ^
libavcodec/vulkan_av1.c:417:29: error: request for member 'cdef' in something not a structure or union
417 |         ap->av1_frame_header.cdef.y_pri_strength[i] = frame_header->cdef_y_pri_strength[i];
|                             ^
libavcodec/vulkan_av1.c:418:29: error: request for member 'cdef' in something not a structure or union
418 |         ap->av1_frame_header.cdef.y_sec_strength[i] = frame_header->cdef_y_sec_strength[i];
|                             ^
libavcodec/vulkan_av1.c:419:29: error: request for member 'cdef' in something not a structure or union
419 |         ap->av1_frame_header.cdef.uv_pri_strength[i] = frame_header->cdef_uv_pri_strength[i];
|                             ^
libavcodec/vulkan_av1.c:420:29: error: request for member 'cdef' in something not a structure or union
420 |         ap->av1_frame_header.cdef.uv_sec_strength[i] = frame_header->cdef_uv_sec_strength[i];
|                             ^
libavcodec/vulkan_av1.c:422:29: error: request for member 'ref_order_hint' in something not a structure or union
422 |         ap->av1_frame_header.ref_order_hint[i] = frame_header->ref_order_hint[i];
|                             ^
libavcodec/vulkan_av1.c:423:29: error: request for member 'global_motion' in something not a structure or union
423 |         ap->av1_frame_header.global_motion[i] = (StdVideoAV1MESAGlobalMotion) {
|                             ^
libavcodec/vulkan_av1.c:423:50: error: 'StdVideoAV1MESAGlobalMotion' undeclared (first use in this function); did you mean 'StdVideoAV1GlobalMotion'?
423 |         ap->av1_frame_header.global_motion[i] = (StdVideoAV1MESAGlobalMotion) {
|                                                  ^
|                                                  StdVideoAV1GlobalMotion
libavcodec/vulkan_av1.c:423:78: error: expected ';' before '{' token
423 |         ap->av1_frame_header.global_motion[i] = (StdVideoAV1MESAGlobalMotion) {
|                                                                              ^~
|                                                                              ;
libavcodec/vulkan_av1.c:437:29: error: request for member 'ref_frame_idx' in something not a structure or union
437 |         ap->av1_frame_header.ref_frame_idx[i] = frame_header->ref_frame_idx[i];
|                             ^
libavcodec/vulkan_av1.c:438:29: error: request for member 'delta_frame_id_minus1' in something not a structureor union
438 |         ap->av1_frame_header.delta_frame_id_minus1[i] = frame_header->delta_frame_id_minus1[i];
|                             ^
libavcodec/vulkan_av1.c:441:21: error: request for member 'skip_mode_frame_idx' in something not a structure or union
441 |     ap->av1_pic_info.skip_mode_frame_idx[0] = s->cur_frame.skip_mode_frame_idx[0];
|                     ^
libavcodec/vulkan_av1.c:442:21: error: request for member 'skip_mode_frame_idx' in something not a structure or union
442 |     ap->av1_pic_info.skip_mode_frame_idx[1] = s->cur_frame.skip_mode_frame_idx[1];
|                     ^
libavcodec/vulkan_av1.c:446:33: error: request for member 'film_grain' in something not a structure or union
446 |             ap->av1_frame_header.film_grain.point_y_value[i] = film_grain->point_y_value[i];
|                                 ^
libavcodec/vulkan_av1.c:447:33: error: request for member 'film_grain' in something not a structure or union
447 |             ap->av1_frame_header.film_grain.point_y_scaling[i] = film_grain->point_y_scaling[i];
|                                 ^
libavcodec/vulkan_av1.c:451:33: error: request for member 'film_grain' in something not a structure or union
451 |             ap->av1_frame_header.film_grain.point_cb_value[i] = film_grain->point_cb_value[i];
|                                 ^
libavcodec/vulkan_av1.c:452:33: error: request for member 'film_grain' in something not a structure or union
452 |             ap->av1_frame_header.film_grain.point_cb_scaling[i] = film_grain->point_cb_scaling[i];
|                                 ^
libavcodec/vulkan_av1.c:453:33: error: request for member 'film_grain' in something not a structure or union
453 |             ap->av1_frame_header.film_grain.point_cr_value[i] = film_grain->point_cr_value[i];
|                                 ^
libavcodec/vulkan_av1.c:454:33: error: request for member 'film_grain' in something not a structure or union
454 |             ap->av1_frame_header.film_grain.point_cr_scaling[i] = film_grain->point_cr_scaling[i];
|                                 ^
libavcodec/vulkan_av1.c:458:33: error: request for member 'film_grain' in something not a structure or union
458 |             ap->av1_frame_header.film_grain.ar_coeffs_y_plus_128[i] = film_grain->ar_coeffs_y_plus_128[i];
|                                 ^
libavcodec/vulkan_av1.c:459:33: error: request for member 'film_grain' in something not a structure or union
459 |             ap->av1_frame_header.film_grain.ar_coeffs_cb_plus_128[i] = film_grain->ar_coeffs_cb_plus_128[i];
|                                 ^
libavcodec/vulkan_av1.c:460:33: error: request for member 'film_grain' in something not a structure or union
460 |             ap->av1_frame_header.film_grain.ar_coeffs_cr_plus_128[i] = film_grain->ar_coeffs_cr_plus_128[i];
|                                 ^
libavcodec/vulkan_av1.c:463:29: error: request for member 'film_grain' in something not a structure or union
463 |         ap->av1_frame_header.film_grain.ar_coeffs_cb_plus_128[24] = film_grain->ar_coeffs_cb_plus_128[24];
|                             ^
libavcodec/vulkan_av1.c:464:29: error: request for member 'film_grain' in something not a structure or union
464 |         ap->av1_frame_header.film_grain.ar_coeffs_cr_plus_128[24] = film_grain->ar_coeffs_cr_plus_128[24];
|                             ^
libavcodec/vulkan_av1.c: In function 'vk_av1_decode_slice':
libavcodec/vulkan_av1.c:483:32: error: request for member 'nb_tiles' in something not a structure or union
483 |         ap->tiles[ap->tile_list.nb_tiles] = (StdVideoAV1MESATile) {
|                                ^
libavcodec/vulkan_av1.c:483:46: error: 'StdVideoAV1MESATile' undeclared (first use in this function); did you mean 'StdVideoAV1Profile'?
483 |         ap->tiles[ap->tile_list.nb_tiles] = (StdVideoAV1MESATile) {
|                                              ^
|                                              StdVideoAV1Profile
libavcodec/vulkan_av1.c:483:66: error: expected ';' before '{' token
483 |         ap->tiles[ap->tile_list.nb_tiles] = (StdVideoAV1MESATile) {
|                                                                  ^~
|                                                                  ;
libavcodec/vulkan_av1.c:495:52: error: request for member 'nb_tiles' in something not a structure or union
495 |                                      &ap->tile_list.nb_tiles,
|                                                    ^
libavcodec/vulkan_av1.c:500:32: error: request for member 'nb_tiles' in something not a structure or union
500 |         ap->tiles[ap->tile_list.nb_tiles - 1].offset = ap->tile_offsets[ap->tile_list.nb_tiles - 1];
|                                ^
libavcodec/vulkan_av1.c:500:86: error: request for member 'nb_tiles' in something not a structure or union
500 |         ap->tiles[ap->tile_list.nb_tiles - 1].offset = ap->tile_offsets[ap->tile_list.nb_tiles - 1];
|                                                                                      ^
libavcodec/vulkan_av1.c: In function 'vk_av1_end_frame':
libavcodec/vulkan_av1.c:516:23: error: request for member 'nb_tiles' in something not a structure or union
516 |     if (!ap->tile_list.nb_tiles)
|                       ^
libavcodec/vulkan_av1.c:534:42: error: request for member 'nb_tiles' in something not a structure or union
534 |            vp->slices_size, ap->tile_list.nb_tiles);
|                                          ^
make: *** [ffbuild/common.mak:81: libavcodec/vulkan_av1.o] Error 1
libavcodec/vulkan_decode.c:1122:18: error: 'VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_MESA' undeclared (first use in this function); did you mean 'VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR'?
1122 |         .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_MESA,
|                  ^~
|                  VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR
make: *** [ffbuild/common.mak:81: libavcodec/vulkan_decode.o] Error 1
==> ERROR: A failure occurred in build().
Aborting...

nathanielcwm commented on 2023-10-29 12:25 (UTC)

Looks like the upstream package (ffmpeg-full-git) has disabled documentation building in the meantime.

fbrennan commented on 2023-10-28 00:05 (UTC)

I recommend the application of the following patch to fix the broken build due to ffmpeg's build scripts calling non-existent function Texinfo::Config::get_conf:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

- From 344a2818f437ddecbf0a1bef6301ff9af8e41cf6 Mon Sep 17 00:00:00 2001
From: Fredrick Brennan <copypaste@kittens.ph>
Date: Fri, 27 Oct 2023 20:02:46 -0400
Subject: [PATCH] Force build even with ffmpeg's broken texinfo

- ---
 .SRCINFO              |   2 +
 070-texinfo-fix.patch | 354 ++++++++++++++++++++++++++++++++++++++++++
 PKGBUILD              |   5 +
 3 files changed, 361 insertions(+)
 create mode 100644 070-texinfo-fix.patch

diff --git a/.SRCINFO b/.SRCINFO
index 182b080..0251237 100644
- --- a/.SRCINFO
+++ b/.SRCINFO
@@ -135,6 +135,7 @@ pkgbase = ffmpeg-amd-full-git
    source = 030-ffmpeg-add-svt-vp9-g43ef8e5.patch::https://raw.githubusercontent.com/OpenVisualCloud/SVT-VP9/43ef8e5e96932421858762392adbbab57c84aebf/ffmpeg_plugin/master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch
    source = 040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch
    source = 060-ffmpeg-fix-segfault-with-avisynthplus.patch
+   source = 070-texinfo-fix.patch
    source = LICENSE
    sha256sums = SKIP
    sha256sums = e8fdc940474f3819b9a8d30cab8164774584c051322acb6194bcb03d56e8175a
@@ -142,6 +143,7 @@ pkgbase = ffmpeg-amd-full-git
    sha256sums = 0433016c8523c7ce159523946a76c8fa06a926f33f94b70e8de7c2082d14178c
    sha256sums = 9b94b90a33dc8ac9693d72c825e9c444df914428fce7cca61117146ee8f8c07b
    sha256sums = 0e277c0d5e33612ca7a11025958133b17bfbe23168b0aee5bd07f674f6fd7440
+   sha256sums = 89472def37356326ebf1fd957a56804366f1604c5654e4b00152a48b30460995
    sha256sums = 04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36

 pkgname = ffmpeg-amd-full-git
diff --git a/070-texinfo-fix.patch b/070-texinfo-fix.patch
new file mode 100644
index 0000000..9828047
- --- /dev/null
+++ b/070-texinfo-fix.patch
@@ -0,0 +1,354 @@
+diff --git a/doc/t2h.pm b/doc/t2h.pm
+index d07d974286..be3a9cc932 100644
+--- a/doc/t2h.pm
++++ b/doc/t2h.pm
+@@ -20,340 +20,18 @@
+ # License along with FFmpeg; if not, write to the Free Software
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ 
+-# no navigation elements
+-set_from_init_file('HEADERS', 0);
+-
+-sub ffmpeg_heading_command($$$$$)
++sub set_from_init_file($$)
+ {
+-    my $self = shift;
+-    my $cmdname = shift;
+-    my $command = shift;
+-    my $args = shift;
+-    my $content = shift;
+-
+-    my $result = '';
+-
+-    # not clear that it may really happen
+-    if ($self->in_string) {
+-        $result .= $self->command_string($command) ."\n" if ($cmdname ne 'node');
+-        $result .= $content if (defined($content));
+-        return $result;
+-    }
+-
+-    my $element_id = $self->command_id($command);
+-    $result .= "<a name=\"$element_id\"></a>\n"
+-        if (defined($element_id) and $element_id ne '');
+-
+-    print STDERR "Process $command "
+-        .Texinfo::Structuring::_print_root_command_texi($command)."\n"
+-            if ($self->get_conf('DEBUG'));
+-    my $element;
+-    if ($Texinfo::Common::root_commands{$command->{'cmdname'}}
+-        and $command->{'parent'}
+-        and $command->{'parent'}->{'type'}
+-        and $command->{'parent'}->{'type'} eq 'element') {
+-        $element = $command->{'parent'};
+-    }
+-    if ($element) {
+-        $result .= &{$self->{'format_element_header'}}($self, $cmdname,
+-                                                       $command, $element);
+-    }
+-
+-    my $heading_level;
+-    # node is used as heading if there is nothing else.
+-    if ($cmdname eq 'node') {
+-        if (!$element or (!$element->{'extra'}->{'section'}
+-            and $element->{'extra'}->{'node'}
+-            and $element->{'extra'}->{'node'} eq $command
+-             # bogus node may not have been normalized
+-            and defined($command->{'extra'}->{'normalized'}))) {
+-            if ($command->{'extra'}->{'normalized'} eq 'Top') {
+-                $heading_level = 0;
+-            } else {
+-                $heading_level = 3;
+-            }
+-        }
+-    } else {
+-        $heading_level = $command->{'level'};
+-    }
+-
+-    my $heading = $self->command_text($command);
+-    # $heading not defined may happen if the command is a @node, for example
+-    # if there is an error in the node.
+-    if (defined($heading) and $heading ne '' and defined($heading_level)) {
+-
+-        if ($Texinfo::Common::root_commands{$cmdname}
+-            and $Texinfo::Common::sectioning_commands{$cmdname}) {
+-            my $content_href = $self->command_contents_href($command, 'contents',
+-                                                            $self->{'current_filename'});
+-            if ($content_href) {
+-                my $this_href = $content_href =~ s/^\#toc-/\#/r;
+-                $heading .= '<span class="pull-right">'.
+-                              '<a class="anchor hidden-xs" '.
+-                                 "href=\"$this_href\" aria-hidden=\"true\">".
+-            ($ENV{"FA_ICONS"} ? '<i class="fa fa-link"></i>'
+-                              : '#').
+-                              '</a> '.
+-                              '<a class="anchor hidden-xs"'.
+-                                 "href=\"$content_href\" aria-hidden=\"true\">".
+-            ($ENV{"FA_ICONS"} ? '<i class="fa fa-navicon"></i>'
+-                              : 'TOC').
+-                              '</a>'.
+-                            '</span>';
+-            }
+-        }
+-
+-        if ($self->in_preformatted()) {
+-            $result .= $heading."\n";
+-        } else {
+-            # if the level was changed, set the command name right
+-            if ($cmdname ne 'node'
+-                and $heading_level ne $Texinfo::Common::command_structuring_level{$cmdname}) {
+-                $cmdname
+-                    = $Texinfo::Common::level_to_structuring_command{$cmdname}->[$heading_level];
+-            }
+-            $result .= &{$self->{'format_heading_text'}}(
+-                        $self, $cmdname, $heading,
+-                        $heading_level +
+-                        $self->get_conf('CHAPTER_HEADER_LEVEL') - 1, $command);
+-        }
+-    }
+-    $result .= $content if (defined($content));
+-    return $result;
+-}
+-
+-foreach my $command (keys(%Texinfo::Common::sectioning_commands), 'node') {
+-    texinfo_register_command_formatting($command, \&ffmpeg_heading_command);
++    my $key = shift;
++    my $value = shift;
++    texinfo_set_from_init_file($key, $value);
+ }
+ 
+-# determine if texinfo is at least version 6.8
+-my $program_version_num = version->declare(get_conf('PACKAGE_VERSION'))->numify;
+-my $program_version_6_8 = $program_version_num >= 6.008000;
+-
+-# print the TOC where @contents is used
+-if ($program_version_6_8) {
+-    set_from_init_file('CONTENTS_OUTPUT_LOCATION', 'inline');
+-} else {
+-    set_from_init_file('INLINE_CONTENTS', 1);
+-}
+-
+-# make chapters <h2>
+-set_from_init_file('CHAPTER_HEADER_LEVEL', 2);
+-
+-# Do not add <hr>
+-set_from_init_file('DEFAULT_RULE', '');
+-set_from_init_file('BIG_RULE', '');
+-
+-# Customized file beginning
+-sub ffmpeg_begin_file($$$)
++sub get_conf($)
+ {
+-    my $self = shift;
+-    my $filename = shift;
+-    my $element = shift;
+-
+-    my $command;
+-    if ($element and $self->get_conf('SPLIT')) {
+-        $command = $self->element_command($element);
+-    }
+-
+-    my ($title, $description, $encoding, $date, $css_lines,
+-        $doctype, $bodytext, $copying_comment, $after_body_open,
+-        $extra_head, $program_and_version, $program_homepage,
+-        $program, $generator) = $self->_file_header_informations($command);
+-
+-    my $links = $self->_get_links ($filename, $element);
+-
+-    my $head1 = $ENV{"FFMPEG_HEADER1"} || <<EOT;
+-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+-<html>
+-<!-- Created by $program_and_version, $program_homepage -->
+-  <head>
+-    <meta charset="utf-8">
+-    <title>
+-EOT
+-    my $head_title = <<EOT;
+-      $title
+-EOT
+-
+-    my $head2 = $ENV{"FFMPEG_HEADER2"} || <<EOT;
+-    </title>
+-    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+-    <link rel="stylesheet" type="text/css" href="bootstrap.min.css">
+-    <link rel="stylesheet" type="text/css" href="style.min.css">
+-  </head>
+-  <body>
+-    <div class="container">
+-      <h1>
+-EOT
+-
+-    my $head3 = $ENV{"FFMPEG_HEADER3"} || <<EOT;
+-      </h1>
+-EOT
+-
+-    return $head1 . $head_title . $head2 . $head_title . $head3;
+-}
+-if ($program_version_6_8) {
+-    texinfo_register_formatting_function('format_begin_file', \&ffmpeg_begin_file);
+-} else {
+-    texinfo_register_formatting_function('begin_file', \&ffmpeg_begin_file);
+-}
+-
+-sub ffmpeg_program_string($)
+-{
+-  my $self = shift;
+-  if (defined($self->get_conf('PROGRAM'))
+-      and $self->get_conf('PROGRAM') ne ''
+-      and defined($self->get_conf('PACKAGE_URL'))) {
+-    return $self->convert_tree(
+-      $self->gdt('This document was generated using @uref{{program_homepage}, @emph{{program}}}.',
+-         { 'program_homepage' => $self->get_conf('PACKAGE_URL'),
+-           'program' => $self->get_conf('PROGRAM') }));
+-  } else {
+-    return $self->convert_tree(
+-      $self->gdt('This document was generated automatically.'));
+-  }
+-}
+-if ($program_version_6_8) {
+-    texinfo_register_formatting_function('format_program_string', \&ffmpeg_program_string);
+-} else {
+-    texinfo_register_formatting_function('program_string', \&ffmpeg_program_string);
+-}
+-
+-# Customized file ending
+-sub ffmpeg_end_file($)
+-{
+-    my $self = shift;
+-    my $program_string = &{$self->{'format_program_string'}}($self);
+-    my $program_text = <<EOT;
+-      <p style="font-size: small;">
+-        $program_string
+-      </p>
+-EOT
+-    my $footer = $ENV{FFMPEG_FOOTER} || <<EOT;
+-    </div>
+-  </body>
+-</html>
+-EOT
+-    return $program_text . $footer;
+-}
+-if ($program_version_6_8) {
+-    texinfo_register_formatting_function('format_end_file', \&ffmpeg_end_file);
+-} else {
+-    texinfo_register_formatting_function('end_file', \&ffmpeg_end_file);
+-}
+-
+-# Dummy title command
+-# Ignore title. Title is handled through ffmpeg_begin_file().
+-set_from_init_file('USE_TITLEPAGE_FOR_TITLE', 1);
+-sub ffmpeg_title($$$$)
+-{
+-    return '';
++    my $key = shift;
++    return texinfo_get_conf($key);
+ }
+ 
+-texinfo_register_command_formatting('titlefont',
+-                                    \&ffmpeg_title);
+-
+-# Customized float command. Part of code borrowed from GNU Texinfo.
+-sub ffmpeg_float($$$$$)
+-{
+-    my $self = shift;
+-    my $cmdname = shift;
+-    my $command = shift;
+-    my $args = shift;
+-    my $content = shift;
+-
+-    my ($caption, $prepended) = Texinfo::Common::float_name_caption($self,
+-                                                                $command);
+-    my $caption_text = '';
+-    my $prepended_text;
+-    my $prepended_save = '';
+-
+-    if ($self->in_string()) {
+-        if ($prepended) {
+-            $prepended_text = $self->convert_tree_new_formatting_context(
+-                $prepended, 'float prepended');
+-        } else {
+-            $prepended_text = '';
+-        }
+-        if ($caption) {
+-            $caption_text = $self->convert_tree_new_formatting_context(
+-                {'contents' => $caption->{'args'}->[0]->{'contents'}},
+-                'float caption');
+-        }
+-        return $prepended.$content.$caption_text;
+-    }
+-
+-    my $id = $self->command_id($command);
+-    my $label;
+-    if (defined($id) and $id ne '') {
+-        $label = "<a name=\"$id\"></a>";
+-    } else {
+-        $label = '';
+-    }
+-
+-    if ($prepended) {
+-        if ($caption) {
+-            # prepend the prepended tree to the first paragraph
+-            my @caption_original_contents = @{$caption->{'args'}->[0]->{'contents'}};
+-            my @caption_contents;
+-            my $new_paragraph;
+-            while (@caption_original_contents) {
+-                my $content = shift @caption_original_contents;
+-                if ($content->{'type'} and $content->{'type'} eq 'paragraph') {
+-                    %{$new_paragraph} = %{$content};
+-                    $new_paragraph->{'contents'} = [@{$content->{'contents'}}];
+-                    unshift (@{$new_paragraph->{'contents'}}, {'cmdname' => 'strong',
+-                             'args' => [{'type' => 'brace_command_arg',
+-                                                    'contents' => [$prepended]}]});
+-                    push @caption_contents, $new_paragraph;
+-                    last;
+-                } else {
+-                    push @caption_contents, $content;
+-                }
+-            }
+-            push @caption_contents, @caption_original_contents;
+-            if ($new_paragraph) {
+-                $caption_text = $self->convert_tree_new_formatting_context(
+-                 {'contents' => \@caption_contents}, 'float caption');
+-                $prepended_text = '';
+-            }
+-        }
+-        if ($caption_text eq '') {
+-            $prepended_text = $self->convert_tree_new_formatting_context(
+-                $prepended, 'float prepended');
+-            if ($prepended_text ne '') {
+-                $prepended_save = $prepended_text;
+-                $prepended_text = '<p><strong>'.$prepended_text.'</strong></p>';
+-            }
+-        }
+-    } else {
+-        $prepended_text = '';
+-    }
+-
+-    if ($caption and $caption_text eq '') {
+-        $caption_text = $self->convert_tree_new_formatting_context(
+-            $caption->{'args'}->[0], 'float caption');
+-    }
+-    if ($prepended_text.$caption_text ne '') {
+-        $prepended_text = $self->_attribute_class('div','float-caption'). '>'
+-                . $prepended_text;
+-        $caption_text .= '</div>';
+-    }
+-    my $html_class = '';
+-    if ($prepended_save =~ /NOTE/) {
+-        $html_class = 'info';
+-        $prepended_text = '';
+-        $caption_text   = '';
+-    } elsif ($prepended_save =~ /IMPORTANT/) {
+-        $html_class = 'warning';
+-        $prepended_text = '';
+-        $caption_text   = '';
+-    }
+-    return $self->_attribute_class('div', $html_class). '>' . "\n" .
+-        $prepended_text . $caption_text . $content . '</div>';
+-}
+-
+-texinfo_register_command_formatting('float',
+-                                    \&ffmpeg_float);
+-
+-1;
++# no navigation elements
++set_from_init_file('HEADERS', 0);
diff --git a/PKGBUILD b/PKGBUILD
index 7a0c708..f9f224c 100644
- --- a/PKGBUILD
+++ b/PKGBUILD
@@ -40,6 +40,7 @@ source=('git+https://git.ffmpeg.org/ffmpeg.git'
         "030-ffmpeg-add-svt-vp9-g${_svt_vp9_ver:0:7}.patch"::"https://raw.githubusercontent.com/OpenVisualCloud/SVT-VP9/${_svt_vp9_ver}/ffmpeg_plugin/master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch"
         '040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch'
         '060-ffmpeg-fix-segfault-with-avisynthplus.patch'
+        '070-texinfo-fix.patch'
         'LICENSE')
 sha256sums=('SKIP'
             'e8fdc940474f3819b9a8d30cab8164774584c051322acb6194bcb03d56e8175a'
@@ -47,6 +48,7 @@ sha256sums=('SKIP'
             '0433016c8523c7ce159523946a76c8fa06a926f33f94b70e8de7c2082d14178c'
             '9b94b90a33dc8ac9693d72c825e9c444df914428fce7cca61117146ee8f8c07b'
             '0e277c0d5e33612ca7a11025958133b17bfbe23168b0aee5bd07f674f6fd7440'
+            '89472def37356326ebf1fd957a56804366f1604c5654e4b00152a48b30460995'
             '04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36')

 prepare() {
@@ -56,6 +58,7 @@ prepare() {
     patch -d ffmpeg -Np1 -i "${srcdir}/030-ffmpeg-add-svt-vp9-g${_svt_vp9_ver:0:7}.patch"
     patch -d ffmpeg -Np1 -i "${srcdir}/040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch"
     patch -d ffmpeg -Np1 -i "${srcdir}/060-ffmpeg-fix-segfault-with-avisynthplus.patch"
+    patch -d ffmpeg -Np1 -i "${srcdir}/070-texinfo-fix.patch"
 }

 pkgver() { 
@@ -68,6 +71,8 @@ build() {
     cd "$_srcname"

     printf '%s\n' '  -> Running ffmpeg configure script...'
+
+    export PATH="/usr/share/texinfo:$PATH"

     ./configure \
         --prefix='/usr' \
- -- 
2.42.0

-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQS1rLeeEfG/f0nzK7hYUwVpYvFOWAUCZTxQTQAKCRBYUwVpYvFO
WKnVAP9r3iso+yWJOr4a+c1LUA6TaPChSl9HDPwNak4SwWjvNAEAx0C5d37Ct8qJ
vrnRfWiOEBjVjsBGmCiqmM+JRBedEQI=
=+MU2
-----END PGP SIGNATURE-----