media/gpu: Add H.264 Frame Num passthrough when not supported

The ToT H.264 decoder was setup to detect and handle frame number
gaps. If a frame gap is detected, the decoder will check if the
sequence allows gaps via the |gaps_in_frame_num_value_allowed_flag|. If
this flag is set to false, the decoder will log that it is invalid, but
will try to handle the frame num gap anyway which causes issues on some
platforms.

Updates the H.264 decoder logic to add passthrough logic to the
HandleFrameNumGap function if the |gaps_in_frame_num_value_allowed_flag|
is set to false. If set to false, it will log that it is ignoring the
frame num gap and returning true, acting as a passthrough.

Bug: b:311839666
Test: Ran
video.ChromeStackDecoderVerification.h264_files_from_bugs_299320432 on
Asurada and Cherry and Brya.
Also ran video.ChromeStackDecoderVerification.h264_baseline on
Asurada and Cherry and Brya.

Change-Id: I5b217c44e38ccde9ab8de3a695ae4f6419420e3f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5280637
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Reviewed-by: Miguel Casas-Sanchez <mcasas@chromium.org>
Commit-Queue: Bijan Choobineh‎ <bchoobineh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1258848}
1 file changed
tree: cff49b21fdb422e6db6593968a268b96b27048a5
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. media/
  31. mojo/
  32. native_client_sdk/
  33. net/
  34. pdf/
  35. ppapi/
  36. printing/
  37. remoting/
  38. rlz/
  39. sandbox/
  40. services/
  41. skia/
  42. sql/
  43. storage/
  44. styleguide/
  45. testing/
  46. third_party/
  47. tools/
  48. ui/
  49. url/
  50. webkit/
  51. .clang-format
  52. .clang-tidy
  53. .clangd
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitallowed
  57. .gitattributes
  58. .gitignore
  59. .gitmodules
  60. .gn
  61. .mailmap
  62. .rustfmt.toml
  63. .vpython3
  64. .yapfignore
  65. ATL_OWNERS
  66. AUTHORS
  67. BUILD.gn
  68. CODE_OF_CONDUCT.md
  69. codereview.settings
  70. DEPS
  71. DIR_METADATA
  72. LICENSE
  73. LICENSE.chromium_os
  74. OWNERS
  75. PRESUBMIT.py
  76. PRESUBMIT_test.py
  77. PRESUBMIT_test_mocks.py
  78. README.md
  79. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure.

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.