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

Side by Side Diff: content/renderer/media/webmediaplayer_ms_compositor.h

Issue 1531073002: Revert of Unit test for WebMediaPlayerMS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #ifndef CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_MS_COMPOSITOR_H 5 #ifndef CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_MS_COMPOSITOR_H
6 #define CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_MS_COMPOSITOR_H 6 #define CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_MS_COMPOSITOR_H
7 7
8 #include <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
13 #include "base/message_loop/message_loop.h" 13 #include "base/message_loop/message_loop.h"
14 #include "base/synchronization/lock.h" 14 #include "base/synchronization/lock.h"
15 #include "base/threading/thread_checker.h" 15 #include "base/threading/thread_checker.h"
16 #include "cc/layers/video_frame_provider.h" 16 #include "cc/layers/video_frame_provider.h"
17 #include "content/common/content_export.h"
18 17
19 namespace base { 18 namespace base {
20 class SingleThreadTaskRunner; 19 class SingleThreadTaskRunner;
21 } 20 }
22 21
23 namespace blink { 22 namespace blink {
24 class WebURL; 23 class WebURL;
25 } 24 }
26 25
27 namespace gfx { 26 namespace gfx {
(...skipping 10 matching lines...) Expand all
38 37
39 // This class is designed to handle the work load on compositor thread for 38 // This class is designed to handle the work load on compositor thread for
40 // WebMediaPlayerMS. It will be instantiated on the main thread, but destroyed 39 // WebMediaPlayerMS. It will be instantiated on the main thread, but destroyed
41 // on the compositor thread. 40 // on the compositor thread.
42 // 41 //
43 // WebMediaPlayerMSCompositor utilizes VideoRendererAlgorithm to store the 42 // WebMediaPlayerMSCompositor utilizes VideoRendererAlgorithm to store the
44 // incoming frames and select the best frame for rendering to maximize the 43 // incoming frames and select the best frame for rendering to maximize the
45 // smoothness, if REFERENCE_TIMEs are populated for incoming VideoFrames. 44 // smoothness, if REFERENCE_TIMEs are populated for incoming VideoFrames.
46 // Otherwise, WebMediaPlayerMSCompositor will simply store the most recent 45 // Otherwise, WebMediaPlayerMSCompositor will simply store the most recent
47 // frame, and submit it whenever asked by the compositor. 46 // frame, and submit it whenever asked by the compositor.
48 class CONTENT_EXPORT WebMediaPlayerMSCompositor 47 class WebMediaPlayerMSCompositor : public cc::VideoFrameProvider {
49 : public NON_EXPORTED_BASE(cc::VideoFrameProvider) {
50 public: 48 public:
51 // This |url| represents the media stream we are rendering. |url| is used to 49 // This |url| represents the media stream we are rendering.
52 // find out what web stream this WebMediaPlayerMSCompositor is playing, and
53 // together with flag "--disable-rtc-smoothness-algorithm" determine whether
54 // we enable algorithm or not.
55 WebMediaPlayerMSCompositor( 50 WebMediaPlayerMSCompositor(
56 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner, 51 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner,
57 const blink::WebURL& url, 52 const blink::WebURL& url,
58 const base::WeakPtr<WebMediaPlayerMS>& player); 53 const base::WeakPtr<WebMediaPlayerMS>& player);
59
60 ~WebMediaPlayerMSCompositor() override; 54 ~WebMediaPlayerMSCompositor() override;
61 55
62 void EnqueueFrame(const scoped_refptr<media::VideoFrame>& frame); 56 void EnqueueFrame(const scoped_refptr<media::VideoFrame>& frame);
63 57
64 // Statistical data 58 // Statistical data
65 gfx::Size GetCurrentSize(); 59 gfx::Size GetCurrentSize();
66 base::TimeDelta GetCurrentTime(); 60 base::TimeDelta GetCurrentTime();
67 size_t total_frame_count() const; 61 size_t total_frame_count() const;
68 size_t dropped_frame_count() const; 62 size_t dropped_frame_count() const;
69 63
70 // VideoFrameProvider implementation. 64 // VideoFrameProvider implementation.
71 void SetVideoFrameProviderClient( 65 void SetVideoFrameProviderClient(
72 cc::VideoFrameProvider::Client* client) override; 66 cc::VideoFrameProvider::Client* client) override;
73 bool UpdateCurrentFrame(base::TimeTicks deadline_min, 67 bool UpdateCurrentFrame(base::TimeTicks deadline_min,
74 base::TimeTicks deadline_max) override; 68 base::TimeTicks deadline_max) override;
75 bool HasCurrentFrame() override; 69 bool HasCurrentFrame() override;
76 scoped_refptr<media::VideoFrame> GetCurrentFrame() override; 70 scoped_refptr<media::VideoFrame> GetCurrentFrame() override;
77 void PutCurrentFrame() override; 71 void PutCurrentFrame() override;
78 72
79 void StartRendering(); 73 void StartRendering();
80 void StopRendering(); 74 void StopRendering();
81 void ReplaceCurrentFrameWithACopy(); 75 void ReplaceCurrentFrameWithACopy();
82 76
83 private: 77 private:
84 friend class WebMediaPlayerMSTest;
85
86 bool MapTimestampsToRenderTimeTicks( 78 bool MapTimestampsToRenderTimeTicks(
87 const std::vector<base::TimeDelta>& timestamps, 79 const std::vector<base::TimeDelta>& timestamps,
88 std::vector<base::TimeTicks>* wall_clock_times); 80 std::vector<base::TimeTicks>* wall_clock_times);
89 81
90 void SetCurrentFrame(const scoped_refptr<media::VideoFrame>& frame); 82 void SetCurrentFrame(const scoped_refptr<media::VideoFrame>& frame);
91 83
92 // For algorithm enabled case only: given the render interval, update 84 // For algorithm enabled case only: given the render interval, update
93 // current_frame_ and dropped_frame_count_. 85 // current_frame_ and dropped_frame_count_.
94 void Render(base::TimeTicks deadline_min, base::TimeTicks deadline_max); 86 void Render(base::TimeTicks deadline_min, base::TimeTicks deadline_max);
95 87
96 void StartRenderingInternal(); 88 void StartRenderingInternal();
97 void StopRenderingInternal(); 89 void StopRenderingInternal();
98 90
99 void SetAlgorithmEnabledForTesting(bool algorithm_enabled);
100
101 // Used for DCHECKs to ensure method calls executed in the correct thread. 91 // Used for DCHECKs to ensure method calls executed in the correct thread.
102 base::ThreadChecker thread_checker_; 92 base::ThreadChecker thread_checker_;
103 93
104 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_; 94 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_;
105 base::MessageLoop* main_message_loop_; 95 base::MessageLoop* main_message_loop_;
106 96
107 base::WeakPtr<WebMediaPlayerMS> player_; 97 base::WeakPtr<WebMediaPlayerMS> player_;
108 98
109 size_t serial_; 99 size_t serial_;
110 100
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 133
144 std::map<base::TimeDelta, base::TimeTicks> timestamps_to_clock_times_; 134 std::map<base::TimeDelta, base::TimeTicks> timestamps_to_clock_times_;
145 135
146 // |current_frame_lock_| protects |current_frame_used_by_compositor_|, 136 // |current_frame_lock_| protects |current_frame_used_by_compositor_|,
147 // |current_frame_|, and |rendering_frame_buffer_|. 137 // |current_frame_|, and |rendering_frame_buffer_|.
148 base::Lock current_frame_lock_; 138 base::Lock current_frame_lock_;
149 }; 139 };
150 } 140 }
151 141
152 #endif // CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_MS_COMPOSITOR_H 142 #endif // CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_MS_COMPOSITOR_H
OLDNEW
« no previous file with comments | « content/renderer/media/webmediaplayer_ms.cc ('k') | content/renderer/media/webmediaplayer_ms_compositor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698