[roll] Roll fuchsia [audio_core] Enable high downsampling ratios

Downsampling ratios beyond 24:1 were not previously possible, because
of the size of an internal ChannelStrip buffer in SincSampler. This
buffer must accomodate at least an entire filter-window of data, and
filter widths scale linearly with the downsample ratio.

With this fix, the filter width is also capped, leading to a graceful
decrease in quality (from gradual narrowing of effective filter width)
for downsample ratios beyond a certain threshold. Also, SincSampler
sets a slightly larger ChannelStrip buffer size, matching the new
filter-width cap specified in filter.h.

The new filter width cap is inextricably linked to ChannelStrip size,
which in turn is set so as to balance speed/quality with cost. At the
192:8 ratio, processing five frames for each cache-shift (a reasonable
performance threshold) requires a ChannelStrip buffer of 768 frames.
This width is also the exact width that guarantees at least two
side-taps during a 192:1 conversion (192K and 1K are our system max
and min frequencies, respectively). The 768-frame filter width
(expressed by a max full-quality downsample ratio of 27.5) achieves
reasonable performance at 192:8 while guaranteeing a minimum baseline
quality level at our 192:1 conversion-rate limit.

Test: fx test -o audio_fidelity_tests -- --recap
audio_mixer_profiler --frame-rates=192000:8000,192000:1000 --channels=1:1

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/494780
Original-Revision: f6d8abea7ecdd8cd3380c695709c7f068a159101
GitOrigin-RevId: b1a9c72c25f482bf0095d093eed566653c85c204
Change-Id: I7c19365e4bf8ec02f79ca40489fec3bc47a86c82
1 file changed
tree: 8af4ea47b64e4a90c96fee8c632b2430adde9288
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. firmware
  8. flower
  9. jiri.lock
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
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.