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

Side by Side Diff: content/renderer/media/rtc_video_encoder.cc

Issue 193303002: WeakPtr destruction order cleanup: media edition. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 6 years, 9 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 | « content/renderer/media/rtc_video_encoder.h ('k') | content/renderer/media/video_capture_impl.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 "content/renderer/media/rtc_video_encoder.h" 5 #include "content/renderer/media/rtc_video_encoder.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/scoped_vector.h" 10 #include "base/memory/scoped_vector.h"
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 505
506 RTCVideoEncoder::RTCVideoEncoder( 506 RTCVideoEncoder::RTCVideoEncoder(
507 webrtc::VideoCodecType type, 507 webrtc::VideoCodecType type,
508 media::VideoCodecProfile profile, 508 media::VideoCodecProfile profile,
509 const scoped_refptr<media::GpuVideoAcceleratorFactories>& gpu_factories) 509 const scoped_refptr<media::GpuVideoAcceleratorFactories>& gpu_factories)
510 : video_codec_type_(type), 510 : video_codec_type_(type),
511 video_codec_profile_(profile), 511 video_codec_profile_(profile),
512 gpu_factories_(gpu_factories), 512 gpu_factories_(gpu_factories),
513 encoded_image_callback_(NULL), 513 encoded_image_callback_(NULL),
514 impl_status_(WEBRTC_VIDEO_CODEC_UNINITIALIZED), 514 impl_status_(WEBRTC_VIDEO_CODEC_UNINITIALIZED),
515 weak_this_factory_(this) { 515 weak_factory_(this) {
516 DVLOG(1) << "RTCVideoEncoder(): profile=" << profile; 516 DVLOG(1) << "RTCVideoEncoder(): profile=" << profile;
517 } 517 }
518 518
519 RTCVideoEncoder::~RTCVideoEncoder() { 519 RTCVideoEncoder::~RTCVideoEncoder() {
520 DCHECK(thread_checker_.CalledOnValidThread()); 520 DCHECK(thread_checker_.CalledOnValidThread());
521 Release(); 521 Release();
522 DCHECK(!impl_); 522 DCHECK(!impl_);
523 } 523 }
524 524
525 int32_t RTCVideoEncoder::InitEncode(const webrtc::VideoCodec* codec_settings, 525 int32_t RTCVideoEncoder::InitEncode(const webrtc::VideoCodec* codec_settings,
526 int32_t number_of_cores, 526 int32_t number_of_cores,
527 uint32_t max_payload_size) { 527 uint32_t max_payload_size) {
528 DVLOG(1) << "InitEncode(): codecType=" << codec_settings->codecType 528 DVLOG(1) << "InitEncode(): codecType=" << codec_settings->codecType
529 << ", width=" << codec_settings->width 529 << ", width=" << codec_settings->width
530 << ", height=" << codec_settings->height 530 << ", height=" << codec_settings->height
531 << ", startBitrate=" << codec_settings->startBitrate; 531 << ", startBitrate=" << codec_settings->startBitrate;
532 DCHECK(thread_checker_.CalledOnValidThread()); 532 DCHECK(thread_checker_.CalledOnValidThread());
533 DCHECK(!impl_); 533 DCHECK(!impl_);
534 534
535 weak_this_factory_.InvalidateWeakPtrs(); 535 weak_factory_.InvalidateWeakPtrs();
536 impl_ = new Impl(weak_this_factory_.GetWeakPtr(), gpu_factories_); 536 impl_ = new Impl(weak_factory_.GetWeakPtr(), gpu_factories_);
537 base::WaitableEvent initialization_waiter(true, false); 537 base::WaitableEvent initialization_waiter(true, false);
538 int32_t initialization_retval = WEBRTC_VIDEO_CODEC_UNINITIALIZED; 538 int32_t initialization_retval = WEBRTC_VIDEO_CODEC_UNINITIALIZED;
539 gpu_factories_->GetTaskRunner()->PostTask( 539 gpu_factories_->GetTaskRunner()->PostTask(
540 FROM_HERE, 540 FROM_HERE,
541 base::Bind(&RTCVideoEncoder::Impl::CreateAndInitializeVEA, 541 base::Bind(&RTCVideoEncoder::Impl::CreateAndInitializeVEA,
542 impl_, 542 impl_,
543 gfx::Size(codec_settings->width, codec_settings->height), 543 gfx::Size(codec_settings->width, codec_settings->height),
544 codec_settings->startBitrate, 544 codec_settings->startBitrate,
545 video_codec_profile_, 545 video_codec_profile_,
546 &initialization_waiter, 546 &initialization_waiter,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 } 595 }
596 596
597 int32_t RTCVideoEncoder::Release() { 597 int32_t RTCVideoEncoder::Release() {
598 DVLOG(3) << "Release()"; 598 DVLOG(3) << "Release()";
599 DCHECK(thread_checker_.CalledOnValidThread()); 599 DCHECK(thread_checker_.CalledOnValidThread());
600 600
601 if (impl_) { 601 if (impl_) {
602 gpu_factories_->GetTaskRunner()->PostTask( 602 gpu_factories_->GetTaskRunner()->PostTask(
603 FROM_HERE, base::Bind(&RTCVideoEncoder::Impl::Destroy, impl_)); 603 FROM_HERE, base::Bind(&RTCVideoEncoder::Impl::Destroy, impl_));
604 impl_ = NULL; 604 impl_ = NULL;
605 weak_this_factory_.InvalidateWeakPtrs(); 605 weak_factory_.InvalidateWeakPtrs();
606 impl_status_ = WEBRTC_VIDEO_CODEC_UNINITIALIZED; 606 impl_status_ = WEBRTC_VIDEO_CODEC_UNINITIALIZED;
607 } 607 }
608 return WEBRTC_VIDEO_CODEC_OK; 608 return WEBRTC_VIDEO_CODEC_OK;
609 } 609 }
610 610
611 int32_t RTCVideoEncoder::SetChannelParameters(uint32_t packet_loss, int rtt) { 611 int32_t RTCVideoEncoder::SetChannelParameters(uint32_t packet_loss, int rtt) {
612 DVLOG(3) << "SetChannelParameters(): packet_loss=" << packet_loss 612 DVLOG(3) << "SetChannelParameters(): packet_loss=" << packet_loss
613 << ", rtt=" << rtt; 613 << ", rtt=" << rtt;
614 DCHECK(thread_checker_.CalledOnValidThread()); 614 DCHECK(thread_checker_.CalledOnValidThread());
615 // Ignored. 615 // Ignored.
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 UMA_HISTOGRAM_BOOLEAN("Media.RTCVideoEncoderInitEncodeSuccess", 690 UMA_HISTOGRAM_BOOLEAN("Media.RTCVideoEncoderInitEncodeSuccess",
691 init_retval == WEBRTC_VIDEO_CODEC_OK); 691 init_retval == WEBRTC_VIDEO_CODEC_OK);
692 if (init_retval == WEBRTC_VIDEO_CODEC_OK) { 692 if (init_retval == WEBRTC_VIDEO_CODEC_OK) {
693 UMA_HISTOGRAM_ENUMERATION("Media.RTCVideoEncoderProfile", 693 UMA_HISTOGRAM_ENUMERATION("Media.RTCVideoEncoderProfile",
694 video_codec_profile_, 694 video_codec_profile_,
695 media::VIDEO_CODEC_PROFILE_MAX + 1); 695 media::VIDEO_CODEC_PROFILE_MAX + 1);
696 } 696 }
697 } 697 }
698 698
699 } // namespace content 699 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/rtc_video_encoder.h ('k') | content/renderer/media/video_capture_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698