[Cin] SVT-AV1 encoding quite fast on x86_64

Andrew Randrianasulu randrianasulu at gmail.com
Sun Dec 17 20:54:28 CET 2023


вс, 17 дек. 2023 г., 22:44 Terje J. Hanssen <terjejhanssen at gmail.com>:

>
>
> Den 17.12.2023 13:43, skrev Andrew Randrianasulu:
>
>
>
> вс, 17 дек. 2023 г., 15:29 Terje J. Hanssen <terjejhanssen at gmail.com>:
>
>>
>>
>> Den 17.12.2023 00:05, skrev Andrew Randrianasulu:
>>
>>
>>
>> пт, 15 дек. 2023 г., 21:10 Terje J. Hanssen via Cin <
>> cin at lists.cinelerra-gg.org>:
>>
>>>
>>>
>>> Den 14.12.2023 12:25, skrev Terje J. Hanssen:
>>>
>>> First, a summary from another current post and thread:
>>> https://lists.cinelerra-gg.org/pipermail/cin/2023-December/007430.html
>>>
>>> I will add the re-encoded sample *SD DV *file using ffmpeg SVT-AV1, as
>>> I was positive surprised how much faster (preset 10 about 25 sec) it was
>>> than rendering AV1 with CinGG (libaom?) .  I've tested three presets: 8, 10
>>> and 12. "Useable visible quality" for all.
>>>
>>>     ffmpeg -i dv01_07.dv -c:v libsvtav1 -preset 8 -crf 35 -c:a libvorbis
>>> dv01_07_svt-av1_pr8.webm
>>>     frame= 2832 fps= 66 q=35.0 Lsize=   28836kB time=00:01:53.26
>>> bitrate=2085.6kbits/s speed=2.65x
>>>
>>>     ffmpeg -i dv01_07.dv -c:v libsvtav1 -preset 10 -crf 35 -c:a
>>> libvorbis dv01_07_svt-av1_pr10.webm
>>>     frame= 2832 *fps=112* q=35.0 Lsize=   34419kB time=00:01:53.26
>>> bitrate=2489.4kbits/s speed=4.47x
>>>
>>>     ffmpeg -i dv01_07.dv -c:v libsvtav1 -preset 12 -crf 35 -c:a
>>> libvorbis dv01_07_svt-av1_pr12.webm
>>>     frame= 2832 fps=262 q=35.0 Lsize=   35913kB time=00:01:53.26
>>> bitrate=2597.5kbits/s speed=10.5x
>>>
>>>
>>>
>>> The speed of SVT-AV1 encoding seems for me to be quite useable, at least
>>> for personal use.
>>>
>>>
>>>
>>> As a reference to compare the SVT-AV1 results above, I've also tried to
>>> encode the same input file using libaom-av1 and librav1e
>>> with simple or none (default) parameters. Other, optimal tuned
>>> parameters may possibly change the unsuccesful results here.
>>> Seemingly something have to be wrong here, as I had to quit these
>>> hopeless SLOW encoding attemps after a while:
>>>
>>> ffmpeg -i dv01_07.dv -c:v libaom-av1 -crf 30 -c:a libvorbis
>>> dv01_07_libaom-av1.webm
>>> ^C^Ze=   35 fps=0.1 q=0.0 size=       5kB time=00:00:03.00 bitrate=
>>> 13.7kbits/s speed=0.00748x
>>>
>>> ffmpeg -i dv01_07.dv -c:v librav1e -c:a libvorbis dv01_07_librav1e.webm
>>> frame=  471 fps=1.9 q=-0.0 Lsize=    4864kB time=00:00:19.11
>>> bitrate=2084.4kbits/s speed=0.0791x
>>>
>>> The CPU (i7 quad-cores 8 threads) utilization was here between 100-200%,
>>> while I think it ran at 700%+ for SVT-AV1.
>>>
>>> Anyway, apparently SVT-AV1 libsvtav1 shines as the superiour fastest and
>>> simple to use CPU based AV1 encoder (before GPU hwaccels)
>>>
>>
>> After rebuilding SVT-AV1 on termux for Neon acceleration I tried three
>> variations of same file:
>>
>> du -h av1-1.8.0*
>> 5.0M    av1-1.8.0-pr12.webm
>> 4.3M    av1-1.8.0-pr2.webm
>> 4.6M    av1-1.8.0.webm
>>
>> all on crf 30
>>
>> ffmpeg -i 20081103140154.m2t -c:v libsvtav1 -an -preset 2 -crf 30
>> av1-1.8.0-pr2.webm
>>
>> this one run at 0.2 fps
>>
>> ffmpeg -i 20081103140154.m2t -c:v libsvtav1 -an -preset 12 -crf 30
>> av1-1.8.0-pr12.webm
>>
>> this one run up to 9.4 fps!
>>
>> ffmpeg -i 20081103140154.m2t -c:v libsvtav1 -an -preset 6 -crf 30
>> av1-1.8.0.webm
>>
>> and this one run  at 1.3 fps.
>>
>> all files encoded from same input:
>>
>> Stream #0:0[0x810]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002),
>> yuv420p(tv, bt709, top first), 1440x1080 [SAR 4:3 DAR 16:9], 25000 kb/s, 25
>> fps, 25 tbr, 90k tbn
>>
>> So, I guess on aarch64 tablet this one definitely not as fast as on
>> desktop (x86_64) Intel.
>>
>>
>>
>> I also noticed this post 1 (yr. ago) on reddit, "SVT-AV1 on ARM"
>> https://www.reddit.com/r/AV1/comments/z9fo51/svtav1_on_arm/
>>
>> ---------------------
>>
>> So, regarding my initial "FHD (yuv422p10le)" below, where the audio was
>> lost during transcode from .mov to AV1 .webm:
>> I have tried to interpret and experiment with FFMpeg's "Selecting streams
>> with the -map option" https://trac.ffmpeg.org/wiki/Map
>>
>> ffprobe tells pcm_s24leand 16 channels in the Audio stream of the PreRes
>> input file hd01.mov:
>>
>>   Stream #0:0(eng): Video: prores (HQ) (apch / 0x68637061),
>> yuv422p10le(tv, bt709/unknown/unknown, top coded first (swapped)),
>> 1920x1080, 182130 kb/s, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 2500 tbn, 2500
>> tbc (default)
>>    Stream #0:1(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 16
>> channels, s32 (24 bit), 18432 kb/s (default)
>>
>> VLC playback the audio ok for the input file. So I tried a similar stream
>> map for transcode, but without success: Still no audio.
>>
>
> Is there possibility that you just hear 'empty'/silent channels? Are they
> all contain some audio, or some are silent?
>
>
> The hd01.mov 10-bit input file was initially back in 2016 recorded
> directly from my Sony HDV camera via HDMI out to a BM Hyperdeck shuttle 2.
> The camcorder has only stereo audio so I think the other streams may be
> empty, yes.
>

You can always try and load file into cinelerra-gg and see where audio  was
.... i think.


> VLC was not able to playback audio in 2016 from the ProRes.mov file, but
> does it fine now, while not from the av1.webm file. Attach a VLC screenshot
> clip of each.
> https://lists.cinelerra-cv.org/pipermail/cinelerra/2016q1/thread.html#4083
>
>
>
>
>
> Obviously I'm wrong applying this stream map numbering (just in case
>> someone see the fault without using much energy on it)?
>>
>
> example from "man ffmpeg" says:
>
>
> =====
>
> For example, assuming INPUT is a stereo audio file, you can switch the
> two                         audio channels with the following command:
>
>
>
> ffmpeg -i INPUT -map_channel 0.0.1 -map_channel 0.0.0 OUTPUT
>
>
> If you want to mute the first channel and keep the second:
>
>
>  ffmpeg -i INPUT -map_channel -1 -map_channel 0.0.1 OUTPUT
>
>            The order of the "-map_channel" option specifies the order of
> the channels in
>            the output stream. The output channel layout is guessed from
> the number of
>            channels mapped (mono if one "-map_channel", stereo if two,
> etc.). Using "-ac"                     in combination of "-map_channel"
> makes the channel gain levels to be updated                       if input
> and output channel layouts don't match (for instance two
>            "-map_channel" options and "-ac 6").
>
> =====
>
> But may be you better to ask on ffmpeg-users mail list, not sure if anyone
> was dealing with input files with such high number of channels there
> recently, but it feels a bit more populated than our corner!
>
>
> Maybe, if I explore BM Hyperdeck Shuttle to work again later on and . Last
> time I tried I got issue with the HFS+ SSDs mounted on Linux.
>
>
>>
>> ffmpeg -i hd01.mov -map 0:v -map 0:a -c:v libsvtav1 -preset 10 -crf 35
>> -c:a libvorbis hd01_mov_svt-av1_pr10.webm
>>
>
>
>
>
>
>>
>>
>>> Ref:
>>> https://ottverse.com/analysis-of-svt-av1-presets-and-crf-values/
>>>
>>>
>>>
>>> Here I add my latest test results for a *HDV (fps=69)* and a *FHD
>>> (fps=51)* video clip.
>>>
>>> 2.0G    hdv01_04.m2t
>>> 383M    hdv01_04_m2t_svt-av1_pr10.webm
>>>
>>> 1.7G    hd01.mov
>>> 20M     hd01_mov_svt-av1_pr10.webm
>>>
>>>
>>> *HDV* (yuv420p)
>>> -------
>>>
>>> *ffprobe -hide_banner hdv01_04.m2t*
>>> [mpeg2video @ 0x560c32966340] Invalid frame dimensions 0x0.
>>>     Last message repeated 7 times
>>> [mpegts @ 0x560c32960c00] PES packet size mismatch
>>> [mpegts @ 0x560c32960c00] Packet corrupt (stream = 1, dts = 295380000).
>>> [mpegts @ 0x560c32960c00] Could not find codec parameters for stream 2
>>> (Unknown: none ([160][0][0][0] / 0x00A0)): unknown codec
>>> Consider increasing the value for the 'analyzeduration' (0) and
>>> 'probesize' (5000000) options
>>> [mpegts @ 0x560c32960c00] Could not find codec parameters for stream 3
>>> (Unknown: none ([161][0][0][0] / 0x00A1)): unknown codec
>>> Consider increasing the value for the 'analyzeduration' (0) and
>>> 'probesize' (5000000) options
>>> Input #0, mpegts, from 'hdv01_04.m2t':
>>>   Duration: 00:10:57.34, start: 2624.856000, bitrate: 26134 kb/s
>>>   Program 100
>>>   Stream #0:0[0x810]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002),
>>> yuv420p(tv, bt709, top first), 1440x1080 [SAR 4:3 DAR 16:9], 25000 kb/s, 25
>>> fps, 25 tbr, 90k tbn
>>>     Side data:
>>>       cpb: bitrate max/min/avg: 25000000/0/0 buffer size: 7340032
>>> vbv_delay: N/A
>>>   Stream #0:1[0x814]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz,
>>> stereo, fltp, 384 kb/s
>>>   Stream #0:2[0x815]: Unknown: none ([160][0][0][0] / 0x00A0)
>>>   Stream #0:3[0x811]: Unknown: none ([161][0][0][0] / 0x00A1)
>>> Unsupported codec with id 0 for input stream 2
>>> Unsupported codec with id 0 for input stream 3
>>> --------------
>>>
>>> *ffmpeg -i hdv01_04.m2t -c:v libsvtav1 -preset 10 -crf 35 -c:a libvorbis
>>> hdv01_04_m2t_svt-av1_pr10.webm*
>>> frame=16420 *fps= 69* q=34.0 Lsize=  391289kB time=00:10:57.36
>>> bitrate=4876.2kbits/s speed=2.77x
>>>
>>>
>>> *ffprobe -hide_banner hdv01_04_m2t_svt-av1_pr10.webm*
>>> [libdav1d @ 0x562b42305540] libdav1d 1.3.0
>>> Input #0, matroska,webm, from 'hdv01_04_m2t_svt-av1_pr10.webm':
>>>   Metadata:
>>>     ENCODER         : Lavf60.3.100
>>>   Duration: 00:10:57.40, start: 0.000000, bitrate: 4875 kb/s
>>>   Stream #0:0: Video: av1 (Main), yuv420p(tv, bt709), 1440x1080, SAR 4:3
>>> DAR 16:9, 25 fps, 25 tbr, 1k tbn
>>>     Metadata:
>>>       ENCODER         : Lavc60.3.100 libsvtav1
>>>       DURATION        : 00:10:57.403000000
>>>   Stream #0:1: Audio: vorbis, 48000 Hz, stereo, fltp
>>>     Metadata:
>>>       ENCODER         : Lavc60.3.100 libvorbis
>>>       DURATION        : 00:10:57.171000000
>>> [libdav1d @ 0x562b42361540] libdav1d 1.3.0
>>>
>>> *FHD* *(*yuv422p10le*)*
>>> -----
>>>
>>> *ffprobe hd01.mov*
>>> .....
>>> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'hd01.mov':
>>>   Metadata:
>>>     creation_time   : 2016-02-23T23:49:21.000000Z
>>>   Duration: 00:01:11.28, start: 0.000000, bitrate: 200496 kb/s
>>>   Stream #0:0[0x1](eng): Video: prores (HQ) (apch / 0x68637061),
>>> *yuv422p10le(bt709*, top coded first (swapped)), 1920x1080, 182130
>>> kb/s, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 2500 tbn (default)
>>>     Metadata:
>>>       creation_time   : 2016-02-23T23:49:21.000000Z
>>>       handler_name    : Apple Video Media Handler
>>>       vendor_id       : appl
>>>       encoder         : Apple ProRes 422 (HQ)
>>>   Stream #0:1[0x2](eng): *Audio*: pcm_s24le (lpcm / 0x6D63706C), 48000
>>> Hz, 16 channels, s32 (24 bit), 18432 kb/s (default)
>>>     Metadata:
>>>       creation_time   : 2016-02-23T23:49:21.000000Z
>>>       handler_name    : Apple Sound Media Handler
>>>       vendor_id       : [0][0][0][0]
>>>
>>>
>>> * ffmpeg -i hd01.mov -c:v libsvtav1 -preset 10 -crf 35 -c:a libvorbis
>>> hd01_mov_svt-av1_pr10.webm*
>>> frame= 1781 *fps= 51* q=35.0 Lsize=   19732kB time=00:01:11.26
>>> bitrate=2268.3kbits/s speed=2.03x
>>>
>>>
>>> *ffprobe -hide_banner hdv01_04_m2t_svt-av1_pr10.webm*
>>> [libdav1d @ 0x562b42305540] libdav1d 1.3.0
>>> Input #0, matroska,webm, from 'hdv01_04_m2t_svt-av1_pr10.webm':
>>>   Metadata:
>>>     ENCODER         : Lavf60.3.100
>>>   Duration: 00:10:57.40, start: 0.000000, bitrate: 4875 kb/s
>>>   Stream #0:0: Video: av1 (Main), yuv420p(tv, bt709), 1440x1080, SAR 4:3
>>> DAR 16:9, 25 fps, 25 tbr, 1k tbn
>>>     Metadata:
>>>       ENCODER         : Lavc60.3.100 libsvtav1
>>>       DURATION        : 00:10:57.403000000
>>>   Stream #0:1: Audio: vorbis, 48000 Hz, stereo, fltp
>>>     Metadata:
>>>       ENCODER         : Lavc60.3.100 libvorbis
>>>       DURATION        : 00:10:57.171000000
>>>
>>>
>>> An issue is that the audio was lost during the conversion from .mov to
>>> .webm, so I attach the full ffmpeg output below.
>>> (possibly a mis-match regarding the audio stream #numbers ?)
>>>
>>> *ffmpeg -i hd01.mov -c:v libsvtav1 -preset 10 -crf 35 -c:a libvorbis
>>> hd01_mov_svt-av1_pr10.webm*
>>> ...
>>> Guessed Channel Layout for Input Stream #0.1 : hexadecagonal
>>> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'hd01.mov':
>>>   Metadata:
>>>     creation_time   : 2016-02-23T23:49:21.000000Z
>>>   Duration: 00:01:11.28, start: 0.000000, bitrate: 200496 kb/s
>>>   Stream #0:0[0x1](eng): Video: prores (HQ) (apch / 0x68637061),
>>> yuv422p10le(bt709, top coded first (swapped)), 1920x1080, 182130 kb/s, SAR
>>> 1:1 DAR 16:9, 25 fps, 25 tbr, 2500 tbn (default)
>>>     Metadata:
>>>       creation_time   : 2016-02-23T23:49:21.000000Z
>>>       handler_name    : Apple Video Media Handler
>>>       vendor_id       : appl
>>>       encoder         : Apple ProRes 422 (HQ)
>>>   Stream #0:1[0x2](eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz,
>>> 16 channels, s32 (24 bit), 18432 kb/s (default)
>>>     Metadata:
>>>       creation_time   : 2016-02-23T23:49:21.000000Z
>>>       handler_name    : Apple Sound Media Handler
>>>       vendor_id       : [0][0][0][0]
>>> Stream mapping:
>>>   Stream #0:0 -> #0:0 (prores (native) -> av1 (libsvtav1))
>>>   Stream #0:1 -> #0:1 (pcm_s24le (native) -> vorbis (libvorbis))
>>> Press [q] to stop, [?] for help
>>> Svt[info]: -------------------------------------------
>>> Svt[info]: SVT [version]:    SVT-AV1 Encoder Lib v1.7.0
>>> Svt[info]: SVT [build]  :    GCC 13.2.1 20230912 [revision
>>> b96e66fd4ef3e36983969fb8cdd1956f551a074b]     64 bit
>>> Svt[info]: LIB Build date: Nov  3 2023 00:00:00
>>> Svt[info]: -------------------------------------------
>>> Svt[info]: Number of logical cores available: 8
>>> Svt[info]: Number of PPCS 59
>>> Svt[info]: [asm level on system : up to avx2]
>>> Svt[info]: [asm level selected : up to avx2]
>>> Svt[info]: -------------------------------------------
>>> Svt[info]: SVT [config]: main profile    tier (auto)    level (auto)
>>> Svt[info]: SVT [config]: width / height / fps numerator / fps
>>> denominator         : 1920 / 1080 / 25 / 1
>>> Svt[info]: SVT [config]: bit-depth / color format                     :
>>> 10 / YUV420
>>> Svt[info]: SVT [config]: preset / tune / pred struct
>>> : 10 / PSNR / random access
>>> Svt[info]: SVT [config]: gop size / mini-gop size / key-frame type
>>>         : 161 / 16 / key frame
>>> Svt[info]: SVT [config]: BRC mode / rate factor                     :
>>> CRF / 35
>>> Svt[info]: -------------------------------------------
>>> Output #0, webm, to 'hd01_mov_svt-av1_pr10.webm':
>>>   Metadata:
>>>     encoder         : Lavf60.3.100
>>>   Stream #0:0(eng): Video: av1, yuv420p10le(tv, bt709, top coded first
>>> (swapped)), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 1k tbn (default)
>>>     Metadata:
>>>       creation_time   : 2016-02-23T23:49:21.000000Z
>>>       handler_name    : Apple Video Media Handler
>>>       vendor_id       : appl
>>>       encoder         : Lavc60.3.100 libsvtav1
>>>   Stream #0:1(eng): Audio: vorbis, 48000 Hz, hexadecagonal, fltp
>>> (default)
>>>     Metadata:
>>>       creation_time   : 2016-02-23T23:49:21.000000Z
>>>       handler_name    : Apple Sound Media Handler
>>>       vendor_id       : [0][0][0][0]
>>>       encoder         : Lavc60.3.100 libvorbis
>>> frame= 1781 fps= 51 q=35.0 Lsize=   19732kB time=00:01:11.26
>>> bitrate=2268.3kbits/s speed=2.03x
>>> video:18635kB audio:1059kB subtitle:0kB other streams:0kB global
>>> headers:3kB muxing overhead: 0.193378%
>>>
>>>
>>>
>>>
>>> --
>>> Cin mailing list
>>> Cin at lists.cinelerra-gg.org
>>> https://lists.cinelerra-gg.org/mailman/listinfo/cin
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20231217/c73ac6da/attachment-0001.htm>


More information about the Cin mailing list