OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2004 Google Inc. | 3 * Copyright 2004 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 while (!voice_channels_.empty()) { | 310 while (!voice_channels_.empty()) { |
311 DestroyVoiceChannel_w(voice_channels_.back(), nullptr); | 311 DestroyVoiceChannel_w(voice_channels_.back(), nullptr); |
312 } | 312 } |
313 if (!SetCaptureDevice_w(NULL)) { | 313 if (!SetCaptureDevice_w(NULL)) { |
314 LOG(LS_WARNING) << "failed to delete video capturer"; | 314 LOG(LS_WARNING) << "failed to delete video capturer"; |
315 } | 315 } |
316 media_engine_->Terminate(); | 316 media_engine_->Terminate(); |
317 } | 317 } |
318 | 318 |
319 VoiceChannel* ChannelManager::CreateVoiceChannel( | 319 VoiceChannel* ChannelManager::CreateVoiceChannel( |
320 BaseSession* session, | 320 TransportController* transport_controller, |
321 const std::string& content_name, | 321 const std::string& content_name, |
322 bool rtcp, | 322 bool rtcp, |
323 const AudioOptions& options) { | 323 const AudioOptions& options) { |
324 return worker_thread_->Invoke<VoiceChannel*>( | 324 return worker_thread_->Invoke<VoiceChannel*>( |
325 Bind(&ChannelManager::CreateVoiceChannel_w, this, session, content_name, | 325 Bind(&ChannelManager::CreateVoiceChannel_w, this, transport_controller, |
326 rtcp, options)); | 326 content_name, rtcp, options)); |
327 } | 327 } |
328 | 328 |
329 VoiceChannel* ChannelManager::CreateVoiceChannel_w( | 329 VoiceChannel* ChannelManager::CreateVoiceChannel_w( |
330 BaseSession* session, | 330 TransportController* transport_controller, |
331 const std::string& content_name, | 331 const std::string& content_name, |
332 bool rtcp, | 332 bool rtcp, |
333 const AudioOptions& options) { | 333 const AudioOptions& options) { |
334 ASSERT(initialized_); | 334 ASSERT(initialized_); |
335 ASSERT(worker_thread_ == rtc::Thread::Current()); | 335 ASSERT(worker_thread_ == rtc::Thread::Current()); |
336 VoiceMediaChannel* media_channel = media_engine_->CreateChannel(options); | 336 VoiceMediaChannel* media_channel = media_engine_->CreateChannel(options); |
337 if (!media_channel) | 337 if (!media_channel) |
338 return nullptr; | 338 return nullptr; |
339 | 339 |
340 VoiceChannel* voice_channel = new VoiceChannel( | 340 VoiceChannel* voice_channel = |
341 worker_thread_, media_engine_.get(), media_channel, | 341 new VoiceChannel(worker_thread_, media_engine_.get(), media_channel, |
342 session, content_name, rtcp); | 342 transport_controller, content_name, rtcp); |
343 if (!voice_channel->Init()) { | 343 if (!voice_channel->Init()) { |
344 delete voice_channel; | 344 delete voice_channel; |
345 return nullptr; | 345 return nullptr; |
346 } | 346 } |
347 voice_channels_.push_back(voice_channel); | 347 voice_channels_.push_back(voice_channel); |
348 return voice_channel; | 348 return voice_channel; |
349 } | 349 } |
350 | 350 |
351 void ChannelManager::DestroyVoiceChannel(VoiceChannel* voice_channel, | 351 void ChannelManager::DestroyVoiceChannel(VoiceChannel* voice_channel, |
352 VideoChannel* video_channel) { | 352 VideoChannel* video_channel) { |
(...skipping 16 matching lines...) Expand all Loading... |
369 return; | 369 return; |
370 | 370 |
371 if (video_channel) { | 371 if (video_channel) { |
372 video_channel->media_channel()->DetachVoiceChannel(); | 372 video_channel->media_channel()->DetachVoiceChannel(); |
373 } | 373 } |
374 voice_channels_.erase(it); | 374 voice_channels_.erase(it); |
375 delete voice_channel; | 375 delete voice_channel; |
376 } | 376 } |
377 | 377 |
378 VideoChannel* ChannelManager::CreateVideoChannel( | 378 VideoChannel* ChannelManager::CreateVideoChannel( |
379 BaseSession* session, | 379 TransportController* transport_controller, |
380 const std::string& content_name, | 380 const std::string& content_name, |
381 bool rtcp, | 381 bool rtcp, |
382 VoiceChannel* voice_channel) { | 382 VoiceChannel* voice_channel) { |
383 return worker_thread_->Invoke<VideoChannel*>( | 383 return worker_thread_->Invoke<VideoChannel*>( |
384 Bind(&ChannelManager::CreateVideoChannel_w, | 384 Bind(&ChannelManager::CreateVideoChannel_w, this, transport_controller, |
385 this, | 385 content_name, rtcp, VideoOptions(), voice_channel)); |
386 session, | |
387 content_name, | |
388 rtcp, | |
389 VideoOptions(), | |
390 voice_channel)); | |
391 } | 386 } |
392 | 387 |
393 VideoChannel* ChannelManager::CreateVideoChannel( | 388 VideoChannel* ChannelManager::CreateVideoChannel( |
394 BaseSession* session, | 389 TransportController* transport_controller, |
395 const std::string& content_name, | 390 const std::string& content_name, |
396 bool rtcp, | 391 bool rtcp, |
397 const VideoOptions& options, | 392 const VideoOptions& options, |
398 VoiceChannel* voice_channel) { | 393 VoiceChannel* voice_channel) { |
399 return worker_thread_->Invoke<VideoChannel*>( | 394 return worker_thread_->Invoke<VideoChannel*>( |
400 Bind(&ChannelManager::CreateVideoChannel_w, | 395 Bind(&ChannelManager::CreateVideoChannel_w, this, transport_controller, |
401 this, | 396 content_name, rtcp, options, voice_channel)); |
402 session, | |
403 content_name, | |
404 rtcp, | |
405 options, | |
406 voice_channel)); | |
407 } | 397 } |
408 | 398 |
409 VideoChannel* ChannelManager::CreateVideoChannel_w( | 399 VideoChannel* ChannelManager::CreateVideoChannel_w( |
410 BaseSession* session, | 400 TransportController* transport_controller, |
411 const std::string& content_name, | 401 const std::string& content_name, |
412 bool rtcp, | 402 bool rtcp, |
413 const VideoOptions& options, | 403 const VideoOptions& options, |
414 VoiceChannel* voice_channel) { | 404 VoiceChannel* voice_channel) { |
415 ASSERT(initialized_); | 405 ASSERT(initialized_); |
416 ASSERT(worker_thread_ == rtc::Thread::Current()); | 406 ASSERT(worker_thread_ == rtc::Thread::Current()); |
417 VideoMediaChannel* media_channel = | 407 VideoMediaChannel* media_channel = |
418 // voice_channel can be NULL in case of NullVoiceEngine. | 408 // voice_channel can be NULL in case of NullVoiceEngine. |
419 media_engine_->CreateVideoChannel( | 409 media_engine_->CreateVideoChannel( |
420 options, voice_channel ? voice_channel->media_channel() : NULL); | 410 options, voice_channel ? voice_channel->media_channel() : NULL); |
421 if (media_channel == NULL) | 411 if (media_channel == NULL) { |
422 return NULL; | 412 return NULL; |
| 413 } |
423 | 414 |
424 VideoChannel* video_channel = new VideoChannel( | 415 VideoChannel* video_channel = new VideoChannel( |
425 worker_thread_, media_channel, | 416 worker_thread_, media_channel, transport_controller, content_name, rtcp); |
426 session, content_name, rtcp); | |
427 if (!video_channel->Init()) { | 417 if (!video_channel->Init()) { |
428 delete video_channel; | 418 delete video_channel; |
429 return NULL; | 419 return NULL; |
430 } | 420 } |
431 video_channels_.push_back(video_channel); | 421 video_channels_.push_back(video_channel); |
432 return video_channel; | 422 return video_channel; |
433 } | 423 } |
434 | 424 |
435 void ChannelManager::DestroyVideoChannel(VideoChannel* video_channel) { | 425 void ChannelManager::DestroyVideoChannel(VideoChannel* video_channel) { |
436 if (video_channel) { | 426 if (video_channel) { |
(...skipping 10 matching lines...) Expand all Loading... |
447 video_channels_.end(), video_channel); | 437 video_channels_.end(), video_channel); |
448 ASSERT(it != video_channels_.end()); | 438 ASSERT(it != video_channels_.end()); |
449 if (it == video_channels_.end()) | 439 if (it == video_channels_.end()) |
450 return; | 440 return; |
451 | 441 |
452 video_channels_.erase(it); | 442 video_channels_.erase(it); |
453 delete video_channel; | 443 delete video_channel; |
454 } | 444 } |
455 | 445 |
456 DataChannel* ChannelManager::CreateDataChannel( | 446 DataChannel* ChannelManager::CreateDataChannel( |
457 BaseSession* session, const std::string& content_name, | 447 TransportController* transport_controller, |
458 bool rtcp, DataChannelType channel_type) { | 448 const std::string& content_name, |
| 449 bool rtcp, |
| 450 DataChannelType channel_type) { |
459 return worker_thread_->Invoke<DataChannel*>( | 451 return worker_thread_->Invoke<DataChannel*>( |
460 Bind(&ChannelManager::CreateDataChannel_w, this, session, content_name, | 452 Bind(&ChannelManager::CreateDataChannel_w, this, transport_controller, |
461 rtcp, channel_type)); | 453 content_name, rtcp, channel_type)); |
462 } | 454 } |
463 | 455 |
464 DataChannel* ChannelManager::CreateDataChannel_w( | 456 DataChannel* ChannelManager::CreateDataChannel_w( |
465 BaseSession* session, const std::string& content_name, | 457 TransportController* transport_controller, |
466 bool rtcp, DataChannelType data_channel_type) { | 458 const std::string& content_name, |
| 459 bool rtcp, |
| 460 DataChannelType data_channel_type) { |
467 // This is ok to alloc from a thread other than the worker thread. | 461 // This is ok to alloc from a thread other than the worker thread. |
468 ASSERT(initialized_); | 462 ASSERT(initialized_); |
469 DataMediaChannel* media_channel = data_media_engine_->CreateChannel( | 463 DataMediaChannel* media_channel = data_media_engine_->CreateChannel( |
470 data_channel_type); | 464 data_channel_type); |
471 if (!media_channel) { | 465 if (!media_channel) { |
472 LOG(LS_WARNING) << "Failed to create data channel of type " | 466 LOG(LS_WARNING) << "Failed to create data channel of type " |
473 << data_channel_type; | 467 << data_channel_type; |
474 return NULL; | 468 return NULL; |
475 } | 469 } |
476 | 470 |
477 DataChannel* data_channel = new DataChannel( | 471 DataChannel* data_channel = new DataChannel( |
478 worker_thread_, media_channel, | 472 worker_thread_, media_channel, transport_controller, content_name, rtcp); |
479 session, content_name, rtcp); | |
480 if (!data_channel->Init()) { | 473 if (!data_channel->Init()) { |
481 LOG(LS_WARNING) << "Failed to init data channel."; | 474 LOG(LS_WARNING) << "Failed to init data channel."; |
482 delete data_channel; | 475 delete data_channel; |
483 return NULL; | 476 return NULL; |
484 } | 477 } |
485 data_channels_.push_back(data_channel); | 478 data_channels_.push_back(data_channel); |
486 return data_channel; | 479 return data_channel; |
487 } | 480 } |
488 | 481 |
489 void ChannelManager::DestroyDataChannel(DataChannel* data_channel) { | 482 void ChannelManager::DestroyDataChannel(DataChannel* data_channel) { |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
918 const VideoFormat& max_format) { | 911 const VideoFormat& max_format) { |
919 device_manager_->SetVideoCaptureDeviceMaxFormat(usb_id, max_format); | 912 device_manager_->SetVideoCaptureDeviceMaxFormat(usb_id, max_format); |
920 } | 913 } |
921 | 914 |
922 bool ChannelManager::StartAecDump(rtc::PlatformFile file) { | 915 bool ChannelManager::StartAecDump(rtc::PlatformFile file) { |
923 return worker_thread_->Invoke<bool>( | 916 return worker_thread_->Invoke<bool>( |
924 Bind(&MediaEngineInterface::StartAecDump, media_engine_.get(), file)); | 917 Bind(&MediaEngineInterface::StartAecDump, media_engine_.get(), file)); |
925 } | 918 } |
926 | 919 |
927 } // namespace cricket | 920 } // namespace cricket |
OLD | NEW |