OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 #include "remoting/codec/video_decoder_verbatim.h" | 5 #include "remoting/codec/video_decoder_verbatim.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "remoting/base/util.h" | 8 #include "remoting/base/util.h" |
9 | 9 |
10 namespace remoting { | 10 namespace remoting { |
11 | 11 |
12 VideoDecoderVerbatim::VideoDecoderVerbatim() {} | 12 VideoDecoderVerbatim::VideoDecoderVerbatim() {} |
13 | 13 |
14 VideoDecoderVerbatim::~VideoDecoderVerbatim() {} | 14 VideoDecoderVerbatim::~VideoDecoderVerbatim() {} |
15 | 15 |
16 void VideoDecoderVerbatim::Initialize(const webrtc::DesktopSize& screen_size) { | 16 bool VideoDecoderVerbatim::DecodePacket(const VideoPacket& packet) { |
17 updated_region_.Clear(); | 17 webrtc::DesktopSize screen_size(packet.format().screen_width(), |
18 screen_buffer_.reset(); | 18 packet.format().screen_height()); |
| 19 // Allocate the screen buffer, if necessary. |
| 20 if (!screen_size.equals(screen_size_)) { |
| 21 screen_size_ = screen_size; |
| 22 screen_buffer_.reset(new uint8[screen_size_.width() * |
| 23 screen_size_.height() * kBytesPerPixel]); |
| 24 } |
19 | 25 |
20 screen_size_ = screen_size; | |
21 // Allocate the screen buffer, if necessary. | |
22 if (!screen_size_.is_empty()) { | |
23 screen_buffer_.reset( | |
24 new uint8[screen_size_.width() * screen_size_.height() * | |
25 kBytesPerPixel]); | |
26 } | |
27 } | |
28 | |
29 bool VideoDecoderVerbatim::DecodePacket(const VideoPacket& packet) { | |
30 webrtc::DesktopRegion region; | 26 webrtc::DesktopRegion region; |
31 | 27 |
32 const char* in = packet.data().data(); | 28 const char* in = packet.data().data(); |
33 int stride = kBytesPerPixel * screen_size_.width(); | 29 int stride = kBytesPerPixel * screen_size_.width(); |
34 for (int i = 0; i < packet.dirty_rects_size(); ++i) { | 30 for (int i = 0; i < packet.dirty_rects_size(); ++i) { |
35 Rect proto_rect = packet.dirty_rects(i); | 31 Rect proto_rect = packet.dirty_rects(i); |
36 webrtc::DesktopRect rect = | 32 webrtc::DesktopRect rect = |
37 webrtc::DesktopRect::MakeXYWH(proto_rect.x(), | 33 webrtc::DesktopRect::MakeXYWH(proto_rect.x(), |
38 proto_rect.y(), | 34 proto_rect.y(), |
39 proto_rect.width(), | 35 proto_rect.width(), |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 } | 101 } |
106 | 102 |
107 updated_region_.Clear(); | 103 updated_region_.Clear(); |
108 } | 104 } |
109 | 105 |
110 const webrtc::DesktopRegion* VideoDecoderVerbatim::GetImageShape() { | 106 const webrtc::DesktopRegion* VideoDecoderVerbatim::GetImageShape() { |
111 return nullptr; | 107 return nullptr; |
112 } | 108 } |
113 | 109 |
114 } // namespace remoting | 110 } // namespace remoting |
OLD | NEW |