Why you should care about AOM-Analyzer Tool ​!

Vibhoothi

2019-02-18

Hi Folks,
It’s been a while I have written a blog, this is the right time I guess. So lately I am trying to do a kind of research with video encoding in power constrained devices as part of my undergrad thesis project. So I was going into more details about encoders in general. After that, I have also gone through the details about HEVC, AV1 and all.
We all know about very positive development advances in AV1 when we see with HEVC. So if you are not following anything in this digital video field, AV1 is next generation and new standard after HEVC.It could have like 40% better picture quality than HEVCcross-platform but as_of_now the main issue or the main disadvantage of av1 is the fact that it is very compute intensive, for solving this issue the much required thing would be having a nice software which does a full analysis of the video including the metadata.

Now there is a tool called AOM-Analyser which is there for a while

image650c

This tool is a bitstream analysis which does various analysis of a video. This is a cross platform tool for macOS, Windows and also Linux. This is also open sourced at GitHub. You can grab it if you want to try out for yourself. We can also download the pre compiled ones and use it if you dont want to build your own. There is a very nice live demo of the tool for anyone to see before downloading.

You can refer to the GitHub readme.

This tool was the first attempt to make some contribution for effective analysis considering the fact that we need huge intense amount of computation power. It is not really feasible for a user to do the encoding things locally because if we want to encode a single video frame it could take very long time ranging from hours to days. Most of the companies and developers run the encoders in the cloud platform running parallely. he anlyser decodes AV1 bitstream and display many information about a particular bitstream. As per tests it is said that for a single 1080p video frame it produces around 4MB of raw image data and big amount of analysis metadata. When one do it locally it can be very small to no issues but when someone does it online will be the biggest enemy would be huge data bandwidth and latency. After lots of discussions the team came up with an ideal solution ie run it directly in cloud which does potentially solve this issue but for running the bitstream analyser one need to also have everything in the JavaScript format, for that team used Emscripten which could do this and run inside the browser itself.

The Analyser is made of two components one is a emscripten compiled version of the codec( decoder.js) and another file which is the frontend of app based of HTML and Typescript.

Anyone can do this analysis of the video, all he/she need to do is specify a video file possibly in “*.ivf” format and also appropriate emscripten script compiled version of the decoder to decode it. The format of this would be like

How to Run

We can use electron for running the analyzer

<em>electron . decoder1 video1</em>

Both decoder and video parameters can either point to a local file or we could also use a remote url.
If you didn’t specify any arguments then it will select any random jobs from areWeCompressedYet.
Like I said earlier if you did download a standalone package of the tool then you don’t need to use electron, you can directly run the binary directly from command line.

We can also use multiple decoders for analysis of the video.

There are various other command line options for doing this ie.

The best part of this is that everything you did can be easily shared and all this is inside the browser. The decoder JS are generated automatically and submitted to AreWeCompressedYet so anyone can use it.

You can download videos from here for doing the encoding in local machine. I will recommend using in_to_tree, ducks_take_off, crowd_run, old_town_cross, these all are 8bit, one could use either 1080 or 720p as it will be better for doing the test.

Toolbar

AOM Analyzer has a toolbar at the top

Toolbar View:

image400

This Toolbar has different options like

image500c

The above image is a bit distribution of the read partition symbol.

image500c

CDEF Filter

Video Tabs

image500c

Video Tab

The very top tabs let you toggle between videos. For this we could also use number keys.

Current Video Quick Info

image500c

The Red bar

The red bar at the top gives us a quick insight of the video’s current frame provides quick info about the current frame.

Tab bar

image300c

Histogram View of UV Prediction Mode

image500c

More Tab

Issues with the current Analyzer

As of now with AOM Analyzer we cannot properly visualize the encoder metadata, we need to find a solution for this. Rav1e team is working on building a solution for this problem. In past Daala analyzer, av1 analyser did some major job for making this task easy but still there is a lot to be improved and a lot of new metadata needs to be analysed. For instance, if we want to get a more rapid analysis of frame allocation within a particular scene, we are not sure about how it could be done.

PS: These information are not 100% accurate, these are my own opinions and have referred to below mentioned websites, for more information you can refer to those websites.

References

https://hackernoon.com/av1-bitstream-analyzer-d25f1c27072b

https://github.com/mbebenita/aomanalyzer

https://hacks.mozilla.org/2018/06/av1-next-generation-video-the-constrained-directional-enhancement-filter/

https://github.com/xiph/rav1e

https://aomedia.googlesource.com/aom

~ mindfreeze