EVS Header-Full format padding issues
Summary
According to 3GPP TS 26445 A.2.2.1 (and A.2.2.1.4.2) when header full EVS codec is used some padding bytes have to be appended to RTP payload to increase the total payload. The increment should be enough to avoid any conflict with protected sizes reserved to compact format.
Because of this, according to RFC3550 (par 5.1), since one or more padding bytes are inserted, these should be followed by a byte count of them and of course the Padding bit of RTP header has to be set.
In the current version (and older too) the evs dissector works decoding regardless of the fact that there are padding bytes and confuses the bit rate.
Steps to reproduce
To verify try to open (and compare) the following pcap files:
- https://drive.google.com/file/d/1cHAKrcxuk5z4weTL6B35YyuCyUeMXJsS/view?usp=sharing (agam3f02-7p2-fh20-noreq.192.pcap)
- https://drive.google.com/file/d/1ECKnCgG1YTQiv3ArQZHVHehXRheGfmSf/view?usp=sharing (agam3f02-7p2-fh20-none.192.pcap) Both of them are (without any signalling) only about RTP EVS header full, primary 7.2 kb/s flow (done by my self), with a TOC byte for packet but the first use CMR byte (a NoReq value, that's 0xff), the latter is instead without any CMR. Results: decoding the 1) .pcap dissector shows a primary 8.0kbit/s rate. The decoding of 2) is correct.
Build information
I verified the behaviour in 3.6.7 version on Win10 and also on 4.0.0. Here below the info about them.
3.6.7 (v3.6.7-0-g4a304d7e)
Compiled (64-bit) using Microsoft Visual Studio 2019 (VC++ 14.31, build 31107), with Qt 5.15.2, with libpcap, with GLib 2.66.4, with zlib 1.2.11, with Lua 5.2.4, with GnuTLS 3.6.3 and PKCS #11 (closed) support, with Gcrypt 1.8.3, with MIT Kerberos, with MaxMind DB resolver, with nghttp2 1.44.0, with brotli, with LZ4, with Zstandard, with Snappy, with libxml2 2.9.10, with libsmi 0.4.8, with QtMultimedia, with automatic updates using WinSparkle 0.5.7, with AirPcap, with SpeexDSP (using bundled resampler), with Minizip.
Running on 64-bit Windows 10 (1909), build 18363, with Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz (with SSE4.2), with 8062 MB of physical memory, with GLib 2.66.4, with Qt 5.15.2, with Npcap version 1.60, based on libpcap version 1.10.2-PRE-GIT, with c-ares 1.17.0, with GnuTLS 3.6.3, with Gcrypt 1.8.3, with nghttp2 1.44.0, with brotli 1.0.9, with LZ4 1.9.3, with Zstandard 1.4.0, without AirPcap, with light display mode, without HiDPI, with LC_TYPE=Italian_Italy.utf8, binary plugins supported (21 loaded).
Version 4.0.0 (v4.0.0-0-g0cbe09cd).
Compiled (64-bit) using Microsoft Visual Studio 2022 (VC++ 14.32, build 31332), with GLib 2.72.3, with PCRE2, with zlib 1.2.12, with Qt 6.2.3, with libpcap, with Lua 5.2.4, with GnuTLS 3.6.3 and PKCS #11 (closed) support, with Gcrypt 1.10.1, with Kerberos (MIT), with MaxMind, with nghttp2 1.46.0, with brotli, with LZ4, with Zstandard, with Snappy, with libxml2 2.9.14, with libsmi 0.4.8, with QtMultimedia, with automatic updates using WinSparkle 0.5.7, with AirPcap, with SpeexDSP (using bundled resampler), with Minizip, with binary plugins.
Running on 64-bit Windows 10 (21H1), build 19043, with Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz (with SSE4.2), with 7968 MB of physical memory, with GLib 2.72.3, with PCRE2 10.40 2022-04-14, with Qt 6.2.3, with Npcap version 1.71, based on libpcap version 1.10.2-PRE-GIT, with c-ares 1.18.1, with GnuTLS 3.6.3, with Gcrypt 1.10.1, with nghttp2 1.46.0, with brotli 1.0.9, with LZ4 1.9.3, with Zstandard 1.5.2, without AirPcap, with light display mode, with HiDPI, with LC_TYPE=Italian_Italy.utf8, binary plugins supported.
Thanks for the attention. For any question and comment don't hesitate. Massimiliano