[mediaplayer] provide 'silent' participant for sysmem

When an adjacent pair of nodes in a player graph both use sysmem and
are otherwise compatible, the player has them share a buffer
collection. The payload manager was written assuming that the player
didn't need access to the buffer collection in this scenario.

Unfortunately, the StreamProcessor wrapper is written in such a way
that it needs to know the number of buffers in the shared collection.
This could be fixed, but it turns out that ImagePipe2 requires us to
know this count as well. As an expedient, this CL updates
PayloadManager to participate 'silently' in the buffer collection and
produce an allocator provisioned with VMOs from collection. This
allows the player to interrogate the allocator to determine how many
buffers are in the collection.

Participating 'silently' just means that the player doesn't constrain
the collection in any way. Actual constraints on the collection are
imposed by the two nodes. In the future, node pairs that do this will
include decryptor->decoder and decoder->imagepipe2.

PayloadManager was also modified to defer creating sysmem buffer
collection tokens. Previously, in the shared-sysmem-collection case,
two sets of tokens would be created, and one set would be discarded.
By deferring the creation of the second set of tokens until we know
they're needed, the new code creates only one set of tokens for the
shared-sysmem-collection case.

TEST: the payload manager unit test was updated to reflect the new
      behavior
Change-Id: I18af166ea1a5a9626eeabeb1eeddd8b4a275e7c7
3 files changed
tree: 81a772df89b86798e75ce172bdad6a4fc3b9afe3
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. garnet/
  7. peridot/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .dir-locals.el
  18. .gitattributes
  19. .gitignore
  20. .gn
  21. .style.yapf
  22. AUTHORS
  23. BUILD.gn
  24. CODE_OF_CONDUCT.md
  25. CONTRIBUTING.md
  26. LICENSE
  27. OWNERS
  28. PATENTS
  29. README.md
  30. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.