| OLD | NEW |
| 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 "media/base/pipeline_impl.h" | 5 #include "media/base/pipeline_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 641 DCHECK(media_task_runner_->BelongsToCurrentThread()); | 641 DCHECK(media_task_runner_->BelongsToCurrentThread()); |
| 642 | 642 |
| 643 base::AutoLock auto_lock(shared_state_lock_); | 643 base::AutoLock auto_lock(shared_state_lock_); |
| 644 shared_state_.statistics.audio_bytes_decoded += stats.audio_bytes_decoded; | 644 shared_state_.statistics.audio_bytes_decoded += stats.audio_bytes_decoded; |
| 645 shared_state_.statistics.video_bytes_decoded += stats.video_bytes_decoded; | 645 shared_state_.statistics.video_bytes_decoded += stats.video_bytes_decoded; |
| 646 shared_state_.statistics.video_frames_decoded += stats.video_frames_decoded; | 646 shared_state_.statistics.video_frames_decoded += stats.video_frames_decoded; |
| 647 shared_state_.statistics.video_frames_dropped += stats.video_frames_dropped; | 647 shared_state_.statistics.video_frames_dropped += stats.video_frames_dropped; |
| 648 shared_state_.statistics.audio_memory_usage += stats.audio_memory_usage; | 648 shared_state_.statistics.audio_memory_usage += stats.audio_memory_usage; |
| 649 shared_state_.statistics.video_memory_usage += stats.video_memory_usage; | 649 shared_state_.statistics.video_memory_usage += stats.video_memory_usage; |
| 650 | 650 |
| 651 base::TimeDelta old_average = |
| 652 shared_state_.statistics.video_keyframe_distance_average; |
| 651 if (stats.video_keyframe_distance_average != kNoTimestamp) { | 653 if (stats.video_keyframe_distance_average != kNoTimestamp) { |
| 652 shared_state_.statistics.video_keyframe_distance_average = | 654 shared_state_.statistics.video_keyframe_distance_average = |
| 653 stats.video_keyframe_distance_average; | 655 stats.video_keyframe_distance_average; |
| 654 } | 656 } |
| 657 |
| 658 if (shared_state_.statistics.video_keyframe_distance_average != old_average) { |
| 659 main_task_runner_->PostTask( |
| 660 FROM_HERE, |
| 661 base::Bind(&PipelineImpl::OnVideoAverageKeyframeDistanceUpdate, |
| 662 weak_pipeline_)); |
| 663 } |
| 655 } | 664 } |
| 656 | 665 |
| 657 void PipelineImpl::RendererWrapper::OnBufferingStateChange( | 666 void PipelineImpl::RendererWrapper::OnBufferingStateChange( |
| 658 BufferingState state) { | 667 BufferingState state) { |
| 659 DCHECK(media_task_runner_->BelongsToCurrentThread()); | 668 DCHECK(media_task_runner_->BelongsToCurrentThread()); |
| 660 DVLOG(2) << __func__ << "(" << state << ") "; | 669 DVLOG(2) << __func__ << "(" << state << ") "; |
| 661 | 670 |
| 662 main_task_runner_->PostTask( | 671 main_task_runner_->PostTask( |
| 663 FROM_HERE, | 672 FROM_HERE, |
| 664 base::Bind(&PipelineImpl::OnBufferingStateChange, weak_pipeline_, state)); | 673 base::Bind(&PipelineImpl::OnBufferingStateChange, weak_pipeline_, state)); |
| (...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1317 | 1326 |
| 1318 void PipelineImpl::OnVideoOpacityChange(bool opaque) { | 1327 void PipelineImpl::OnVideoOpacityChange(bool opaque) { |
| 1319 DVLOG(2) << __func__; | 1328 DVLOG(2) << __func__; |
| 1320 DCHECK(thread_checker_.CalledOnValidThread()); | 1329 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1321 DCHECK(IsRunning()); | 1330 DCHECK(IsRunning()); |
| 1322 | 1331 |
| 1323 DCHECK(client_); | 1332 DCHECK(client_); |
| 1324 client_->OnVideoOpacityChange(opaque); | 1333 client_->OnVideoOpacityChange(opaque); |
| 1325 } | 1334 } |
| 1326 | 1335 |
| 1336 void PipelineImpl::OnVideoAverageKeyframeDistanceUpdate() { |
| 1337 DVLOG(2) << __func__; |
| 1338 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1339 DCHECK(IsRunning()); |
| 1340 |
| 1341 DCHECK(client_); |
| 1342 client_->OnVideoAverageKeyframeDistanceUpdate(); |
| 1343 } |
| 1344 |
| 1327 void PipelineImpl::OnSeekDone() { | 1345 void PipelineImpl::OnSeekDone() { |
| 1328 DVLOG(3) << __func__; | 1346 DVLOG(3) << __func__; |
| 1329 DCHECK(thread_checker_.CalledOnValidThread()); | 1347 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1330 DCHECK(IsRunning()); | 1348 DCHECK(IsRunning()); |
| 1331 | 1349 |
| 1332 seek_time_ = kNoTimestamp; | 1350 seek_time_ = kNoTimestamp; |
| 1333 | 1351 |
| 1334 DCHECK(!seek_cb_.is_null()); | 1352 DCHECK(!seek_cb_.is_null()); |
| 1335 base::ResetAndReturn(&seek_cb_).Run(PIPELINE_OK); | 1353 base::ResetAndReturn(&seek_cb_).Run(PIPELINE_OK); |
| 1336 } | 1354 } |
| 1337 | 1355 |
| 1338 void PipelineImpl::OnSuspendDone() { | 1356 void PipelineImpl::OnSuspendDone() { |
| 1339 DVLOG(3) << __func__; | 1357 DVLOG(3) << __func__; |
| 1340 DCHECK(thread_checker_.CalledOnValidThread()); | 1358 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1341 DCHECK(IsRunning()); | 1359 DCHECK(IsRunning()); |
| 1342 | 1360 |
| 1343 DCHECK(!suspend_cb_.is_null()); | 1361 DCHECK(!suspend_cb_.is_null()); |
| 1344 base::ResetAndReturn(&suspend_cb_).Run(PIPELINE_OK); | 1362 base::ResetAndReturn(&suspend_cb_).Run(PIPELINE_OK); |
| 1345 } | 1363 } |
| 1346 | 1364 |
| 1347 } // namespace media | 1365 } // namespace media |
| OLD | NEW |