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

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
« no previous file with comments | « remoting/client/plugin/pepper_view.cc ('k') | remoting/client/rectangle_update_decoder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/client/rectangle_update_decoder.h
diff --git a/remoting/client/rectangle_update_decoder.h b/remoting/client/rectangle_update_decoder.h
deleted file mode 100644
index 3c7468a082165b2629095ecd7375e703cb3f0e32..0000000000000000000000000000000000000000
--- a/remoting/client/rectangle_update_decoder.h
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#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 "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
-
-namespace base {
-class SingleThreadTaskRunner;
-} // namespace base
-
-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?
-// TODO(sergeyu): Rename this class.
-class RectangleUpdateDecoder
- : public base::RefCountedThreadSafe<RectangleUpdateDecoder>,
- public FrameProducer,
- public protocol::VideoStub {
- public:
- // Creates an update decoder on |main_task_runner_| and |decode_task_runner_|,
- // outputting to |consumer|. The |main_task_runner_| is responsible for
- // receiving and queueing packets. The |decode_task_runner_| is responsible
- // for decoding the video packets.
- // TODO(wez): Replace the ref-counted proxy with an owned FrameConsumer.
- RectangleUpdateDecoder(
- scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
- 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);
-
- // FrameProducer implementation. These methods may be called before we are
- // Initialize()d, or we know the source screen size.
- virtual void DrawBuffer(webrtc::DesktopFrame* buffer) OVERRIDE;
- virtual void InvalidateRegion(const webrtc::DesktopRegion& region) OVERRIDE;
- virtual void RequestReturnBuffers(const base::Closure& done) OVERRIDE;
- virtual void SetOutputSizeAndClip(
- const webrtc::DesktopSize& view_size,
- 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_;
-
- // Keep track of the most recent sequence number bounced back from the host.
- int64 latest_sequence_number_;
-};
-
-} // namespace remoting
-
-#endif // REMOTING_CLIENT_RECTANGLE_UPDATE_DECODER_H_
« no previous file with comments | « remoting/client/plugin/pepper_view.cc ('k') | remoting/client/rectangle_update_decoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698