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

Side by Side Diff: remoting/base/encoder_row_based.cc

Issue 8493020: Move code in src/remoting to the new callbacks. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: - Created 9 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « remoting/base/encoder_row_based.h ('k') | remoting/base/encoder_vp8.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 VideoPacketFormat::Encoding encoding, 49 VideoPacketFormat::Encoding encoding,
50 int packet_size) 50 int packet_size)
51 : encoding_(encoding), 51 : encoding_(encoding),
52 compressor_(compressor), 52 compressor_(compressor),
53 screen_size_(SkISize::Make(0,0)), 53 screen_size_(SkISize::Make(0,0)),
54 packet_size_(packet_size) { 54 packet_size_(packet_size) {
55 } 55 }
56 56
57 EncoderRowBased::~EncoderRowBased() {} 57 EncoderRowBased::~EncoderRowBased() {}
58 58
59 void EncoderRowBased::Encode(scoped_refptr<CaptureData> capture_data, 59 void EncoderRowBased::Encode(
60 bool key_frame, 60 scoped_refptr<CaptureData> capture_data,
61 DataAvailableCallback* data_available_callback) { 61 bool key_frame,
62 const DataAvailableCallback& data_available_callback) {
62 CHECK(capture_data->pixel_format() == media::VideoFrame::RGB32) 63 CHECK(capture_data->pixel_format() == media::VideoFrame::RGB32)
63 << "RowBased Encoder only works with RGB32. Got " 64 << "RowBased Encoder only works with RGB32. Got "
64 << capture_data->pixel_format(); 65 << capture_data->pixel_format();
65 capture_data_ = capture_data; 66 capture_data_ = capture_data;
66 callback_.reset(data_available_callback); 67 callback_ = data_available_callback;
67 68
68 const SkRegion& region = capture_data->dirty_region(); 69 const SkRegion& region = capture_data->dirty_region();
69 SkRegion::Iterator iter(region); 70 SkRegion::Iterator iter(region);
70 while (!iter.done()) { 71 while (!iter.done()) {
71 SkIRect rect = iter.rect(); 72 SkIRect rect = iter.rect();
72 iter.next(); 73 iter.next();
73 EncodeRect(rect, iter.done()); 74 EncodeRect(rect, iter.done());
74 } 75 }
75 76
76 capture_data_ = NULL; 77 capture_data_ = NULL;
77 callback_.reset(); 78 callback_.Reset();
78 } 79 }
79 80
80 void EncoderRowBased::EncodeRect(const SkIRect& rect, bool last) { 81 void EncoderRowBased::EncodeRect(const SkIRect& rect, bool last) {
81 CHECK(capture_data_->data_planes().data[0]); 82 CHECK(capture_data_->data_planes().data[0]);
82 const int strides = capture_data_->data_planes().strides[0]; 83 const int strides = capture_data_->data_planes().strides[0];
83 const int bytes_per_pixel = GetBytesPerPixel(capture_data_->pixel_format()); 84 const int bytes_per_pixel = GetBytesPerPixel(capture_data_->pixel_format());
84 const int row_size = bytes_per_pixel * rect.width(); 85 const int row_size = bytes_per_pixel * rect.width();
85 86
86 compressor_->Reset(); 87 compressor_->Reset();
87 88
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 capture_data_->client_sequence_number()); 125 capture_data_->client_sequence_number());
125 if (last) 126 if (last)
126 packet->set_flags(packet->flags() | VideoPacket::LAST_PARTITION); 127 packet->set_flags(packet->flags() | VideoPacket::LAST_PARTITION);
127 DCHECK(row_pos == row_size); 128 DCHECK(row_pos == row_size);
128 DCHECK(row_y == rect.height() - 1); 129 DCHECK(row_y == rect.height() - 1);
129 } 130 }
130 131
131 // If we have filled the message or we have reached the end of stream. 132 // If we have filled the message or we have reached the end of stream.
132 if (filled == packet_size_ || !compress_again) { 133 if (filled == packet_size_ || !compress_again) {
133 packet->mutable_data()->resize(filled); 134 packet->mutable_data()->resize(filled);
134 callback_->Run(packet); 135 callback_.Run(packet);
135 packet = NULL; 136 packet = NULL;
136 } 137 }
137 138
138 // Reached the end of input row and we're not at the last row. 139 // Reached the end of input row and we're not at the last row.
139 if (row_pos == row_size && row_y < rect.height() - 1) { 140 if (row_pos == row_size && row_y < rect.height() - 1) {
140 row_pos = 0; 141 row_pos = 0;
141 in += strides; 142 in += strides;
142 ++row_y; 143 ++row_y;
143 } 144 }
144 } 145 }
(...skipping 18 matching lines...) Expand all
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 172
172 } // namespace remoting 173 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/base/encoder_row_based.h ('k') | remoting/base/encoder_vp8.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698