[macOS Capture] On cameras with broken MJPEG, prefer NV12 instead.

We have avoided capturing MJPEG due to a known issue with a specific
camera model.
In the event of MJPEG being picked (e.g. doing 4K on this camera), we
fall back on UYVY (2vuy) instead, which used to be our default pixel
format.

Thanks to [1] we no longer avoid MJPEG unless the camera model is the
problematic one. This leads to better performance.

However in the event that we are on the problematic model and do want
to avoid MJPEG, requesting UYVY makes less sense than requesting NV12.
In either case macOS has to do a conversion for us, because neither
format is natively supported in the requested resolution. If we're
going to request a non-supported format, we might as well request a
format that we want to be using: NV12, which is the new default
format.

In the future when we can encode NV12, this will avoid an additional
conversion from UYVY to NV12, since macOS did the correct conversion
for us.

[1] https://chromium-review.googlesource.com/c/chromium/src/+/2412732

Bug: 1116241, 1124884, 1035077
Change-Id: Ibce938f99194057778ce760ff9b3c4ec68c9b430
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2416289
Reviewed-by: Markus Handell <handellm@google.com>
Commit-Queue: Markus Handell <handellm@google.com>
Cr-Commit-Position: refs/heads/master@{#808681}
1 file changed
tree: 8202c91130f74052fce8de02f73167d1fa748129
  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. cloud_print/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. jingle/
  31. media/
  32. mojo/
  33. native_client_sdk/
  34. net/
  35. pdf/
  36. ppapi/
  37. printing/
  38. remoting/
  39. rlz/
  40. sandbox/
  41. services/
  42. skia/
  43. sql/
  44. storage/
  45. styleguide/
  46. testing/
  47. third_party/
  48. tools/
  49. ui/
  50. url/
  51. weblayer/
  52. .clang-format
  53. .clang-tidy
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitattributes
  57. .gitignore
  58. .gn
  59. .vpython
  60. .vpython3
  61. .yapfignore
  62. AUTHORS
  63. BUILD.gn
  64. CODE_OF_CONDUCT.md
  65. codereview.settings
  66. DEPS
  67. DIR_METADATA
  68. ENG_REVIEW_OWNERS
  69. LICENSE
  70. LICENSE.chromium_os
  71. OWNERS
  72. PRESUBMIT.py
  73. PRESUBMIT_test.py
  74. PRESUBMIT_test_mocks.py
  75. README.md
  76. 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.

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.