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

Side by Side Diff: remoting/client/plugin/chromoting_instance.cc

Issue 804663002: Remove MediaSource renderer from the remoting client plugin (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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
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/client/plugin/chromoting_instance.h" 5 #include "remoting/client/plugin/chromoting_instance.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #if defined(OS_NACL) 10 #if defined(OS_NACL)
(...skipping 21 matching lines...) Expand all
32 #include "ppapi/cpp/image_data.h" 32 #include "ppapi/cpp/image_data.h"
33 #include "ppapi/cpp/input_event.h" 33 #include "ppapi/cpp/input_event.h"
34 #include "ppapi/cpp/rect.h" 34 #include "ppapi/cpp/rect.h"
35 #include "ppapi/cpp/var_array_buffer.h" 35 #include "ppapi/cpp/var_array_buffer.h"
36 #include "ppapi/cpp/var_dictionary.h" 36 #include "ppapi/cpp/var_dictionary.h"
37 #include "remoting/base/constants.h" 37 #include "remoting/base/constants.h"
38 #include "remoting/base/util.h" 38 #include "remoting/base/util.h"
39 #include "remoting/client/chromoting_client.h" 39 #include "remoting/client/chromoting_client.h"
40 #include "remoting/client/frame_consumer_proxy.h" 40 #include "remoting/client/frame_consumer_proxy.h"
41 #include "remoting/client/plugin/delegating_signal_strategy.h" 41 #include "remoting/client/plugin/delegating_signal_strategy.h"
42 #include "remoting/client/plugin/media_source_video_renderer.h"
43 #include "remoting/client/plugin/normalizing_input_filter_cros.h" 42 #include "remoting/client/plugin/normalizing_input_filter_cros.h"
44 #include "remoting/client/plugin/normalizing_input_filter_mac.h" 43 #include "remoting/client/plugin/normalizing_input_filter_mac.h"
45 #include "remoting/client/plugin/pepper_audio_player.h" 44 #include "remoting/client/plugin/pepper_audio_player.h"
46 #include "remoting/client/plugin/pepper_mouse_locker.h" 45 #include "remoting/client/plugin/pepper_mouse_locker.h"
47 #include "remoting/client/plugin/pepper_port_allocator.h" 46 #include "remoting/client/plugin/pepper_port_allocator.h"
48 #include "remoting/client/plugin/pepper_view.h" 47 #include "remoting/client/plugin/pepper_view.h"
49 #include "remoting/client/software_video_renderer.h" 48 #include "remoting/client/software_video_renderer.h"
50 #include "remoting/client/token_fetcher_proxy.h" 49 #include "remoting/client/token_fetcher_proxy.h"
51 #include "remoting/protocol/connection_to_host.h" 50 #include "remoting/protocol/connection_to_host.h"
52 #include "remoting/protocol/host_stub.h" 51 #include "remoting/protocol/host_stub.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 base::LazyInstance<base::Lock>::Leaky 169 base::LazyInstance<base::Lock>::Leaky
171 g_logging_lock = LAZY_INSTANCE_INITIALIZER; 170 g_logging_lock = LAZY_INSTANCE_INITIALIZER;
172 logging::LogMessageHandlerFunction g_logging_old_handler = NULL; 171 logging::LogMessageHandlerFunction g_logging_old_handler = NULL;
173 172
174 } // namespace 173 } // namespace
175 174
176 // String sent in the "hello" message to the webapp to describe features. 175 // String sent in the "hello" message to the webapp to describe features.
177 const char ChromotingInstance::kApiFeatures[] = 176 const char ChromotingInstance::kApiFeatures[] =
178 "highQualityScaling injectKeyEvent sendClipboardItem remapKey trapKey " 177 "highQualityScaling injectKeyEvent sendClipboardItem remapKey trapKey "
179 "notifyClientResolution pauseVideo pauseAudio asyncPin thirdPartyAuth " 178 "notifyClientResolution pauseVideo pauseAudio asyncPin thirdPartyAuth "
180 "pinlessAuth extensionMessage allowMouseLock mediaSourceRendering " 179 "pinlessAuth extensionMessage allowMouseLock videoControl";
181 "videoControl";
182 180
183 const char ChromotingInstance::kRequestedCapabilities[] = ""; 181 const char ChromotingInstance::kRequestedCapabilities[] = "";
184 const char ChromotingInstance::kSupportedCapabilities[] = "desktopShape"; 182 const char ChromotingInstance::kSupportedCapabilities[] = "desktopShape";
185 183
186 ChromotingInstance::ChromotingInstance(PP_Instance pp_instance) 184 ChromotingInstance::ChromotingInstance(PP_Instance pp_instance)
187 : pp::Instance(pp_instance), 185 : pp::Instance(pp_instance),
188 initialized_(false), 186 initialized_(false),
189 plugin_task_runner_(new PluginThreadTaskRunner(&plugin_thread_delegate_)), 187 plugin_task_runner_(new PluginThreadTaskRunner(&plugin_thread_delegate_)),
190 context_(plugin_task_runner_.get()), 188 context_(plugin_task_runner_.get()),
191 input_tracker_(&mouse_input_filter_), 189 input_tracker_(&mouse_input_filter_),
192 key_mapper_(&input_tracker_), 190 key_mapper_(&input_tracker_),
193 cursor_setter_(this), 191 cursor_setter_(this),
194 empty_cursor_filter_(&cursor_setter_), 192 empty_cursor_filter_(&cursor_setter_),
195 text_input_controller_(this), 193 text_input_controller_(this),
196 use_async_pin_dialog_(false), 194 use_async_pin_dialog_(false),
197 use_media_source_rendering_(false),
198 weak_factory_(this) { 195 weak_factory_(this) {
199 #if defined(OS_NACL) 196 #if defined(OS_NACL)
200 // In NaCl global resources need to be initialized differently because they 197 // In NaCl global resources need to be initialized differently because they
201 // are not shared with Chrome. 198 // are not shared with Chrome.
202 thread_task_runner_handle_.reset( 199 thread_task_runner_handle_.reset(
203 new base::ThreadTaskRunnerHandle(plugin_task_runner_)); 200 new base::ThreadTaskRunnerHandle(plugin_task_runner_));
204 thread_wrapper_.reset( 201 thread_wrapper_.reset(
205 new jingle_glue::JingleThreadWrapper(plugin_task_runner_)); 202 new jingle_glue::JingleThreadWrapper(plugin_task_runner_));
206 media::InitializeCPUSpecificYUVConversions(); 203 media::InitializeCPUSpecificYUVConversions();
207 204
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 } else if (method == "onPinFetched") { 342 } else if (method == "onPinFetched") {
346 HandleOnPinFetched(*data); 343 HandleOnPinFetched(*data);
347 } else if (method == "onThirdPartyTokenFetched") { 344 } else if (method == "onThirdPartyTokenFetched") {
348 HandleOnThirdPartyTokenFetched(*data); 345 HandleOnThirdPartyTokenFetched(*data);
349 } else if (method == "requestPairing") { 346 } else if (method == "requestPairing") {
350 HandleRequestPairing(*data); 347 HandleRequestPairing(*data);
351 } else if (method == "extensionMessage") { 348 } else if (method == "extensionMessage") {
352 HandleExtensionMessage(*data); 349 HandleExtensionMessage(*data);
353 } else if (method == "allowMouseLock") { 350 } else if (method == "allowMouseLock") {
354 HandleAllowMouseLockMessage(); 351 HandleAllowMouseLockMessage();
355 } else if (method == "enableMediaSourceRendering") {
356 HandleEnableMediaSourceRendering();
357 } else if (method == "sendMouseInputWhenUnfocused") { 352 } else if (method == "sendMouseInputWhenUnfocused") {
358 HandleSendMouseInputWhenUnfocused(); 353 HandleSendMouseInputWhenUnfocused();
359 } else if (method == "delegateLargeCursors") { 354 } else if (method == "delegateLargeCursors") {
360 HandleDelegateLargeCursors(); 355 HandleDelegateLargeCursors();
361 } 356 }
362 } 357 }
363 358
364 void ChromotingInstance::DidChangeFocus(bool has_focus) { 359 void ChromotingInstance::DidChangeFocus(bool has_focus) {
365 DCHECK(plugin_task_runner_->BelongsToCurrentThread()); 360 DCHECK(plugin_task_runner_->BelongsToCurrentThread());
366 361
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 } 621 }
627 #elif defined(OS_MACOSX) 622 #elif defined(OS_MACOSX)
628 normalizing_input_filter_.reset(new NormalizingInputFilterMac(&key_mapper_)); 623 normalizing_input_filter_.reset(new NormalizingInputFilterMac(&key_mapper_));
629 #elif defined(OS_CHROMEOS) 624 #elif defined(OS_CHROMEOS)
630 normalizing_input_filter_.reset(new NormalizingInputFilterCros(&key_mapper_)); 625 normalizing_input_filter_.reset(new NormalizingInputFilterCros(&key_mapper_));
631 #else 626 #else
632 normalizing_input_filter_.reset(new protocol::InputFilter(&key_mapper_)); 627 normalizing_input_filter_.reset(new protocol::InputFilter(&key_mapper_));
633 #endif 628 #endif
634 input_handler_.set_input_stub(normalizing_input_filter_.get()); 629 input_handler_.set_input_stub(normalizing_input_filter_.get());
635 630
636 if (use_media_source_rendering_) { 631 view_.reset(new PepperView(this, &context_));
637 video_renderer_.reset(new MediaSourceVideoRenderer(this)); 632 view_weak_factory_.reset(
638 } else { 633 new base::WeakPtrFactory<FrameConsumer>(view_.get()));
639 view_.reset(new PepperView(this, &context_));
640 view_weak_factory_.reset(
641 new base::WeakPtrFactory<FrameConsumer>(view_.get()));
642 634
643 // SoftwareVideoRenderer runs on a separate thread so for now we wrap 635 // SoftwareVideoRenderer runs on a separate thread so for now we wrap
644 // PepperView with a ref-counted proxy object. 636 // PepperView with a ref-counted proxy object.
645 scoped_refptr<FrameConsumerProxy> consumer_proxy = 637 scoped_refptr<FrameConsumerProxy> consumer_proxy =
646 new FrameConsumerProxy(plugin_task_runner_, 638 new FrameConsumerProxy(plugin_task_runner_,
647 view_weak_factory_->GetWeakPtr()); 639 view_weak_factory_->GetWeakPtr());
648 640
649 SoftwareVideoRenderer* renderer = 641 SoftwareVideoRenderer* renderer =
650 new SoftwareVideoRenderer(context_.main_task_runner(), 642 new SoftwareVideoRenderer(context_.main_task_runner(),
651 context_.decode_task_runner(), 643 context_.decode_task_runner(),
652 consumer_proxy); 644 consumer_proxy);
653 view_->Initialize(renderer); 645 view_->Initialize(renderer);
654 if (!plugin_view_.is_null()) 646 if (!plugin_view_.is_null())
655 view_->SetView(plugin_view_); 647 view_->SetView(plugin_view_);
656 video_renderer_.reset(renderer); 648 video_renderer_.reset(renderer);
657 }
658 649
659 scoped_ptr<AudioPlayer> audio_player(new PepperAudioPlayer(this)); 650 scoped_ptr<AudioPlayer> audio_player(new PepperAudioPlayer(this));
660 client_.reset(new ChromotingClient(&context_, this, video_renderer_.get(), 651 client_.reset(new ChromotingClient(&context_, this, video_renderer_.get(),
661 audio_player.Pass())); 652 audio_player.Pass()));
662 653
663 // Connect the input pipeline to the protocol stub & initialize components. 654 // Connect the input pipeline to the protocol stub & initialize components.
664 mouse_input_filter_.set_input_stub(client_->input_stub()); 655 mouse_input_filter_.set_input_stub(client_->input_stub());
665 if (!plugin_view_.is_null()) { 656 if (!plugin_view_.is_null()) {
666 mouse_input_filter_.set_input_size(webrtc::DesktopSize( 657 mouse_input_filter_.set_input_size(webrtc::DesktopSize(
667 plugin_view_.GetRect().width(), plugin_view_.GetRect().height())); 658 plugin_view_.GetRect().width(), plugin_view_.GetRect().height()));
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 927
937 void ChromotingInstance::HandleAllowMouseLockMessage() { 928 void ChromotingInstance::HandleAllowMouseLockMessage() {
938 // Create the mouse lock handler and route cursor shape messages through it. 929 // Create the mouse lock handler and route cursor shape messages through it.
939 mouse_locker_.reset(new PepperMouseLocker( 930 mouse_locker_.reset(new PepperMouseLocker(
940 this, base::Bind(&PepperInputHandler::set_send_mouse_move_deltas, 931 this, base::Bind(&PepperInputHandler::set_send_mouse_move_deltas,
941 base::Unretained(&input_handler_)), 932 base::Unretained(&input_handler_)),
942 &cursor_setter_)); 933 &cursor_setter_));
943 empty_cursor_filter_.set_cursor_stub(mouse_locker_.get()); 934 empty_cursor_filter_.set_cursor_stub(mouse_locker_.get());
944 } 935 }
945 936
946 void ChromotingInstance::HandleEnableMediaSourceRendering() {
947 use_media_source_rendering_ = true;
948 }
949
950 void ChromotingInstance::HandleSendMouseInputWhenUnfocused() { 937 void ChromotingInstance::HandleSendMouseInputWhenUnfocused() {
951 input_handler_.set_send_mouse_input_when_unfocused(true); 938 input_handler_.set_send_mouse_input_when_unfocused(true);
952 } 939 }
953 940
954 void ChromotingInstance::HandleDelegateLargeCursors() { 941 void ChromotingInstance::HandleDelegateLargeCursors() {
955 cursor_setter_.set_delegate_stub(this); 942 cursor_setter_.set_delegate_stub(this);
956 } 943 }
957 944
958 ChromotingStats* ChromotingInstance::GetStats() { 945 ChromotingStats* ChromotingInstance::GetStats() {
959 if (!video_renderer_.get()) 946 if (!video_renderer_.get())
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 std::string url_scheme = url.substr(url_components.scheme.begin, 1119 std::string url_scheme = url.substr(url_components.scheme.begin,
1133 url_components.scheme.len); 1120 url_components.scheme.len);
1134 return url_scheme == kChromeExtensionUrlScheme; 1121 return url_scheme == kChromeExtensionUrlScheme;
1135 } 1122 }
1136 1123
1137 bool ChromotingInstance::IsConnected() { 1124 bool ChromotingInstance::IsConnected() {
1138 return client_ && 1125 return client_ &&
1139 (client_->connection_state() == protocol::ConnectionToHost::CONNECTED); 1126 (client_->connection_state() == protocol::ConnectionToHost::CONNECTED);
1140 } 1127 }
1141 1128
1142 void ChromotingInstance::OnMediaSourceSize(const webrtc::DesktopSize& size,
1143 const webrtc::DesktopVector& dpi) {
1144 SetDesktopSize(size, dpi);
1145 }
1146
1147 void ChromotingInstance::OnMediaSourceShape(
1148 const webrtc::DesktopRegion& shape) {
1149 SetDesktopShape(shape);
1150 }
1151
1152 void ChromotingInstance::OnMediaSourceReset(const std::string& format) {
1153 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue());
1154 data->SetString("format", format);
1155 PostLegacyJsonMessage("mediaSourceReset", data.Pass());
1156 }
1157
1158 void ChromotingInstance::OnMediaSourceData(uint8_t* buffer, size_t buffer_size,
1159 bool keyframe) {
1160 pp::VarArrayBuffer array_buffer(buffer_size);
1161 void* data_ptr = array_buffer.Map();
1162 memcpy(data_ptr, buffer, buffer_size);
1163 array_buffer.Unmap();
1164 pp::VarDictionary data_dictionary;
1165 data_dictionary.Set(pp::Var("buffer"), array_buffer);
1166 data_dictionary.Set(pp::Var("keyframe"), keyframe);
1167 PostChromotingMessage("mediaSourceData", data_dictionary);
1168 }
1169
1170 } // namespace remoting 1129 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/client/plugin/chromoting_instance.h ('k') | remoting/client/plugin/media_source_video_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698