[LibvpxVp8Encoder] Allow I420A to be scaled to I420.

In Chromium, the I420ABufferInterface implementation uses the default
CropAndScale() implementation which converts to I420 in the process.

This should be OK, because we do not encode the alpha channel anyway,
so having WebRTC scaling ignore the alpha channel might even be a good
thing. Unfortunatety, an if statement in the LibvpxVp8Encoder did not
consider I420A and I420 to be the same, resulting in dropping perfectly
valid frames.

This CL fixes that by considering I420A and I420 "compatible" in a
comparison helper function. The problem only happens in this encoder,
so only this encoder needs to be fixed.


(cherry picked from commit 065ce9cb227a86ca9c5cf1469a5edd9ffd7a662a)

Bug: chromium:1203206
Change-Id: Iec434d4ada897c79e09914cac823148fd5b05e57
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/216323
Reviewed-by: Evan Shrubsole <eshr@google.com>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Original-Commit-Position: refs/heads/master@{#33845}
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/216682
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/branch-heads/4472@{#9}
Cr-Branched-From: 3e0c60ba4ef28a9f26fe991e5eec3150402c7dd3-refs/heads/master@{#33644}
1 file changed
tree: a36b52b735ae965d044f7235a7a44d77559bf190
  1. api/
  2. audio/
  3. build_overrides/
  4. call/
  5. common_audio/
  6. common_video/
  7. data/
  8. docs/
  9. examples/
  10. g3doc/
  11. logging/
  12. media/
  13. modules/
  14. net/
  15. p2p/
  16. pc/
  17. resources/
  18. rtc_base/
  19. rtc_tools/
  20. sdk/
  21. stats/
  22. style-guide/
  23. system_wrappers/
  24. test/
  25. tools_webrtc/
  26. video/
  27. .clang-format
  28. .git-blame-ignore-revs
  29. .gitignore
  30. .gn
  31. .vpython
  32. abseil-in-webrtc.md
  34. BUILD.gn
  36. codereview.settings
  37. DEPS
  40. g3doc.lua
  42. license_template.txt
  43. native-api.md
  44. OWNERS
  46. PRESUBMIT.py
  47. presubmit_test.py
  48. presubmit_test_mocks.py
  49. pylintrc
  50. README.chromium
  51. README.md
  52. style-guide.md
  54. webrtc.gni
  55. webrtc_lib_link_test.cc
  56. whitespace.txt

WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.

Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.

The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.


See here for instructions on how to get started developing with the native code.

Authoritative list of directories that contain the native API header files.

More info