Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fedora 36 ffmpeg build issues #3458

Closed
totaam opened this issue Feb 11, 2022 · 3 comments
Closed

fedora 36 ffmpeg build issues #3458

totaam opened this issue Feb 11, 2022 · 3 comments
Labels
bug Something isn't working upstream

Comments

@totaam
Copy link
Collaborator

totaam commented Feb 11, 2022

First problem is that ffmpeg does not build:

CC	libavcodec/h264_mb.o
libavcodec/h264_loopfilter.c: In function 'ff_h264_filter_mb':
libavcodec/h264_loopfilter.c:799:13: warning: 'filter_mb_mbaff_edgev' reading 14 bytes from a region of size 8 [-Wstringop-overread]
  799 |             filter_mb_mbaff_edgev ( h, img_y  + 8*  linesize,   linesize, bS+4, 1, qp [1], a, b, 1 );
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libavcodec/h264_loopfilter.c:799:13: note: referencing argument 4 of type 'const int16_t[7]'
libavcodec/h264_loopfilter.c:147:30: note: in a call to function 'filter_mb_mbaff_edgev'
  147 | static av_always_inline void filter_mb_mbaff_edgev(const H264Context *h, uint8_t *pix,
      |                              ^~~~~~~~~~~~~~~~~~~~~
libavcodec/h264_loopfilter.c:803:21: warning: 'filter_mb_mbaff_edgev' reading 14 bytes from a region of size 8 [-Wstringop-overread]
  803 |                     filter_mb_mbaff_edgev ( h, img_cb + 8*uvlinesize, uvlinesize, bS+4, 1, bqp[1], a, b, 1 );
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libavcodec/h264_loopfilter.c:803:21: note: referencing argument 4 of type 'const int16_t[7]'
libavcodec/h264_loopfilter.c:147:30: note: in a call to function 'filter_mb_mbaff_edgev'
  147 | static av_always_inline void filter_mb_mbaff_edgev(const H264Context *h, uint8_t *pix,
      |                              ^~~~~~~~~~~~~~~~~~~~~
libavcodec/h264_loopfilter.c:805:21: warning: 'filter_mb_mbaff_edgev' reading 14 bytes from a region of size 8 [-Wstringop-overread]
  805 |                     filter_mb_mbaff_edgev ( h, img_cr + 8*uvlinesize, uvlinesize, bS+4, 1, rqp[1], a, b, 1 );
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libavcodec/h264_loopfilter.c:805:21: note: referencing argument 4 of type 'const int16_t[7]'
libavcodec/h264_loopfilter.c:147:30: note: in a call to function 'filter_mb_mbaff_edgev'
  147 | static av_always_inline void filter_mb_mbaff_edgev(const H264Context *h, uint8_t *pix,
      |                              ^~~~~~~~~~~~~~~~~~~~~
libavcodec/h264_loopfilter.c:808:21: warning: 'filter_mb_mbaff_edgecv' reading 14 bytes from a region of size 8 [-Wstringop-overread]
  808 |                     filter_mb_mbaff_edgecv(h, img_cb + 8*uvlinesize, uvlinesize, bS+4, 1, bqp[1], a, b, 1);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libavcodec/h264_loopfilter.c:808:21: note: referencing argument 4 of type 'const int16_t[7]'
libavcodec/h264_loopfilter.c:170:30: note: in a call to function 'filter_mb_mbaff_edgecv'
  170 | static av_always_inline void filter_mb_mbaff_edgecv(const H264Context *h,
      |                              ^~~~~~~~~~~~~~~~~~~~~~
libavcodec/h264_loopfilter.c:810:21: warning: 'filter_mb_mbaff_edgecv' reading 14 bytes from a region of size 8 [-Wstringop-overread]
  810 |                     filter_mb_mbaff_edgecv(h, img_cr + 8*uvlinesize, uvlinesize, bS+4, 1, rqp[1], a, b, 1);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libavcodec/h264_loopfilter.c:810:21: note: referencing argument 4 of type 'const int16_t[7]'
libavcodec/h264_loopfilter.c:170:30: note: in a call to function 'filter_mb_mbaff_edgecv'
  170 | static av_always_inline void filter_mb_mbaff_edgecv(const H264Context *h,
      |                              ^~~~~~~~~~~~~~~~~~~~~~
libavcodec/h264_loopfilter.c:813:21: warning: 'filter_mb_mbaff_edgecv' reading 14 bytes from a region of size 8 [-Wstringop-overread]
  813 |                     filter_mb_mbaff_edgecv( h, img_cb + 4*uvlinesize, uvlinesize, bS+4, 1, bqp[1], a, b, 1 );
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libavcodec/h264_loopfilter.c:813:21: note: referencing argument 4 of type 'const int16_t[7]'
libavcodec/h264_loopfilter.c:170:30: note: in a call to function 'filter_mb_mbaff_edgecv'
  170 | static av_always_inline void filter_mb_mbaff_edgecv(const H264Context *h,

And disabling -Wstringop-overread still fails but on hevc codecs this time and disabling those also fails at link time because of some LTO issues...

@totaam totaam added the bug Something isn't working label Feb 11, 2022
@totaam
Copy link
Collaborator Author

totaam commented Feb 11, 2022

For trying to build ffmpeg without the problematic codecs:

--- a/packaging/rpm/ffmpeg-xpra.spec
+++ b/packaging/rpm/ffmpeg-xpra.spec
@@ -90,7 +90,9 @@ PKG_CONFIG_PATH=%{_libdir}/xpra/pkgconfig ./configure \
        --enable-gpl \
        --enable-protocol=file \
        --enable-decoder=h264 \
+%if 0%{?fedora}<36
        --enable-decoder=hevc \
+%endif
        --enable-decoder=vp8 \
        --enable-decoder=vp9 \
        --enable-decoder=mpeg4 \
@@ -105,7 +107,9 @@ PKG_CONFIG_PATH=%{_libdir}/xpra/pkgconfig ./configure \
        --enable-encoder=aac \
 %if 0%{?libva}
        --enable-encoder=h264_vaapi \
+%if 0%{?fedora}<36
        --enable-encoder=hevc_vaapi \
+%endif
        --enable-encoder=mpeg2_vaapi \
        --enable-encoder=vp8_vaapi \
        --enable-encoder=vp9_vaapi \
@@ -115,13 +119,17 @@ PKG_CONFIG_PATH=%{_libdir}/xpra/pkgconfig ./configure \
        --enable-muxer=matroska \
        --enable-muxer=ogg \
        --enable-demuxer=h264 \
+%if 0%{?fedora}<36
        --enable-demuxer=hevc \
+%endif
        --enable-demuxer=m4v \
        --enable-demuxer=matroska \
        --enable-demuxer=ogg \
 %if 0%{?libva}
        --enable-hwaccel=h264_vaapi \
+%if 0%{?fedora}<36
        --enable-hwaccel=hevc_vaapi \
+%endif
        --enable-hwaccel=mpeg2_vaapi \
        --enable-hwaccel=vp8_vaapi \
        --enable-hwaccel=vp9_vaapi \

@totaam
Copy link
Collaborator Author

totaam commented Feb 11, 2022

There's another problem: the container seems to crash-exit silently during compilation of the xpra package (exact same issue on two different build machines):

copying xpra/server/mixins/stub_server_mixin.py -> build/lib.linux-x86_64-3.10/xpra/server/mixins
copying xpra/server/mixins/logging_server.py -> build/lib.linux-x86_64-3.10/xpra/server/mixins+ buildah rm fedora-36-repo-build-temp
8e9714c6a9d53e97823a4f3a5bf9cb0b858faef7035309135aa29fcec4e52542

Let's hope they iron out those issues pretty quickly.

@totaam
Copy link
Collaborator Author

totaam commented May 2, 2022

Oh my!
https://github.com/rpmfusion/ffmpeg/blob/master/ffmpeg.spec
There are dozens of hard to decipher hacks in there!

totaam added a commit that referenced this issue Jun 10, 2022
@totaam totaam closed this as completed Jun 10, 2022
totaam added a commit that referenced this issue Sep 12, 2022
(forgot to unblock this)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working upstream
Projects
None yet
Development

No branches or pull requests

1 participant