< Back to blog

Analytic tools 7.2 – VVC code coverage


New Analytic tools version 7.2. with long-awaited code coverage representation for VVC is here! Analytic tools are the proven tools to analyze the syntax and code coverage of video streams. They give maximum flexibility and can be used with DVK streams and any customer streams as well. The tools render a graphical representation of syntax coverages, speed up the test cycles by reducing the streams and their number, compare the stream coverage.

Analytic tools 7.2 – VVC code coverage

Innovations

We implemented code coverage for the VVC codec.

Upon reorganizing code coverage representation with the Clang compiler for AV1, the efforts were focused on implementing this feature for VVC. At last, the work is completed, and there are some peculiarities I'd like to acquaint you with.

C++ code coverage features

While AV1 was written in C language, VVC was created using C++. Thus, some issues occurred, which in this case were solved in Analytic tools to represent the code coverage of C++ sources in the most human-readable view.

Function names demangling

After the compilation process of the C++ program, some people might be surprised by the appearance of function names in their code. All because the compiler «understands» function identifiers differently and «sees» them in a mangled way. To make these identifiers human-readable again, they should undergo the demangling process.

Pic 1. «Demangled Visual C++ function name»Pic 1. «Demangled Visual C++ function name»

Template functions coverage merge

C ++ allows you to use a wide range of its capabilities. One of them, «template functions realization », can cause some problems for code coverage statistics. Clang provides very detailed code coverage reports, where every function is viewed in a mangled way; thus, different realizations of one template function will spawn an instance of a particular realization coverage. This approach grants many advantages, but let's imagine that we have a template function that spawned three realizations of itself. You might see three partly covered functions, but their merged coverage is 100% because eventually, every code region of the template function has been covered. The solution is to represent the summary coverage of the template functions in coverage reports to show real coverage percent to the user.

Full changelog

Version 7.2 Markup processing was rearranged

  • Symbol position was removed from the markup strings. Start and end positions are now defined by the markup string beginning.
  • Code coverage processing was reorganized to be built with the pure version of the codec decoder.

Version 7.1 VVC code coverage was implemented

  • Function names demangling was applied to each one in the VVC codec source
  • The template functions were merged with each of their realizations to represent summarized code coverage info.

The reporter design was slightly updated

  • The source file horizontal scrolling was added for long-line files.
  • Code line cursor-hovering effect was changed to text highlighting, not the whole line section.

Plans for future releases

Though VVC code coverage was implemented, there is a lot of work to do with the analytic tools! The next steps are to add AVS3 support and implement the linux-based code coverage.

You can use the latest version of analytic tools by purchasing DVK or contact us to get solely analytic tools!

Or check the available sets here.