Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Video Encoding > VP9 and AV1

Reply
 
Thread Tools Search this Thread Display Modes
Old 14th September 2018, 12:48   #941  |  Link
marcomsousa
Registered User
 
Join Date: Jul 2018
Posts: 80
Quote:
Originally Posted by SmilingWolf View Post
Zeranoe build:
Code:
libaom-av1 @ 0000000000485ac0] 1.0.0-507-g5d963cb57
My own:
Code:
[libaom-av1 @ 0000000000338500] 1.0.0-577-g8ae39302e
ffmpeg/Zeranoe build don't have the 70 optimization commits that you have in libaom-av1.

ffmpeg-20180913-1b98bfb-win64

Code:
ffmpeg -threads 4 -i 1080.mp4  -benchmark -f null -
ffmpeg version N-91943-g1b98bfb932 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 8.2.1 (GCC) 20180813
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
  libavutil      56. 19.101 / 56. 19.101
  libavcodec     58. 30.100 / 58. 30.100
  libavformat    58. 18.100 / 58. 18.100
  libavdevice    58.  4.103 / 58.  4.103
  libavfilter     7. 31.100 /  7. 31.100
  libswscale      5.  2.100 /  5.  2.100
  libswresample   3.  2.100 /  3.  2.100
  libpostproc    55.  2.100 / 55.  2.100
[libaom-av1 @ 000001e19c898940] 1.0.0-507-g5d963cb57
Stream mapping:
  Stream #0:0 -> #0:0 (av1 (libaom-av1) -> wrapped_avframe (native))
Press [q] to stop, [?] for help
Output #0, null, to 'pipe:':
  Metadata:
    major_brand     : dash
    minor_version   : 0
    compatible_brands: iso6av01mp41
    encoder         : Lavf58.18.100
    Stream #0:0(und): Video: wrapped_avframe, yuv420p, 1920x1080, q=2-31, 200 kb/s, 29.97 fps, 29.97 tbn, 29.97 tbc (default)
    Metadata:
      creation_time   : 2018-09-12T19:11:12.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 09/12/2018.
      encoder         : Lavc58.30.100 wrapped_avframe
frame= 1736 fps= 19 q=-0.0 Lsize=N/A time=00:00:57.92 bitrate=N/A speed=0.637x
video:909kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
bench: utime=88.703s stime=0.938s rtime=90.919s
bench: maxrss=233580kB

Last edited by marcomsousa; 14th September 2018 at 12:59.
marcomsousa is offline   Reply With Quote
Old 14th September 2018, 13:51   #942  |  Link
SmilingWolf
I am maddo saientisto!
 
SmilingWolf's Avatar
 
Join Date: Aug 2018
Posts: 95
Sure, which was one of the options considered in my post. The 20180913 build with the current ffmpeg HEAD (91943-g1b98bfb932) wasn't out when I tested, so I couldn't be sure.
Still, to double performance in just about 8 days (Zeranoe aom revision: 20180906-5d963cb) is really a LOT, especially considering a lot of the commits are either bugfixes or encoding-related.

Turns out the commit that really made the difference is f820da0 - Turn on the row-based multi-thread decoder by default.

Code:
# time ./aomdec.850e126ac.exe --threads=4 -o /dev/null "Gus Kenworthy & Tom Wallisch X Games Slopestyle GoPro Preview.1080.ivf"

real    1m0,929s
user    0m0,000s
sys     0m0,000s

# time ./aomdec.f820da02b.exe --threads=4 -o /dev/null "Gus Kenworthy & Tom Wallisch X Games Slopestyle GoPro Preview.1080.ivf"

real    0m37,947s
user    0m0,000s
sys     0m0,000s
SmilingWolf is offline   Reply With Quote
Old 14th September 2018, 14:59   #943  |  Link
LigH
German doom9/Gleitz SuMo
 
LigH's Avatar
 
Join Date: Oct 2001
Location: Germany, rural Altmark
Posts: 6,752
New uploads:

AOM v1.0.0-577-g8ae39302e noVO (MSYS2; MinGW32: GCC 7.3.0 / MinGW64: GCC 8.2.0 with -fno-tree-slp-vectorize)
AOM v1.0.0-577-g8ae39302e (MSYS2; MinGW32: GCC 7.3.0 / MinGW64: GCC 8.2.0) – no crash in 2-pass for me

rav1e 0.1.0 (1fa32bb / 2018-09-14) (MSYS2; MinGW32: GCC 7.3.0 / MinGW64: GCC 8.2.0)
__________________

New German Gleitz board
MediaFire: x264 | x265 | VPx | AOM | Xvid

Last edited by LigH; 23rd September 2018 at 17:42.
LigH is offline   Reply With Quote
Old 14th September 2018, 16:12   #944  |  Link
birdie
Artem S. Tashkinov
 
birdie's Avatar
 
Join Date: Dec 2006
Posts: 337
AV1 in MP4 has been standardized: https://cdn.rawgit.com/AOMediaCodec/...0.0/index.html
birdie is offline   Reply With Quote
Old 14th September 2018, 16:49   #945  |  Link
Tommy Carrot
Registered User
 
Tommy Carrot's Avatar
 
Join Date: Mar 2002
Posts: 863
Thanks Ligh and Smilingwolf for the builds. For some reason, Smilingwolf's build is considerably faster (finished the same encode in 40 minutes vs 67). I used your unpatched build, Ligh, and 64 bit versions. I don't know if this happens because of difference in the compiler settings, or because Smilingwolf sets CONFIG_LOWBITDEPTH=1. The outputs are identical.

Last edited by Tommy Carrot; 14th September 2018 at 16:53.
Tommy Carrot is offline   Reply With Quote
Old 14th September 2018, 20:42   #946  |  Link
Nintendo Maniac 64
Registered User
 
Nintendo Maniac 64's Avatar
 
Join Date: Nov 2009
Location: Northeast Ohio
Posts: 447
Quote:
Originally Posted by marcomsousa View Post
It's correct, since webm support for av1 isn't finalized. Also youtube-dl download what youtube give, and Youtube have av1 in mp4 container with mp4 schema (av01.0.05M.08).
Again, kind of out-of-the-loop, but since AV1 will support MP4 and WebM unlike VP8/9, one has to wonder which container would be "better?"

(I would imagine that AV1 in MP4 would have better compatibility on Apple devices in the future, but I wasn't really concerned about the difference in support as so much if either of the MP4 or WebM containers are objectively "better" on a technological level than the other).
Nintendo Maniac 64 is offline   Reply With Quote
Old 14th September 2018, 20:52   #947  |  Link
mzso
Registered User
 
Join Date: Oct 2009
Posts: 930
Quote:
Originally Posted by Nintendo Maniac 64 View Post
Again, kind of out-of-the-loop, but since AV1 will support MP4 and WebM unlike VP8/9, one has to wonder which container would be "better?"

(I would imagine that AV1 in MP4 would have better compatibility on Apple devices in the future, but I wasn't really concerned about the difference in support as so much if either of the MP4 or WebM containers are objectively "better" on a technological level than the other).
I don't think that mp4 store opus/vorbis for one. Probably the most efficient lossy audio codecs.
mzso is offline   Reply With Quote
Old 14th September 2018, 20:58   #948  |  Link
Nintendo Maniac 64
Registered User
 
Nintendo Maniac 64's Avatar
 
Join Date: Nov 2009
Location: Northeast Ohio
Posts: 447
Quote:
Originally Posted by marcomsousa View Post
CPU at 62%
Intel Core i7-8550U
Interesting how both of our CPUs have the exact same 4c/8t configuration, yet you're seeing more than 2x the CPU utilization than I am...


Mathmatically that would mean that you're utilizing at least 5 threads, which would equal out to being something like 4 cores and 1 SMT thread.

I do know that that my Nehalem predates AVX and that newer CPUs also have stronger SMT (this is particularly true with Zen cores), so I've got to wonder if something between those two variables is resulting in AV1 utilizing multiple threads much better on your Kabylake i7 than it does on my Nehalem Xeon.

I mean, I know that Sky/Kaby/Coffee lake will have anywhere from 30% to 50% higher single core IPC than Nehalem, but I wouldn't think that would account for any difference in how many cores are being utilized at any given time (outside of SMT threads being used, but I'm not even seeing any utilization on my fourth hardware core let alone SMT).

Last edited by Nintendo Maniac 64; 14th September 2018 at 21:11.
Nintendo Maniac 64 is offline   Reply With Quote
Old 14th September 2018, 21:54   #949  |  Link
sneaker_ger
Registered User
 
Join Date: Dec 2002
Posts: 5,565
Quote:
Originally Posted by mzso View Post
I don't think that mp4 store opus/vorbis for one.
http://opus-codec.org/docs/opus_in_isobmff.html
sneaker_ger is offline   Reply With Quote
Old 14th September 2018, 22:55   #950  |  Link
mzso
Registered User
 
Join Date: Oct 2009
Posts: 930
Quote:
Originally Posted by sneaker_ger View Post
Quote:
Version 0.6.8 (incomplete)

last updated: April 28, 2016
So, not done yet. If it'll ever be.
mzso is offline   Reply With Quote
Old 15th September 2018, 04:31   #951  |  Link
Nintendo Maniac 64
Registered User
 
Nintendo Maniac 64's Avatar
 
Join Date: Nov 2009
Location: Northeast Ohio
Posts: 447
Well then, as someone with much more expertise in audio than video, Opus not being compatible with MP4 is a big win for WebM in my book.

...unless you do streaming in the same manner that YouTube does whereby you just deliver completely independent streams for audio and video, therefore allowing you to use MP4 and WebM streams concurrently (sometimes a recently-uploaded video will have VP9 video encodes but only AAC audio encodes for whatever reason; here's an example video of such that has VP9 video yet only AAC audio as of this comment).
Nintendo Maniac 64 is offline   Reply With Quote
Old 15th September 2018, 07:38   #952  |  Link
Blue_MiSfit
Derek Prestegard IRL
 
Blue_MiSfit's Avatar
 
Join Date: Nov 2003
Location: Los Angeles
Posts: 5,988
Quote:
Originally Posted by Nintendo Maniac 64 View Post
Well then, as someone with much more expertise in audio than video, Opus not being compatible with MP4 is a big win for WebM in my book.

...unless you do streaming in the same manner that YouTube does whereby you just deliver completely independent streams for audio and video, therefore allowing you to use MP4 and WebM streams concurrently (sometimes a recently-uploaded video will have VP9 video encodes but only AAC audio encodes for whatever reason; here's an example video of such that has VP9 video yet only AAC audio as of this comment).
So - speaking from the perspective of an OTT operator, having separate audio and video files is quite common for both HLS and DASH. This is basically mandatory the second you want to offer more than one audio track (e.g. multiple languages or 2.0 vs 5.1 etc).

I believe YouTube uses DASH by default on modern browsers. I know you can do fMP4 and webm via DASH but I didn't realize you could mix both in a DASH manifest, but YouTube is clearly doing this with their AV1 + Opus streams.

I do imagine that YouTube's JavaScript player is quite specialized though. I wouldn't expect this to work OOTB on other DASH clients like a Roku or something like dash.js (even if the underlying audio / video decoders supported AV1 and Opus) - but then again I've never tried
Blue_MiSfit is offline   Reply With Quote
Old 15th September 2018, 12:59   #953  |  Link
benwaggoner
Moderator
 
Join Date: Jan 2006
Location: Portland, OR
Posts: 4,750
Quote:
Originally Posted by mzso View Post
I don't think that mp4 store opus/vorbis for one. Probably the most efficient lossy audio codecs.
xHE-AAC is really very good and going to be widely adopted in the mobile ecosystem. Similar mixed voice/other encoding like Opus. significantly better quality <24 Kbps in my limited testing.

As for container, WebM and MKV just aren't used for mainstream commercial content or streaming outside of YouTube. MP4 has a huge and mature ecosystem that is already deployed, and there's nothing about WebM that would justify the cost of switching ALL those components to ones that support WebM. There are so many components for transport, muxing, demuxing, encryption, decryption, fragmentation, ALL of which would have to be updated for WebM to be viable. All it takes is a few legacy-but-supported devices that can't use WebM to keep an organization from even contemplating switching. And even if all the components were updated, what would switching from MP4 improve?

I can't imagine any container format replacing MPEG-4 for at least a decade. If new container features are needed, they'll most likely be done as an official extension of MP4 by MPEG.
__________________
Ben Waggoner
Principal Video Specialist, Amazon Prime Video

My Compression Book
benwaggoner is offline   Reply With Quote
Old 15th September 2018, 15:10   #954  |  Link
mzso
Registered User
 
Join Date: Oct 2009
Posts: 930
@benwaggoner
Well, I for one don't care at all about <100kbps crappines whatever the codec may be.
mzso is offline   Reply With Quote
Old 15th September 2018, 15:27   #955  |  Link
Zebulon84
Registered User
 
Join Date: Apr 2015
Posts: 21
From what I understand, the main point of AV1 is to have a good royalty free codec. Why associate it with an audio codec that require licensing like xHE-AAC, when an equivalent royalty free codec like opus exist ?
Compatibility is not an issue, as nothing is compatible with AV1 today, so you can just add both together.
Zebulon84 is offline   Reply With Quote
Old 15th September 2018, 17:50   #956  |  Link
IgorC
Registered User
 
Join Date: Apr 2004
Posts: 1,315
Quote:
Originally Posted by benwaggoner View Post
xHE-AAC is really very good and going to be widely adopted in the mobile ecosystem.
???

xHE-AAC, Opus, HEVC and VP9 were all standarized at the same time.

VP9, HEVC and Opus were adopted in many applications.

xHE-AAC? Name me one functional encoder. 6 years and counting.
No market for its licensing (Opus did it), awfully late and too little.
xHE-AAC is dead.
IgorC is offline   Reply With Quote
Old 15th September 2018, 19:40   #957  |  Link
benwaggoner
Moderator
 
Join Date: Jan 2006
Location: Portland, OR
Posts: 4,750
Quote:
Originally Posted by mzso View Post
@benwaggoner
Well, I for one don't care at all about <100kbps crappines whatever the codec may be.
You may not. But if you are in rural India on a 2G network, you would care a LOT. And have a lot of company.

Or, if you are in a subway, or on airport WiFi.
__________________
Ben Waggoner
Principal Video Specialist, Amazon Prime Video

My Compression Book
benwaggoner is offline   Reply With Quote
Old 15th September 2018, 21:33   #958  |  Link
Nintendo Maniac 64
Registered User
 
Nintendo Maniac 64's Avatar
 
Join Date: Nov 2009
Location: Northeast Ohio
Posts: 447
Hey, has anyone tried decoding AV1 on a CPU that lacks AVX and seeing what the resulting CPU utilization is? (for reference, even the newest 2c/4t Coffee lake Pentiums lack AVX) I'm starting to wonder if my Xeon's under-utilization is due to the fact that my CPU completely predates AVX...

I know that a similar thing happened in the past where VP9 had some heavy optimizations for SSSE3 (I don't believe this is the case anymore) which resulted in something like a 2.5x performance gain simply by having SSSE3 support (which wasn't present on AMD CPUs until 2011).
Nintendo Maniac 64 is offline   Reply With Quote
Old 15th September 2018, 22:25   #959  |  Link
MoSal
Registered User
 
Join Date: Jun 2013
Posts: 95
Quote:
Originally Posted by Nintendo Maniac 64 View Post
Hey, has anyone tried decoding AV1 on a CPU that lacks AVX and seeing what the resulting CPU utilization is? (for reference, even the newest 2c/4t Coffee lake Pentiums lack AVX) I'm starting to wonder if my Xeon's under-utilization is due to the fact that my CPU completely predates AVX...
I know this doesn't exactly answer your question, but I profiled the decoder with an AVX2-capable CPU, and while there are hot AVX2 optimized functions (namely the ones called by av1_make_inter_predictor), a lot of (currently) hot functions are still implemented in C (e.g. av1_read_coeffs_txb and od_ec_decode_cdf_q15). So the decoder is still not well-optimized SIMD-wise, regardless of the instruction set.

Everyone will probably end up using ffav1 anyway, so this shouldn't really matter.
__________________
https://github.com/MoSal

Last edited by MoSal; 15th September 2018 at 23:14.
MoSal is offline   Reply With Quote
Old 15th September 2018, 22:46   #960  |  Link
lvqcl
Registered User
 
Join Date: Aug 2015
Posts: 293
Quote:
Originally Posted by MoSal View Post
Everyone will probably end up using ffav1 anyway
From Video Dev Days 2018 (September 22):
Quote:
Dav1d: a fast new AV1 decoder

Dav1d is Dav1d.
lvqcl is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 11:15.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.