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

Side by Side Diff: remoting/client/jni/chromoting_jni_instance.cc

Issue 136763009: Add VideoProcessor interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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
« no previous file with comments | « remoting/client/jni/chromoting_jni_instance.h ('k') | remoting/client/jni/jni_frame_consumer.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/client/jni/chromoting_jni_instance.h" 5 #include "remoting/client/jni/chromoting_jni_instance.h"
6 6
7 #include <android/log.h> 7 #include <android/log.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "net/socket/client_socket_factory.h" 11 #include "net/socket/client_socket_factory.h"
12 #include "remoting/client/audio_player.h" 12 #include "remoting/client/audio_player.h"
13 #include "remoting/client/jni/android_keymap.h" 13 #include "remoting/client/jni/android_keymap.h"
14 #include "remoting/client/jni/chromoting_jni_runtime.h" 14 #include "remoting/client/jni/chromoting_jni_runtime.h"
15 #include "remoting/client/software_video_renderer.h"
15 #include "remoting/jingle_glue/chromium_port_allocator.h" 16 #include "remoting/jingle_glue/chromium_port_allocator.h"
16 #include "remoting/jingle_glue/chromium_socket_factory.h" 17 #include "remoting/jingle_glue/chromium_socket_factory.h"
17 #include "remoting/jingle_glue/network_settings.h" 18 #include "remoting/jingle_glue/network_settings.h"
18 #include "remoting/protocol/host_stub.h" 19 #include "remoting/protocol/host_stub.h"
19 #include "remoting/protocol/libjingle_transport_factory.h" 20 #include "remoting/protocol/libjingle_transport_factory.h"
20 21
21 namespace remoting { 22 namespace remoting {
22 23
23 namespace { 24 namespace {
24 25
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 182
182 void ChromotingJniInstance::RecordPaintTime(int64 paint_time_ms) { 183 void ChromotingJniInstance::RecordPaintTime(int64 paint_time_ms) {
183 if (!jni_runtime_->network_task_runner()->BelongsToCurrentThread()) { 184 if (!jni_runtime_->network_task_runner()->BelongsToCurrentThread()) {
184 jni_runtime_->network_task_runner()->PostTask( 185 jni_runtime_->network_task_runner()->PostTask(
185 FROM_HERE, base::Bind(&ChromotingJniInstance::RecordPaintTime, this, 186 FROM_HERE, base::Bind(&ChromotingJniInstance::RecordPaintTime, this,
186 paint_time_ms)); 187 paint_time_ms));
187 return; 188 return;
188 } 189 }
189 190
190 if (stats_logging_enabled_) 191 if (stats_logging_enabled_)
191 client_->GetStats()->video_paint_ms()->Record(paint_time_ms); 192 video_renderer_->GetStats()->video_paint_ms()->Record(paint_time_ms);
192 } 193 }
193 194
194 void ChromotingJniInstance::OnConnectionState( 195 void ChromotingJniInstance::OnConnectionState(
195 protocol::ConnectionToHost::State state, 196 protocol::ConnectionToHost::State state,
196 protocol::ErrorCode error) { 197 protocol::ErrorCode error) {
197 DCHECK(jni_runtime_->network_task_runner()->BelongsToCurrentThread()); 198 DCHECK(jni_runtime_->network_task_runner()->BelongsToCurrentThread());
198 199
199 EnableStatsLogging(state == protocol::ConnectionToHost::CONNECTED); 200 EnableStatsLogging(state == protocol::ConnectionToHost::CONNECTED);
200 201
201 if (create_pairing_ && state == protocol::ConnectionToHost::CONNECTED) { 202 if (create_pairing_ && state == protocol::ConnectionToHost::CONNECTED) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 292
292 void ChromotingJniInstance::ConnectToHostOnNetworkThread() { 293 void ChromotingJniInstance::ConnectToHostOnNetworkThread() {
293 DCHECK(jni_runtime_->network_task_runner()->BelongsToCurrentThread()); 294 DCHECK(jni_runtime_->network_task_runner()->BelongsToCurrentThread());
294 295
295 client_context_.reset(new ClientContext( 296 client_context_.reset(new ClientContext(
296 jni_runtime_->network_task_runner().get())); 297 jni_runtime_->network_task_runner().get()));
297 client_context_->Start(); 298 client_context_->Start();
298 299
299 connection_.reset(new protocol::ConnectionToHost(true)); 300 connection_.reset(new protocol::ConnectionToHost(true));
300 301
302 SoftwareVideoRenderer* renderer =
303 new SoftwareVideoRenderer(client_context_->main_task_runner(),
304 client_context_->decode_task_runner(),
305 frame_consumer_);
306 view_->set_frame_producer(renderer);
307 video_renderer_.reset(renderer);
308
301 client_.reset(new ChromotingClient( 309 client_.reset(new ChromotingClient(
302 client_config_, client_context_.get(), connection_.get(), 310 client_config_, client_context_.get(), connection_.get(),
303 this, frame_consumer_, scoped_ptr<AudioPlayer>())); 311 this, video_renderer_.get(), scoped_ptr<AudioPlayer>()));
304 312
305 view_->set_frame_producer(client_->GetFrameProducer());
306 313
307 signaling_.reset(new XmppSignalStrategy( 314 signaling_.reset(new XmppSignalStrategy(
308 net::ClientSocketFactory::GetDefaultFactory(), 315 net::ClientSocketFactory::GetDefaultFactory(),
309 jni_runtime_->url_requester(), xmpp_config_)); 316 jni_runtime_->url_requester(), xmpp_config_));
310 317
311 NetworkSettings network_settings(NetworkSettings::NAT_TRAVERSAL_ENABLED); 318 NetworkSettings network_settings(NetworkSettings::NAT_TRAVERSAL_ENABLED);
312 319
313 // Use Chrome's network stack to allocate ports for peer-to-peer channels. 320 // Use Chrome's network stack to allocate ports for peer-to-peer channels.
314 scoped_ptr<ChromiumPortAllocator> port_allocator( 321 scoped_ptr<ChromiumPortAllocator> port_allocator(
315 ChromiumPortAllocator::Create(jni_runtime_->url_requester(), 322 ChromiumPortAllocator::Create(jni_runtime_->url_requester(),
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 } 373 }
367 stats_logging_enabled_ = enabled; 374 stats_logging_enabled_ = enabled;
368 } 375 }
369 376
370 void ChromotingJniInstance::LogPerfStats() { 377 void ChromotingJniInstance::LogPerfStats() {
371 DCHECK(jni_runtime_->network_task_runner()->BelongsToCurrentThread()); 378 DCHECK(jni_runtime_->network_task_runner()->BelongsToCurrentThread());
372 379
373 if (!stats_logging_enabled_) 380 if (!stats_logging_enabled_)
374 return; 381 return;
375 382
376 ChromotingStats* stats = client_->GetStats(); 383 ChromotingStats* stats = video_renderer_->GetStats();
377 __android_log_print(ANDROID_LOG_INFO, "stats", 384 __android_log_print(ANDROID_LOG_INFO, "stats",
378 "Bandwidth:%.0f FrameRate:%.1f Capture:%.1f Encode:%.1f " 385 "Bandwidth:%.0f FrameRate:%.1f Capture:%.1f Encode:%.1f "
379 "Decode:%.1f Render:%.1f Latency:%.0f", 386 "Decode:%.1f Render:%.1f Latency:%.0f",
380 stats->video_bandwidth()->Rate(), 387 stats->video_bandwidth()->Rate(),
381 stats->video_frame_rate()->Rate(), 388 stats->video_frame_rate()->Rate(),
382 stats->video_capture_ms()->Average(), 389 stats->video_capture_ms()->Average(),
383 stats->video_encode_ms()->Average(), 390 stats->video_encode_ms()->Average(),
384 stats->video_decode_ms()->Average(), 391 stats->video_decode_ms()->Average(),
385 stats->video_paint_ms()->Average(), 392 stats->video_paint_ms()->Average(),
386 stats->round_trip_ms()->Average()); 393 stats->round_trip_ms()->Average());
387 394
388 jni_runtime_->network_task_runner()->PostDelayedTask( 395 jni_runtime_->network_task_runner()->PostDelayedTask(
389 FROM_HERE, base::Bind(&ChromotingJniInstance::LogPerfStats, this), 396 FROM_HERE, base::Bind(&ChromotingJniInstance::LogPerfStats, this),
390 base::TimeDelta::FromMilliseconds(kPerfStatsIntervalMs)); 397 base::TimeDelta::FromMilliseconds(kPerfStatsIntervalMs));
391 } 398 }
392 399
393 } // namespace remoting 400 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/client/jni/chromoting_jni_instance.h ('k') | remoting/client/jni/jni_frame_consumer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698