[roll] Roll fuchsia [audio] silent-packet checker and TRACE events

Add SilentPacketChecker functions to audio/lib/analysis, and
enable detection in AudioCore if the developer opts-in.

Only when tracing is started and category "audio" is enabled,
AudioCore will analyze each renderer's incoming data packets,
using this new checker. For every audio packet that contains
only silence, AudioCore will emit a TRACE_INSTANT event with
relevant metadata.

These events should be useful during dropout investigations,
without burdening the product in the vast majority of cases
where "audio" tracing is disabled, and avoiding unneeded
traffic to Inspect or system log spam.

Note that digital silence is still perfectly valid audio, so
a packet that contains only silence may be entirely expected
(depending on audio content and/or renderer client behavior).
This is why, upon detection of a silent packet, we only emit
a TRACE event and do not also chronicle this in Inspect and/
or the system log and/or Cobalt. However, if the occasional
silent packet is definitely NOT the client's intention --
and if we know that the content generally does not contain
stretches of silence -- then the events provide additional
data toward pinpointing the source of audio discontinuities
(in this case dropouts) in the end-to-end audio signal path.

For these purposes, "digital silence" is defined within the
precision supported by the format's sample container. For
24-in-32 format ("padded-24") samples, we completely ignore
the contents of the least-significant ("pad") byte. For
32-bit float samples, we consider values in the range
negative std::numeric_limits<float>::epsilon() to
positive std::numeric_limits<float>::epsilon()
(inclusive) to be equivalent to -/+0.0f.

Test: new unittest cases; manually observed trace events

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/908684
Original-Revision: 39dca3cd1abbf9a5dacb6fc274cdad014d9aed6a
GitOrigin-RevId: 2b2b005aa696181e47e2b1ae4179fb459ee2fab8
Change-Id: Ie9998bfa8cd3d2201497acffade2cc4de0a6335e
1 file changed
tree: 18caa404911b6372b993531cec1878a0b025e227
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
  14. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.