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/base/encoder_row_based.h" | 5 #include "remoting/base/encoder_row_based.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "remoting/base/capture_data.h" | 8 #include "remoting/base/capture_data.h" |
9 #include "remoting/base/compressor_verbatim.h" | 9 #include "remoting/base/compressor_verbatim.h" |
10 #include "remoting/base/compressor_zlib.h" | 10 #include "remoting/base/compressor_zlib.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 iter.next(); | 73 iter.next(); |
74 EncodeRect(rect, iter.done()); | 74 EncodeRect(rect, iter.done()); |
75 } | 75 } |
76 | 76 |
77 capture_data_ = NULL; | 77 capture_data_ = NULL; |
78 callback_.Reset(); | 78 callback_.Reset(); |
79 } | 79 } |
80 | 80 |
81 void EncoderRowBased::EncodeRect(const SkIRect& rect, bool last) { | 81 void EncoderRowBased::EncodeRect(const SkIRect& rect, bool last) { |
82 CHECK(capture_data_->data_planes().data[0]); | 82 CHECK(capture_data_->data_planes().data[0]); |
| 83 CHECK_EQ(capture_data_->pixel_format(), media::VideoFrame::RGB32); |
83 const int strides = capture_data_->data_planes().strides[0]; | 84 const int strides = capture_data_->data_planes().strides[0]; |
84 const int bytes_per_pixel = GetBytesPerPixel(capture_data_->pixel_format()); | 85 const int bytes_per_pixel = 4; |
85 const int row_size = bytes_per_pixel * rect.width(); | 86 const int row_size = bytes_per_pixel * rect.width(); |
86 | 87 |
87 compressor_->Reset(); | 88 compressor_->Reset(); |
88 | 89 |
89 scoped_ptr<VideoPacket> packet(new VideoPacket()); | 90 scoped_ptr<VideoPacket> packet(new VideoPacket()); |
90 PrepareUpdateStart(rect, packet.get()); | 91 PrepareUpdateStart(rect, packet.get()); |
91 const uint8* in = capture_data_->data_planes().data[0] + | 92 const uint8* in = capture_data_->data_planes().data[0] + |
92 rect.fTop * strides + rect.fLeft * bytes_per_pixel; | 93 rect.fTop * strides + rect.fLeft * bytes_per_pixel; |
93 // TODO(hclam): Fill in the sequence number. | 94 // TODO(hclam): Fill in the sequence number. |
94 uint8* out = GetOutputBuffer(packet.get(), packet_size_); | 95 uint8* out = GetOutputBuffer(packet.get(), packet_size_); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 } | 163 } |
163 | 164 |
164 uint8* EncoderRowBased::GetOutputBuffer(VideoPacket* packet, size_t size) { | 165 uint8* EncoderRowBased::GetOutputBuffer(VideoPacket* packet, size_t size) { |
165 packet->mutable_data()->resize(size); | 166 packet->mutable_data()->resize(size); |
166 // TODO(ajwong): Is there a better way to do this at all??? | 167 // TODO(ajwong): Is there a better way to do this at all??? |
167 return const_cast<uint8*>(reinterpret_cast<const uint8*>( | 168 return const_cast<uint8*>(reinterpret_cast<const uint8*>( |
168 packet->mutable_data()->data())); | 169 packet->mutable_data()->data())); |
169 } | 170 } |
170 | 171 |
171 } // namespace remoting | 172 } // namespace remoting |
OLD | NEW |