[codec_impl] Send OnStreamFailed before OnFreeInputPacket

It is largely expected for decrypting StreamProcessors to encounter a
stream failure on the first decrypt packet, as keys may not be available
yet. When this occurs, a OnStreamFailed event is sent and the stream
must be restarted. In http://fxrev.dev/486344, a change was made to
call OnFreeInputPacket for the packet that failed due to the lack of
keys to signal the client that the packet is free. However, since those
are independent events, there is no indication to the client that this
packet failed. In some h264 streams, if that first packet is not
retried, then the subsequent decoding attempt will fail as well.

For that reason, it is temporarily preferable to have the client assume
that any input packets and buffers currently with the StreamProcessor at
the point of stream failure were unable to be completed. The
OnFreeInputPacket events for those pending packets will be sent after
the OnStreamFailed event so that the client knows that they are
available for re-use.

Bug: b/177173519, b/180649772
Change-Id: I7ae80bb6c11b2cd122d22b38606c8c5a342d64b8
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/486837
Reviewed-by: Dustin Green <dustingreen@google.com>
Reviewed-by: Austin Foxley <afoxley@google.com>
Commit-Queue: RJ Ascani <rjascani@google.com>
API-Review: Dale Sather <dalesat@google.com>
2 files changed
tree: fe60604a4a1d6acaca50ebe743f40f0a69806766
  1. .clang-format
  2. .clang-tidy
  3. .git-blame-ignore-revs
  4. .gitattributes
  5. .gitignore
  6. .gn
  7. .style.yapf
  9. BUILD.gn
  13. OWNERS
  15. README.md
  16. boards/
  17. build/
  18. buildtools/
  19. bundles/
  20. docs/
  21. examples/
  22. garnet/
  23. products/
  24. rustfmt.toml
  25. scripts/
  26. sdk/
  27. src/
  28. third_party/
  29. tools/
  30. zircon/


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.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.