Package Details: ffmpeg-amd-full-git 6.2.r114211.gaca7037e01-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: custom: nonfree and unredistributable
Conflicts: ffmpeg
Provides: ffmpeg, ffmpeg-full, 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: 12
Popularity: 0.000058
First Submitted: 2018-11-20 15:20 (UTC)
Last Updated: 2024-03-16 02:49 (UTC)

Required by (1824)

Sources (7)

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 .. 10 Next › Last »

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-----

fbrennan commented on 2023-10-21 04:50 (UTC)

Warning: full isn't full. libharfbuzz is missing, which eliminates drawtext filter.

From a65a4293aca6b30ad3f50416d8de2cf3d4b27fb6 Mon Sep 17 00:00:00 2001
From: Fredrick Brennan <copypaste@kittens.ph>
Date: Sat, 21 Oct 2023 00:49:56 -0400
Subject: [PATCH] v6.1.r111306.g915701939c

+libharfbuzz
---
 PKGBUILD | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/PKGBUILD b/PKGBUILD
index f749e0a..6ac31d5 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,7 +5,7 @@

 pkgname=ffmpeg-amd-full-git
 _srcname=ffmpeg
-pkgver=6.1.r111306.g915701939c
+pkgver=6.1.r112494.g393d1ee541
 pkgrel=1
 pkgdesc='Complete solution to record, convert and stream audio and video (all possible features for AMD; git version)'
 arch=('x86_64')
@@ -13,7 +13,7 @@ url='https://www.ffmpeg.org/'
 license=('custom: nonfree and unredistributable')
 depends=('alsa-lib' 'aom' 'aribb24' 'avisynthplus' 'bzip2' 'celt' 'codec2'
          'dav1d' 'fontconfig' 'freetype2' 'fribidi' 'glslang' 'frei0r-plugins' 'gmp'
-         'gnutls' 'gsm' 'jack' 'kvazaar' 'ladspa' 'lame' 'libavc1394'
+         'gnutls' 'gsm' 'harfbuzz' 'jack' 'kvazaar' 'ladspa' 'lame' 'libavc1394'
          'lcms2' 'lensfun-git' 'libass' 'libbluray' 'libbs2b' 'libcaca' 'libcdio-paranoia'
          'libdc1394' 'libdrm' 'libfdk-aac' 'libgme' 'libgl' 'libgcrypt' 'libiec61883'
          'libilbc' 'libjxl' 'libmodplug' 'libmysofa' 'libomxil-bellagio' 'libplacebo'
@@ -115,6 +115,7 @@ build() {
         --enable-libflite \
         --enable-fontconfig \
         --enable-libfreetype \
+        --enable-libharfbuzz \
         --enable-libfribidi \
         --enable-libglslang \
         --enable-libgme \
-- 
2.42.0

nathanielcwm commented on 2023-07-01 03:32 (UTC)

I'm back from my slumber! Sorry for being away for so long, but I had some real life events that I had to deal with.

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.

j1simon commented on 2023-01-30 13:28 (UTC) (edited on 2023-01-30 14:15 (UTC) by j1simon)

This configure is not correct, it enables the LTO option but does not compile with Clang, even though it is the default compiler defined in makepkg.conf and although it is one of the makedepends. See this bug: https://trac.ffmpeg.org/ticket/9310

I solved it by adding this to the PKGBUILD configure:

    ./configure \
        --prefix='/usr' \
        --enable-lto \
         --cc=$CC \
         --cxx=$CXX \
        --disable-rpath \