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

Side by Side Diff: remoting/codec/video_encoder_row_based.cc

Issue 10870071: Renamed Encoder -> VideoEncoder. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 8 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_encoder_row_based.h" 5 #include "remoting/codec/video_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"
11 #include "remoting/base/util.h" 11 #include "remoting/base/util.h"
12 #include "remoting/proto/video.pb.h" 12 #include "remoting/proto/video.pb.h"
13 13
14 namespace remoting { 14 namespace remoting {
15 15
16 static const int kPacketSize = 1024 * 1024; 16 static const int kPacketSize = 1024 * 1024;
17 17
18 EncoderRowBased* EncoderRowBased::CreateZlibEncoder() { 18 VideoEncoderRowBased* VideoEncoderRowBased::CreateZlibEncoder() {
19 return new EncoderRowBased(new CompressorZlib(), 19 return new VideoEncoderRowBased(new CompressorZlib(),
20 VideoPacketFormat::ENCODING_ZLIB); 20 VideoPacketFormat::ENCODING_ZLIB);
21 } 21 }
22 22
23 EncoderRowBased* EncoderRowBased::CreateZlibEncoder(int packet_size) { 23 VideoEncoderRowBased* VideoEncoderRowBased::CreateZlibEncoder(int packet_size) {
24 return new EncoderRowBased(new CompressorZlib(), 24 return new VideoEncoderRowBased(new CompressorZlib(),
25 VideoPacketFormat::ENCODING_ZLIB, 25 VideoPacketFormat::ENCODING_ZLIB,
26 packet_size); 26 packet_size);
27 } 27 }
28 28
29 EncoderRowBased* EncoderRowBased::CreateVerbatimEncoder() { 29 VideoEncoderRowBased* VideoEncoderRowBased::CreateVerbatimEncoder() {
30 return new EncoderRowBased(new CompressorVerbatim(), 30 return new VideoEncoderRowBased(new CompressorVerbatim(),
31 VideoPacketFormat::ENCODING_VERBATIM); 31 VideoPacketFormat::ENCODING_VERBATIM);
32 } 32 }
33 33
34 EncoderRowBased* EncoderRowBased::CreateVerbatimEncoder(int packet_size) { 34 VideoEncoderRowBased* VideoEncoderRowBased::CreateVerbatimEncoder(
35 return new EncoderRowBased(new CompressorVerbatim(), 35 int packet_size) {
36 VideoPacketFormat::ENCODING_VERBATIM, 36 return new VideoEncoderRowBased(new CompressorVerbatim(),
37 packet_size); 37 VideoPacketFormat::ENCODING_VERBATIM,
38 packet_size);
38 } 39 }
39 40
40 EncoderRowBased::EncoderRowBased(Compressor* compressor, 41 VideoEncoderRowBased::VideoEncoderRowBased(Compressor* compressor,
41 VideoPacketFormat::Encoding encoding) 42 VideoPacketFormat::Encoding encoding)
42 : encoding_(encoding), 43 : encoding_(encoding),
43 compressor_(compressor), 44 compressor_(compressor),
44 screen_size_(SkISize::Make(0,0)), 45 screen_size_(SkISize::Make(0,0)),
45 packet_size_(kPacketSize) { 46 packet_size_(kPacketSize) {
46 } 47 }
47 48
48 EncoderRowBased::EncoderRowBased(Compressor* compressor, 49 VideoEncoderRowBased::VideoEncoderRowBased(Compressor* compressor,
49 VideoPacketFormat::Encoding encoding, 50 VideoPacketFormat::Encoding encoding,
50 int packet_size) 51 int packet_size)
51 : encoding_(encoding), 52 : encoding_(encoding),
52 compressor_(compressor), 53 compressor_(compressor),
53 screen_size_(SkISize::Make(0,0)), 54 screen_size_(SkISize::Make(0,0)),
54 packet_size_(packet_size) { 55 packet_size_(packet_size) {
55 } 56 }
56 57
57 EncoderRowBased::~EncoderRowBased() {} 58 VideoEncoderRowBased::~VideoEncoderRowBased() {}
58 59
59 void EncoderRowBased::Encode( 60 void VideoEncoderRowBased::Encode(
60 scoped_refptr<CaptureData> capture_data, 61 scoped_refptr<CaptureData> capture_data,
61 bool key_frame, 62 bool key_frame,
62 const DataAvailableCallback& data_available_callback) { 63 const DataAvailableCallback& data_available_callback) {
63 CHECK(capture_data->pixel_format() == media::VideoFrame::RGB32) 64 CHECK(capture_data->pixel_format() == media::VideoFrame::RGB32)
64 << "RowBased Encoder only works with RGB32. Got " 65 << "RowBased VideoEncoder only works with RGB32. Got "
65 << capture_data->pixel_format(); 66 << capture_data->pixel_format();
66 capture_data_ = capture_data; 67 capture_data_ = capture_data;
67 callback_ = data_available_callback; 68 callback_ = data_available_callback;
68 69
69 const SkRegion& region = capture_data->dirty_region(); 70 const SkRegion& region = capture_data->dirty_region();
70 SkRegion::Iterator iter(region); 71 SkRegion::Iterator iter(region);
71 while (!iter.done()) { 72 while (!iter.done()) {
72 SkIRect rect = iter.rect(); 73 SkIRect rect = iter.rect();
73 iter.next(); 74 iter.next();
74 EncodeRect(rect, iter.done()); 75 EncodeRect(rect, iter.done());
75 } 76 }
76 77
77 capture_data_ = NULL; 78 capture_data_ = NULL;
78 callback_.Reset(); 79 callback_.Reset();
79 } 80 }
80 81
81 void EncoderRowBased::EncodeRect(const SkIRect& rect, bool last) { 82 void VideoEncoderRowBased::EncodeRect(const SkIRect& rect, bool last) {
82 CHECK(capture_data_->data_planes().data[0]); 83 CHECK(capture_data_->data_planes().data[0]);
83 CHECK_EQ(capture_data_->pixel_format(), media::VideoFrame::RGB32); 84 CHECK_EQ(capture_data_->pixel_format(), media::VideoFrame::RGB32);
84 const int strides = capture_data_->data_planes().strides[0]; 85 const int strides = capture_data_->data_planes().strides[0];
85 const int bytes_per_pixel = 4; 86 const int bytes_per_pixel = 4;
86 const int row_size = bytes_per_pixel * rect.width(); 87 const int row_size = bytes_per_pixel * rect.width();
87 88
88 compressor_->Reset(); 89 compressor_->Reset();
89 90
90 scoped_ptr<VideoPacket> packet(new VideoPacket()); 91 scoped_ptr<VideoPacket> packet(new VideoPacket());
91 PrepareUpdateStart(rect, packet.get()); 92 PrepareUpdateStart(rect, packet.get());
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 144
144 // Reached the end of input row and we're not at the last row. 145 // Reached the end of input row and we're not at the last row.
145 if (row_pos == row_size && row_y < rect.height() - 1) { 146 if (row_pos == row_size && row_y < rect.height() - 1) {
146 row_pos = 0; 147 row_pos = 0;
147 in += strides; 148 in += strides;
148 ++row_y; 149 ++row_y;
149 } 150 }
150 } 151 }
151 } 152 }
152 153
153 void EncoderRowBased::PrepareUpdateStart(const SkIRect& rect, 154 void VideoEncoderRowBased::PrepareUpdateStart(const SkIRect& rect,
154 VideoPacket* packet) { 155 VideoPacket* packet) {
155 packet->set_flags(packet->flags() | VideoPacket::FIRST_PACKET); 156 packet->set_flags(packet->flags() | VideoPacket::FIRST_PACKET);
156 157
157 VideoPacketFormat* format = packet->mutable_format(); 158 VideoPacketFormat* format = packet->mutable_format();
158 format->set_x(rect.fLeft); 159 format->set_x(rect.fLeft);
159 format->set_y(rect.fTop); 160 format->set_y(rect.fTop);
160 format->set_width(rect.width()); 161 format->set_width(rect.width());
161 format->set_height(rect.height()); 162 format->set_height(rect.height());
162 format->set_encoding(encoding_); 163 format->set_encoding(encoding_);
163 if (capture_data_->size() != screen_size_) { 164 if (capture_data_->size() != screen_size_) {
164 screen_size_ = capture_data_->size(); 165 screen_size_ = capture_data_->size();
165 format->set_screen_width(screen_size_.width()); 166 format->set_screen_width(screen_size_.width());
166 format->set_screen_height(screen_size_.height()); 167 format->set_screen_height(screen_size_.height());
167 } 168 }
168 } 169 }
169 170
170 uint8* EncoderRowBased::GetOutputBuffer(VideoPacket* packet, size_t size) { 171 uint8* VideoEncoderRowBased::GetOutputBuffer(VideoPacket* packet, size_t size) {
171 packet->mutable_data()->resize(size); 172 packet->mutable_data()->resize(size);
172 // TODO(ajwong): Is there a better way to do this at all??? 173 // TODO(ajwong): Is there a better way to do this at all???
173 return const_cast<uint8*>(reinterpret_cast<const uint8*>( 174 return const_cast<uint8*>(reinterpret_cast<const uint8*>(
174 packet->mutable_data()->data())); 175 packet->mutable_data()->data()));
175 } 176 }
176 177
177 } // namespace remoting 178 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/codec/video_encoder_row_based.h ('k') | remoting/codec/video_encoder_row_based_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698