1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef REMOTING_CODEC_VIDEO_DECODER_VERBATIM_H_
6 #define REMOTING_CODEC_VIDEO_DECODER_VERBATIM_H_
8 #include "base/compiler_specific.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "remoting/codec/video_decoder.h"
11 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
12 #include "third_party/webrtc/modules/desktop_capture/desktop_region.h"
16 // Video decoder implementations that decodes video packet encoded by
17 // VideoEncoderVerbatim. It just copies data from incoming packets to the
19 class VideoDecoderVerbatim
: public VideoDecoder
{
21 ~VideoDecoderVerbatim() override
;
23 VideoDecoderVerbatim();
25 // VideoDecoder implementation.
26 void Initialize(const webrtc::DesktopSize
& screen_size
) override
;
27 bool DecodePacket(const VideoPacket
& packet
) override
;
28 void Invalidate(const webrtc::DesktopSize
& view_size
,
29 const webrtc::DesktopRegion
& region
) override
;
30 void RenderFrame(const webrtc::DesktopSize
& view_size
,
31 const webrtc::DesktopRect
& clip_area
,
34 webrtc::DesktopRegion
* output_region
) override
;
35 const webrtc::DesktopRegion
* GetImageShape() override
;
38 // The region updated that hasn't been copied to the screen yet.
39 webrtc::DesktopRegion updated_region_
;
41 // Size of the remote screen.
42 webrtc::DesktopSize screen_size_
;
44 // The bitmap holding the remote screen bits.
45 scoped_ptr
<uint8
[]> screen_buffer_
;
47 DISALLOW_COPY_AND_ASSIGN(VideoDecoderVerbatim
);
50 } // namespace remoting
52 #endif // REMOTING_CODEC_VIDEO_DECODER_VERBATIM_H_