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

Unified Diff: remoting/client/rectangle_update_decoder.h

Issue 136763009: Add VideoProcessor interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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: remoting/client/rectangle_update_decoder.h
diff --git a/remoting/client/rectangle_update_decoder.h b/remoting/client/rectangle_update_decoder.h
index 3c7468a082165b2629095ecd7375e703cb3f0e32..53cdc88a10e1cb7e9db02c3623b6ec9b97dd1299 100644
--- a/remoting/client/rectangle_update_decoder.h
+++ b/remoting/client/rectangle_update_decoder.h
@@ -5,16 +5,13 @@
#ifndef REMOTING_CLIENT_RECTANGLE_UPDATE_DECODER_H_
#define REMOTING_CLIENT_RECTANGLE_UPDATE_DECODER_H_
-#include <list>
-
-#include "base/callback_forward.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "remoting/codec/video_decoder.h"
#include "remoting/client/chromoting_stats.h"
#include "remoting/client/frame_consumer_proxy.h"
#include "remoting/client/frame_producer.h"
-#include "remoting/protocol/video_stub.h"
+#include "remoting/client/video_processor.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
namespace base {
@@ -25,17 +22,11 @@ namespace remoting {
class ChromotingStats;
-namespace protocol {
-class SessionConfig;
-} // namespace protocol
-
-// TODO(ajwong): Re-examine this API, especially with regards to how error
-// conditions on each step are reported. Should they be CHECKs? Logs? Other?
+// Implementation of VideoProcessor interface that decodes frame on a separate
+// thread and then passes decoded frames to a FrameConsumer./
Wez 2014/01/14 16:23:14 nit: Lose the trailing /
Sergey Ulanov 2014/01/15 00:58:17 Done.
+//
// TODO(sergeyu): Rename this class.
Wez 2014/01/14 16:23:14 e.g. SoftwareVideoRenderer, since it's what we use
Sergey Ulanov 2014/01/15 00:58:17 Done.
-class RectangleUpdateDecoder
- : public base::RefCountedThreadSafe<RectangleUpdateDecoder>,
- public FrameProducer,
- public protocol::VideoStub {
+class RectangleUpdateDecoder : public VideoProcessor, public FrameProducer {
public:
// Creates an update decoder on |main_task_runner_| and |decode_task_runner_|,
// outputting to |consumer|. The |main_task_runner_| is responsible for
@@ -47,8 +38,11 @@ class RectangleUpdateDecoder
scoped_refptr<base::SingleThreadTaskRunner> decode_task_runner,
scoped_refptr<FrameConsumerProxy> consumer);
- // Initializes decoder with the information from the protocol config.
- void Initialize(const protocol::SessionConfig& config);
+ // VideoProcessor implementation.
+ virtual void Initialize(const protocol::SessionConfig& config) OVERRIDE;
+ virtual ChromotingStats* GetStats() OVERRIDE;
+ virtual void ProcessVideoPacket(scoped_ptr<VideoPacket> packet,
+ const base::Closure& done) OVERRIDE;
// FrameProducer implementation. These methods may be called before we are
// Initialize()d, or we know the source screen size.
@@ -60,56 +54,11 @@ class RectangleUpdateDecoder
const webrtc::DesktopRect& clip_area) OVERRIDE;
virtual const webrtc::DesktopRegion* GetBufferShape() OVERRIDE;
- // VideoStub implementation.
- virtual void ProcessVideoPacket(scoped_ptr<VideoPacket> packet,
- const base::Closure& done) OVERRIDE;
-
- // Return the stats recorded by this client.
- ChromotingStats* GetStats();
-
private:
- friend class base::RefCountedThreadSafe<RectangleUpdateDecoder>;
- virtual ~RectangleUpdateDecoder();
-
- // Paints the invalidated region to the next available buffer and returns it
- // to the consumer.
- void SchedulePaint();
- void DoPaint();
-
- // Decodes the contents of |packet|. DecodePacket may keep a reference to
- // |packet| so the |packet| must remain alive and valid until |done| is
- // executed.
- void DecodePacket(scoped_ptr<VideoPacket> packet, const base::Closure& done);
-
- // Callback method when a VideoPacket is processed. |decode_start| contains
- // the timestamp when the packet will start to be processed.
- void OnPacketDone(base::Time decode_start, const base::Closure& done);
-
- scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
- scoped_refptr<base::SingleThreadTaskRunner> decode_task_runner_;
- scoped_refptr<FrameConsumerProxy> consumer_;
- scoped_ptr<VideoDecoder> decoder_;
-
- // Remote screen size in pixels.
- webrtc::DesktopSize source_size_;
-
- // Vertical and horizontal DPI of the remote screen.
- webrtc::DesktopVector source_dpi_;
-
- // The current dimensions of the frame consumer view.
- webrtc::DesktopSize view_size_;
- webrtc::DesktopRect clip_area_;
-
- // The drawing buffers supplied by the frame consumer.
- std::list<webrtc::DesktopFrame*> buffers_;
-
- // Flag used to coalesce runs of SchedulePaint()s into a single DoPaint().
- bool paint_scheduled_;
-
- ChromotingStats stats_;
+ class Core;
+ scoped_refptr<Core> core_;
Wez 2014/01/14 16:23:14 refptr makes kitteh sad... !^.^ Can't Core be an
Sergey Ulanov 2014/01/15 00:58:17 Done.
- // Keep track of the most recent sequence number bounced back from the host.
- int64 latest_sequence_number_;
+ DISALLOW_COPY_AND_ASSIGN(RectangleUpdateDecoder);
};
} // namespace remoting

Powered by Google App Engine
This is Rietveld 408576698