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

Unified Diff: content/common/gpu/media/rendering_helper.h

Issue 462413004: rendering_helper - Refactoring - remove the Client interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: content/common/gpu/media/rendering_helper.h
diff --git a/content/common/gpu/media/rendering_helper.h b/content/common/gpu/media/rendering_helper.h
index a2dfb1bbf492690104ee2f183aa076ccfc60a3a3..826de05ac454b2d14fb54a04d07f46538f23f7a5 100644
--- a/content/common/gpu/media/rendering_helper.h
+++ b/content/common/gpu/media/rendering_helper.h
@@ -5,6 +5,7 @@
#ifndef CONTENT_COMMON_GPU_MEDIA_RENDERING_HELPER_H_
#define CONTENT_COMMON_GPU_MEDIA_RENDERING_HELPER_H_
+#include <deque>
#include <map>
#include <vector>
@@ -24,27 +25,49 @@ class WaitableEvent;
namespace content {
-struct RenderingHelperParams;
+class VideoFrame {
Pawel Osciak 2014/08/14 04:48:23 Why not use media::VideoFrame?
Owen Lin 2014/08/14 09:20:41 The main reason is I don't know how to use it in o
Pawel Osciak 2014/08/15 05:45:15 Ok, texture_id is an issue (the other is not reall
+ public:
+ uint32 texture_id() const { return texture_id_; }
+ uint32 texture_target() const { return texture_target_; }
+
+ VideoFrame(uint32 texture_target,
+ uint32 texture_id,
+ const base::Closure& no_longer_needed_cb);
+ ~VideoFrame();
+
+ private:
+ uint32 texture_target_;
+ uint32 texture_id_;
+ base::Closure no_longer_needed_cb_;
+};
+
+struct RenderingHelperParams {
+ RenderingHelperParams();
+ ~RenderingHelperParams();
+
+ // The rendering FPS.
+ int rendering_fps;
+
+ // The designed size of each window.
Pawel Osciak 2014/08/14 04:48:23 s/designed// Please explain this is used for the
Owen Lin 2014/08/14 09:20:41 Sorry, it should be "desired". We may resize the w
+ std::vector<gfx::Size> window_sizes;
+
+ // Whether the frames are rendered as scaled thumbnails within a
+ // larger FBO that is in turn rendered to the window.
+ bool render_as_thumbnails;
+ // The size of the FBO containing all visible thumbnails.
+ gfx::Size thumbnails_page_size;
+ // The size of each thumbnail within the FBO.
+ gfx::Size thumbnail_size;
+};
// Creates and draws textures used by the video decoder.
// This class is not thread safe and thus all the methods of this class
// (except for ctor/dtor) ensure they're being run on a single thread.
class RenderingHelper {
public:
- // Interface for the content provider of the RenderingHelper.
- class Client {
- public:
- // Callback to tell client to render the content.
- virtual void RenderContent(RenderingHelper* helper) = 0;
-
- // Callback to get the desired window size of the client.
- virtual const gfx::Size& GetWindowSize() = 0;
-
- protected:
- virtual ~Client() {}
- };
RenderingHelper();
+
Pawel Osciak 2014/08/14 04:48:23 Not needed.
Owen Lin 2014/08/14 09:20:41 Done.
~RenderingHelper();
static bool InitializeOneOff();
@@ -67,9 +90,10 @@ class RenderingHelper {
// |texture_target|.
void RenderThumbnail(uint32 texture_target, uint32 texture_id);
- // Render |texture_id| to the current view port of the screen using target
- // |texture_target|.
- void RenderTexture(uint32 texture_target, uint32 texture_id);
+ // Queues the VideoFrame for rendering.
+ void QueueVideoFrame(size_t window_id, scoped_ptr<VideoFrame> video_frame);
+
+ void ClearVideoFrames(size_t window_id);
Pawel Osciak 2014/08/14 04:48:23 Please document and rename to DropPendingFrames().
Owen Lin 2014/08/14 09:20:41 Done.
// Delete |texture_id|.
void DeleteTexture(uint32 texture_id);
@@ -87,12 +111,25 @@ class RenderingHelper {
base::WaitableEvent* done);
private:
+ struct RenderingClient {
Pawel Osciak 2014/08/14 04:48:23 I think we should not call it a Client, because th
Owen Lin 2014/08/14 09:20:41 Done. On 2014/08/14 04:48:23, Pawel Osciak wrote:
+ gfx::Rect render_area;
Pawel Osciak 2014/08/14 04:48:23 Please documentation for all members.
Owen Lin 2014/08/14 09:20:41 Done.
+ bool last_frame_rendered;
Pawel Osciak 2014/08/14 04:48:23 Isn't this equivalent to pending_frames.empty() ?
Owen Lin 2014/08/14 09:20:41 Why? do you mean pending_frames.size() == 1? We wi
Pawel Osciak 2014/08/15 05:45:15 Sorry, this was something that I forgot to remove
+ base::Closure wait_rendering_cb;
+ std::deque<VideoFrame*> pending_frames;
Pawel Osciak 2014/08/14 04:48:23 Please keep scoped_refptrs here.
Owen Lin 2014/08/14 09:20:41 Done.
+
+ inline RenderingClient() : last_frame_rendered(false) {}
Pawel Osciak 2014/08/14 04:48:23 s/inline//
Owen Lin 2014/08/14 09:20:41 Done.
+ };
+
void Clear();
void RenderContent();
- void LayoutRenderingAreas();
+ void LayoutRenderingAreas(const std::vector<gfx::Size>& window_sizes);
+
+ // Render |texture_id| to the current view port of the screen using target
+ // |texture_target|.
Pawel Osciak 2014/08/14 04:48:23 Remove empty line please.
Owen Lin 2014/08/14 09:20:41 Done.
+ void RenderTexture(uint32 texture_target, uint32 texture_id);
// Timer to trigger the RenderContent() repeatly.
scoped_ptr<base::RepeatingTimer<RenderingHelper> > render_timer_;
base::MessageLoop* message_loop_;
@@ -104,10 +141,7 @@ class RenderingHelper {
gfx::Size screen_size_;
- // The rendering area of each window on the screen.
- std::vector<gfx::Rect> render_areas_;
-
- std::vector<base::WeakPtr<Client> > clients_;
+ std::vector<RenderingClient> clients_;
bool render_as_thumbnails_;
int frame_count_;
@@ -121,24 +155,6 @@ class RenderingHelper {
DISALLOW_COPY_AND_ASSIGN(RenderingHelper);
};
-struct RenderingHelperParams {
- RenderingHelperParams();
- ~RenderingHelperParams();
-
- // The rendering FPS.
- int rendering_fps;
-
- // The clients who provide the content for rendering.
- std::vector<base::WeakPtr<RenderingHelper::Client> > clients;
-
- // Whether the frames are rendered as scaled thumbnails within a
- // larger FBO that is in turn rendered to the window.
- bool render_as_thumbnails;
- // The size of the FBO containing all visible thumbnails.
- gfx::Size thumbnails_page_size;
- // The size of each thumbnail within the FBO.
- gfx::Size thumbnail_size;
-};
} // namespace content
#endif // CONTENT_COMMON_GPU_MEDIA_RENDERING_HELPER_H_
« no previous file with comments | « no previous file | content/common/gpu/media/rendering_helper.cc » ('j') | content/common/gpu/media/rendering_helper.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698