Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: media/gpu/android_video_decode_accelerator_unittest.cc

Issue 2296513003: Delete AVDACopyingBackingStrategy and rename AVDADeferredRenderingBackingStrategy (Closed)
Patch Set: Undelete & fix unittest Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/gpu/android_video_decode_accelerator.h" 5 #include "media/gpu/android_video_decode_accelerator.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
11 #include "base/android/jni_android.h" 11 #include "base/android/jni_android.h"
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/message_loop/message_loop.h" 14 #include "base/message_loop/message_loop.h"
15 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" 15 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h"
16 #include "media/base/android/media_codec_util.h" 16 #include "media/base/android/media_codec_util.h"
17 #include "media/base/android/media_jni_registrar.h" 17 #include "media/base/android/media_jni_registrar.h"
18 #include "media/gpu/android_copying_backing_strategy.h"
19 #include "media/gpu/android_video_decode_accelerator.h" 18 #include "media/gpu/android_video_decode_accelerator.h"
20 #include "media/video/picture.h" 19 #include "media/video/picture.h"
21 #include "media/video/video_decode_accelerator.h" 20 #include "media/video/video_decode_accelerator.h"
22 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
23 #include "ui/gl/android/surface_texture.h" 22 #include "ui/gl/gl_context.h"
23 #include "ui/gl/gl_surface.h"
24 #include "ui/gl/init/gl_factory.h"
24 25
25 namespace { 26 namespace {
26 27
27 bool MockMakeContextCurrent() { 28 bool MakeContextCurrent() {
28 return true; 29 return true;
29 } 30 }
30 31
31 static base::WeakPtr<gpu::gles2::GLES2Decoder> MockGetGLES2Decoder( 32 base::WeakPtr<gpu::gles2::GLES2Decoder> GetGLES2Decoder(
32 const base::WeakPtr<gpu::gles2::GLES2Decoder>& decoder) { 33 const base::WeakPtr<gpu::gles2::GLES2Decoder>& decoder) {
33 return decoder; 34 return decoder;
34 } 35 }
35 36
36 } // namespace 37 } // namespace
37 38
38 namespace media { 39 namespace media {
39 40
40 class MockVideoDecodeAcceleratorClient : public VideoDecodeAccelerator::Client { 41 class MockVideoDecodeAcceleratorClient : public VideoDecodeAccelerator::Client {
41 public: 42 public:
(...skipping 16 matching lines...) Expand all
58 59
59 class AndroidVideoDecodeAcceleratorTest : public testing::Test { 60 class AndroidVideoDecodeAcceleratorTest : public testing::Test {
60 public: 61 public:
61 ~AndroidVideoDecodeAcceleratorTest() override {} 62 ~AndroidVideoDecodeAcceleratorTest() override {}
62 63
63 protected: 64 protected:
64 void SetUp() override { 65 void SetUp() override {
65 JNIEnv* env = base::android::AttachCurrentThread(); 66 JNIEnv* env = base::android::AttachCurrentThread();
66 RegisterJni(env); 67 RegisterJni(env);
67 68
68 // Start message loop because 69 gl::init::ClearGLBindings();
69 // AndroidVideoDecodeAccelerator::ConfigureMediaCodec() starts a timer task. 70 ASSERT_TRUE(gl::init::InitializeGLOneOff());
71 surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size(1024, 1024));
72 context_ = gl::init::CreateGLContext(nullptr, surface_.get(),
73 gl::PreferDiscreteGpu);
74 context_->MakeCurrent(surface_.get());
75
76 // Start a message loop because AVDA starts a timer task.
70 message_loop_.reset(new base::MessageLoop()); 77 message_loop_.reset(new base::MessageLoop());
78 gl_decoder_.reset(new testing::NiceMock<gpu::gles2::MockGLES2Decoder>());
79 client_.reset(new MockVideoDecodeAcceleratorClient());
71 80
72 std::unique_ptr<gpu::gles2::MockGLES2Decoder> decoder( 81 vda_.reset(new AndroidVideoDecodeAccelerator(
73 new gpu::gles2::MockGLES2Decoder()); 82 base::Bind(&MakeContextCurrent),
74 std::unique_ptr<MockVideoDecodeAcceleratorClient> client( 83 base::Bind(&GetGLES2Decoder, gl_decoder_->AsWeakPtr())));
75 new MockVideoDecodeAcceleratorClient());
76 accelerator_.reset(new AndroidVideoDecodeAccelerator(
77 base::Bind(&MockMakeContextCurrent),
78 base::Bind(&MockGetGLES2Decoder, decoder->AsWeakPtr())));
79 } 84 }
80 85
81 bool Configure(VideoCodec codec) { 86 bool Initialize(VideoCodecProfile profile) {
82 AndroidVideoDecodeAccelerator* accelerator = 87 return vda_->Initialize(VideoDecodeAccelerator::Config(profile),
83 static_cast<AndroidVideoDecodeAccelerator*>(accelerator_.get()); 88 client_.get());
84 scoped_refptr<gl::SurfaceTexture> surface_texture =
85 gl::SurfaceTexture::Create(0);
86 accelerator->codec_config_->surface_ =
87 gl::ScopedJavaSurface(surface_texture.get());
88 accelerator->codec_config_->codec_ = codec;
89 return accelerator->ConfigureMediaCodecSynchronously();
90 } 89 }
91 90
92 private: 91 private:
93 std::unique_ptr<VideoDecodeAccelerator> accelerator_;
94 std::unique_ptr<base::MessageLoop> message_loop_; 92 std::unique_ptr<base::MessageLoop> message_loop_;
93 scoped_refptr<gl::GLSurface> surface_;
94 scoped_refptr<gl::GLContext> context_;
95 std::unique_ptr<gpu::gles2::MockGLES2Decoder> gl_decoder_;
96 std::unique_ptr<MockVideoDecodeAcceleratorClient> client_;
97
98 // This must be a unique pointer to a VDA and not an AVDA to ensure the
99 // the default_delete specialization that calls Destroy() will be used.
100 std::unique_ptr<VideoDecodeAccelerator> vda_;
95 }; 101 };
96 102
97 TEST_F(AndroidVideoDecodeAcceleratorTest, ConfigureUnsupportedCodec) { 103 TEST_F(AndroidVideoDecodeAcceleratorTest, ConfigureUnsupportedCodec) {
98 EXPECT_FALSE(Configure(kUnknownVideoCodec)); 104 ASSERT_FALSE(Initialize(VIDEO_CODEC_PROFILE_UNKNOWN));
99 } 105 }
100 106
101 TEST_F(AndroidVideoDecodeAcceleratorTest, ConfigureSupportedCodec) { 107 TEST_F(AndroidVideoDecodeAcceleratorTest, ConfigureSupportedCodec) {
102 if (!MediaCodecUtil::IsMediaCodecAvailable()) 108 if (!MediaCodecUtil::IsMediaCodecAvailable())
103 return; 109 return;
104 EXPECT_TRUE(Configure(kCodecVP8)); 110 ASSERT_TRUE(Initialize(VP8PROFILE_ANY));
105 } 111 }
106 112
107 } // namespace media 113 } // namespace media
108 114
109 int main(int argc, char** argv) { 115 int main(int argc, char** argv) {
110 testing::InitGoogleTest(&argc, argv); 116 testing::InitGoogleTest(&argc, argv);
111 return RUN_ALL_TESTS(); 117 return RUN_ALL_TESTS();
112 } 118 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698