[124] media/gpu/V4L2StatefulVD: Fix Reset() routine

"seeking" during a <video> playback is implemented via a Reset()
 and a number of Decode() calls until the desired position ("resume
point") is reached. ToT code seems to enrage MT8173's (Hana) driver:
sometimes a decoded frame from "before" the reset would be stuck in
the CAPTURE queue, not letting the decode process restart. Otherwise
it simply stops decoding altogether.

Instead of debugging the specific sequence that would please this
legacy driver, this CL simply closes the queues and driver FD. This
seems to work just fine for both said MT8173 (e.g. Hana) and
Qualcomm SC7180 (e.g. Trogdor).

After this CL:
- V4L2StatefulVD is not left ready for Decode() after Reset() -- a
provision is made to Initialize() explicitly in that case.
- Initialize() can be called after a flush (a.k.a. "drain"); with
this CL, Initialize() cannot call Reset(), so the necessary actions
are inlined.

Verified with a significant number of Tast tests on hana and
trogdor.

(cherry picked from commit 537ba536fd56c1fff34d0fe406d4b87b8268d1b3)

Bug: 279980150
Change-Id: I786fefd51d42ea90effbb3dc3b7b8d8661f950a8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5474676
Reviewed-by: Nathan Hebert <nhebert@chromium.org>
Commit-Queue: Miguel Casas-Sanchez <mcasas@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1291051}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5497581
Cr-Commit-Position: refs/branch-heads/6367@{#1048}
Cr-Branched-From: d158c6dc6e3604e6f899041972edf26087a49740-refs/heads/main@{#1274542}
2 files changed
tree: a2feb6c0a5cd8a9e05432aef39b513b7f14467f1
  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.