Revert-Remove-flags-to-enable-disable-AImageReader.patch 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. From: csagan5 <32685696+csagan5@users.noreply.github.com>
  2. Date: Tue, 5 May 2020 07:26:55 +0200
  3. Subject: Revert "Remove flags to enable/disable AImageReader."
  4. This reverts commit 463fa0f2e3b9e418bc26e2c8954463f0b0f76634.
  5. ---
  6. .../service/image_reader_gl_owner_unittest.cc | 5 +++++
  7. gpu/config/gpu_finch_features.cc | 4 ++++
  8. gpu/config/gpu_finch_features.h | 1 +
  9. gpu/ipc/service/stream_texture_android.cc | 11 ++++++++++-
  10. media/base/media_switches.cc | 4 ++++
  11. media/base/media_switches.h | 1 +
  12. media/gpu/android/video_frame_factory_impl.cc | 5 ++++-
  13. 7 files changed, 29 insertions(+), 2 deletions(-)
  14. diff --git a/gpu/command_buffer/service/image_reader_gl_owner_unittest.cc b/gpu/command_buffer/service/image_reader_gl_owner_unittest.cc
  15. --- a/gpu/command_buffer/service/image_reader_gl_owner_unittest.cc
  16. +++ b/gpu/command_buffer/service/image_reader_gl_owner_unittest.cc
  17. @@ -8,10 +8,12 @@
  18. #include <memory>
  19. #include <utility>
  20. +#include "base/test/scoped_feature_list.h"
  21. #include "base/test/task_environment.h"
  22. #include "gpu/command_buffer/service/abstract_texture.h"
  23. #include "gpu/command_buffer/service/image_reader_gl_owner.h"
  24. #include "gpu/command_buffer/service/mock_abstract_texture.h"
  25. +#include "media/base/media_switches.h"
  26. #include "media/base/android/media_codec_util.h"
  27. #include "testing/gtest/include/gtest/gtest.h"
  28. #include "ui/gl/gl_bindings.h"
  29. @@ -31,6 +33,8 @@ class ImageReaderGLOwnerTest : public testing::Test {
  30. if (!IsImageReaderSupported())
  31. return;
  32. + scoped_feature_list_.InitAndEnableFeature(media::kAImageReaderVideoOutput);
  33. +
  34. gl::init::InitializeStaticGLBindingsImplementation(
  35. gl::kGLImplementationEGLGLES2, false);
  36. gl::init::InitializeGLOneOffPlatformImplementation(false, false, true);
  37. @@ -70,6 +74,7 @@ class ImageReaderGLOwnerTest : public testing::Test {
  38. return base::android::AndroidImageReader::GetInstance().IsSupported();
  39. }
  40. + base::test::ScopedFeatureList scoped_feature_list_;
  41. scoped_refptr<TextureOwner> image_reader_;
  42. GLuint texture_id_ = 0;
  43. diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
  44. --- a/gpu/config/gpu_finch_features.cc
  45. +++ b/gpu/config/gpu_finch_features.cc
  46. @@ -13,6 +13,10 @@
  47. namespace features {
  48. +// Use android AImageReader when playing videos with MediaPlayer.
  49. +const base::Feature kAImageReaderMediaPlayer{"AImageReaderMediaPlayer",
  50. + base::FEATURE_ENABLED_BY_DEFAULT};
  51. +
  52. #if defined(OS_ANDROID)
  53. // Used to limit GL version to 2.0 for skia raster on Android.
  54. const base::Feature kUseGles2ForOopR{"UseGles2ForOopR",
  55. diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h
  56. --- a/gpu/config/gpu_finch_features.h
  57. +++ b/gpu/config/gpu_finch_features.h
  58. @@ -17,6 +17,7 @@ namespace features {
  59. // All features in alphabetical order. The features should be documented
  60. // alongside the definition of their values in the .cc file.
  61. #if defined(OS_ANDROID)
  62. +GPU_EXPORT extern const base::Feature kAImageReaderMediaPlayer;
  63. GPU_EXPORT extern const base::Feature kUseGles2ForOopR;
  64. GPU_EXPORT extern const base::Feature kAndroidSurfaceControl;
  65. GPU_EXPORT extern const base::Feature kAImageReader;
  66. diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_texture_android.cc
  67. --- a/gpu/ipc/service/stream_texture_android.cc
  68. +++ b/gpu/ipc/service/stream_texture_android.cc
  69. @@ -6,6 +6,7 @@
  70. #include <string.h>
  71. +#include "base/android/android_image_reader_compat.h"
  72. #include "base/android/scoped_hardware_buffer_fence_sync.h"
  73. #include "base/bind.h"
  74. #include "base/feature_list.h"
  75. @@ -47,7 +48,15 @@ std::unique_ptr<ui::ScopedMakeCurrent> MakeCurrent(
  76. }
  77. TextureOwner::Mode GetTextureOwnerMode() {
  78. - return features::IsAImageReaderEnabled()
  79. + const bool a_image_reader_supported =
  80. + base::android::AndroidImageReader::GetInstance().IsSupported();
  81. +
  82. + // TODO(vikassoni) : Currently we have 2 different flags to enable/disable
  83. + // AImageReader - one for MCVD and other for MediaPlayer here. Merge those 2
  84. + // flags into a single flag. Keeping the 2 flags separate for now since finch
  85. + // experiment using this flag is in progress.
  86. + return a_image_reader_supported && features::IsAImageReaderEnabled() &&
  87. + base::FeatureList::IsEnabled(features::kAImageReaderMediaPlayer)
  88. ? TextureOwner::Mode::kAImageReaderInsecure
  89. : TextureOwner::Mode::kSurfaceTextureInsecure;
  90. }
  91. diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
  92. --- a/media/base/media_switches.cc
  93. +++ b/media/base/media_switches.cc
  94. @@ -547,6 +547,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
  95. const base::Feature kMediaDrmPreprovisioningAtStartup{
  96. "MediaDrmPreprovisioningAtStartup", base::FEATURE_ENABLED_BY_DEFAULT};
  97. +// Enables the Android Image Reader path for Video decoding(for AVDA and MCVD)
  98. +const base::Feature kAImageReaderVideoOutput{"AImageReaderVideoOutput",
  99. + base::FEATURE_ENABLED_BY_DEFAULT};
  100. +
  101. // Prevents using SurfaceLayer for videos. This is meant to be used by embedders
  102. // that cannot support SurfaceLayer at the moment.
  103. const base::Feature kDisableSurfaceLayerForVideo{
  104. diff --git a/media/base/media_switches.h b/media/base/media_switches.h
  105. --- a/media/base/media_switches.h
  106. +++ b/media/base/media_switches.h
  107. @@ -192,6 +192,7 @@ MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture;
  108. MEDIA_EXPORT extern const base::Feature kMediaDrmPersistentLicense;
  109. MEDIA_EXPORT extern const base::Feature kMediaDrmPreprovisioning;
  110. MEDIA_EXPORT extern const base::Feature kMediaDrmPreprovisioningAtStartup;
  111. +MEDIA_EXPORT extern const base::Feature kAImageReaderVideoOutput;
  112. MEDIA_EXPORT extern const base::Feature kDisableSurfaceLayerForVideo;
  113. MEDIA_EXPORT extern const base::Feature kCanPlayHls;
  114. MEDIA_EXPORT extern const base::Feature kPictureInPictureAPI;
  115. diff --git a/media/gpu/android/video_frame_factory_impl.cc b/media/gpu/android/video_frame_factory_impl.cc
  116. --- a/media/gpu/android/video_frame_factory_impl.cc
  117. +++ b/media/gpu/android/video_frame_factory_impl.cc
  118. @@ -6,6 +6,7 @@
  119. #include <memory>
  120. +#include "base/android/android_image_reader_compat.h"
  121. #include "base/bind.h"
  122. #include "base/bind_helpers.h"
  123. #include "base/callback.h"
  124. @@ -65,7 +66,9 @@ gpu::TextureOwner::Mode GetTextureOwnerMode(
  125. switch (overlay_mode) {
  126. case VideoFrameFactory::OverlayMode::kDontRequestPromotionHints:
  127. case VideoFrameFactory::OverlayMode::kRequestPromotionHints:
  128. - return features::IsAImageReaderEnabled()
  129. + return base::android::AndroidImageReader::GetInstance().IsSupported() &&
  130. + features::IsAImageReaderEnabled() &&
  131. + base::FeatureList::IsEnabled(media::kAImageReaderVideoOutput)
  132. ? gpu::TextureOwner::Mode::kAImageReaderInsecure
  133. : gpu::TextureOwner::Mode::kSurfaceTextureInsecure;
  134. case VideoFrameFactory::OverlayMode::kSurfaceControlSecure:
  135. --
  136. 2.17.1