[prev in list] [next in list] [prev in thread] [next in thread] 

List:       fedora-devel-list
Subject:    Re: Looking for advice - ffmpeg-free and wf-recorder
From:       Aleksei Bavshin <alebastr () fedoraproject ! org>
Date:       2022-12-17 6:40:13
Message-ID: 63f2336f-77c2-d540-1658-5e3a4d1cd56b () fedoraproject ! org
[Download RAW message or body]

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
[Attachment #2 (multipart/mixed)]

[Attachment #4 (text/plain)]

On 12/16/22 21:29, Bob Hepple wrote:
> I am the packager for wf-recorder (a wl-roots/wayland screen recorder) 
> which presently resides in rpmfusion - it uses proprietary ffmpeg codecs 
> by default (libx246).
> 
> Now that we have ffmpeg-free we have an opportunity to move wf-recorder 
> to the mainstream and change the default codec to the non-proprietary 
> libopenh264. This woud be in rawhide/f38 and on.

Thanks for considering that!
f37 would be nice too. ffmpeg-free is available in this release, so 
nothing prevents moving wf-recorder to Fedora 37 repos.


> This all works fine in testing on f37. The fly in the ointment is that 
> if ffmpeg/rpmfusion is installed in place of ffmpeg-free, then 
> wf-recorder can no longer access libopenh264 and fails with an error. 
> There is a workaround in the use of the option -c libx264.
> 
> Several solutions occur to me and I'm looking for guidance on which path 
> to take:
> 
> 0. leave wf-recorder where it is, in rpmfusion as in f37 and earlier.
> A. compile wf-recorder as shipped by upstream with the default libx264 - 
> the '-c libopenh264' workaround would be needed if ffmpeg-free is 
> installed. This annoys users who install stock fedora.
> B. compile wf-recorder with libopenh264 as the default - the '-c 
> libx264' workaround would be needed if ffmpeg/rpmfusion is installed and 
> would annoy those users. > C. leave wf-recorder in rpmfusion and create a wf-recorder-free package
> by analogy to ffmpeg (this might be obscure as it's not likely to get 
> much publicity - and annoy everyone sooner or later)

Option C sounds like too much maintenance burden for a default option value.

> D. the best option might be to choose a codec common to both ffmpeg and 
> ffmpeg-free. I'm not terribly au fait with the various codecs so which 
> would I choose? These codecs appear to be in both packages:
> 
>   h263_v4l2m2m         V4L2 mem2mem H.263 encoder wrapper (codec h263)
>   h264_amf             AMD AMF H.264 Encoder (codec h264)
>   h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
>   h264_qsv             H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel 
> Quick Sync Video acceleration) (codec h264)
>   h264_v4l2m2m         V4L2 mem2mem H.264 encoder wrapper (codec h264)
>   h264_vaapi           H.264/AVC (VAAPI) (codec h264)
>   hevc_amf             AMD AMF HEVC encoder (codec hevc)
>   hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)
>   hevc_qsv             HEVC (Intel Quick Sync Video acceleration) (codec 
> hevc)
>   hevc_v4l2m2m         V4L2 mem2mem HEVC encoder wrapper (codec hevc)
>   hevc_vaapi           H.265/HEVC (VAAPI) (codec hevc)
>   libaom-av1           libaom AV1 (codec av1)
> libopenjpeg          OpenJPEG JPEG 2000 (codec jpeg2000)
>   librav1e             librav1e AV1 (codec av1)
>   libsvtav1            SVT-AV1(Scalable Video Technology for AV1) 
> encoder (codec av1)
>   libtheora            libtheora Theora (codec theora)
>   libvpx               libvpx VP8 (codec vp8)
>   libvpx-vp9           libvpx VP9 (codec vp9)
>   libwebp_anim         libwebp WebP image (codec webp)
>   libwebp              libwebp WebP image (codec webp)
>   mjpeg_qsv            MJPEG (Intel Quick Sync Video acceleration) 
> (codec mjpeg)
>   mjpeg_vaapi          MJPEG (VAAPI) (codec mjpeg)
>   mpeg2_qsv            MPEG-2 video (Intel Quick Sync Video 
> acceleration) (codec mpeg2video)
>   mpeg2_vaapi          MPEG-2 (VAAPI) (codec mpeg2video)
>   mpeg4_v4l2m2m        V4L2 mem2mem MPEG4 encoder wrapper (codec mpeg4)
>   vp8_v4l2m2m          V4L2 mem2mem VP8 encoder wrapper (codec vp8)
>   vp8_vaapi            VP8 (VAAPI) (codec vp8)
>   vp9_qsv              VP9 video (Intel Quick Sync Video acceleration) 
> (codec vp9)
>   vp9_vaapi            VP9 (VAAPI) (codec vp9)
> 

I'm not an expert enough to tell what to choose, but at least I can tell 
what should be avoided:

  - anything h264 or HEVC - these are patented and Fedora won't ship a 
software implementation of the encoder for these. (except libopenh264, 
but OSTree-based systems won't have even that).
  - anything with words vaapi, qsv, v4l2m2m or amf - these only work 
with a specific hardware
  - image formats - jpeg or webp might be a bad choice for a screen recorder

Next I'm going to suggest to exclude Theora (a bit outdated) and AV1 
(which is _slow_ and less widespread, especially in hw decoders).

Huh, that leaves us with VP8 and VP9. I don't know how these compare in 
real-time encoding speed but I hope that VP9 encoder is fast enough for 
hardware released after 2013 :)

Please, also consult with the upstream - wf-recorder includes default 
parameters for libx264/libx265[1], so they could add a good preset for a 
royalty-free encoder.

[1]: 
https://github.com/ammen99/wf-recorder/blob/master/src/frame-writer.cpp#L47

> _______________________________________________
> devel mailing list -- devel@lists.fedoraproject.org
> To unsubscribe send an email to devel-leave@lists.fedoraproject.org
> Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
> Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue

["OpenPGP_signature.asc" (application/pgp-signature)]
[Attachment #6 (unknown)]

_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-leave@lists.fedoraproject.org
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic