| 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/filters/ffmpeg_demuxer.h" | 5 #include "media/filters/ffmpeg_demuxer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 1514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1525 const std::vector<MediaTrack::Id>& track_ids, | 1525 const std::vector<MediaTrack::Id>& track_ids, |
| 1526 base::TimeDelta currTime) { | 1526 base::TimeDelta currTime) { |
| 1527 DCHECK(task_runner_->BelongsToCurrentThread()); | 1527 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 1528 bool enabled = false; | 1528 bool enabled = false; |
| 1529 DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); | 1529 DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| 1530 CHECK(audio_stream); | 1530 CHECK(audio_stream); |
| 1531 if (track_ids.size() > 0) { | 1531 if (track_ids.size() > 0) { |
| 1532 DCHECK(track_id_to_demux_stream_map_[track_ids[0]] == audio_stream); | 1532 DCHECK(track_id_to_demux_stream_map_[track_ids[0]] == audio_stream); |
| 1533 enabled = true; | 1533 enabled = true; |
| 1534 } | 1534 } |
| 1535 DVLOG(1) << __FUNCTION__ << ": " << (enabled ? "enabling" : "disabling") | 1535 DVLOG(1) << __func__ << ": " << (enabled ? "enabling" : "disabling") |
| 1536 << " audio stream"; | 1536 << " audio stream"; |
| 1537 audio_stream->set_enabled(enabled, currTime); | 1537 audio_stream->set_enabled(enabled, currTime); |
| 1538 } | 1538 } |
| 1539 | 1539 |
| 1540 void FFmpegDemuxer::OnSelectedVideoTrackChanged( | 1540 void FFmpegDemuxer::OnSelectedVideoTrackChanged( |
| 1541 const std::vector<MediaTrack::Id>& track_ids, | 1541 const std::vector<MediaTrack::Id>& track_ids, |
| 1542 base::TimeDelta currTime) { | 1542 base::TimeDelta currTime) { |
| 1543 DCHECK(task_runner_->BelongsToCurrentThread()); | 1543 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 1544 bool enabled = false; | 1544 bool enabled = false; |
| 1545 DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); | 1545 DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| 1546 CHECK(video_stream); | 1546 CHECK(video_stream); |
| 1547 if (track_ids.size() > 0) { | 1547 if (track_ids.size() > 0) { |
| 1548 DCHECK(track_id_to_demux_stream_map_[track_ids[0]] == video_stream); | 1548 DCHECK(track_id_to_demux_stream_map_[track_ids[0]] == video_stream); |
| 1549 enabled = true; | 1549 enabled = true; |
| 1550 } | 1550 } |
| 1551 DVLOG(1) << __FUNCTION__ << ": " << (enabled ? "enabling" : "disabling") | 1551 DVLOG(1) << __func__ << ": " << (enabled ? "enabling" : "disabling") |
| 1552 << " video stream"; | 1552 << " video stream"; |
| 1553 video_stream->set_enabled(enabled, currTime); | 1553 video_stream->set_enabled(enabled, currTime); |
| 1554 } | 1554 } |
| 1555 | 1555 |
| 1556 void FFmpegDemuxer::ReadFrameIfNeeded() { | 1556 void FFmpegDemuxer::ReadFrameIfNeeded() { |
| 1557 DCHECK(task_runner_->BelongsToCurrentThread()); | 1557 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 1558 | 1558 |
| 1559 // Make sure we have work to do before reading. | 1559 // Make sure we have work to do before reading. |
| 1560 if (!blocking_thread_.IsRunning() || !StreamsHaveAvailableCapacity() || | 1560 if (!blocking_thread_.IsRunning() || !StreamsHaveAvailableCapacity() || |
| 1561 pending_read_ || pending_seek_) { | 1561 pending_read_ || pending_seek_) { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1584 pending_read_ = false; | 1584 pending_read_ = false; |
| 1585 | 1585 |
| 1586 if (!blocking_thread_.IsRunning() || pending_seek_) { | 1586 if (!blocking_thread_.IsRunning() || pending_seek_) { |
| 1587 return; | 1587 return; |
| 1588 } | 1588 } |
| 1589 | 1589 |
| 1590 // Consider the stream as ended if: | 1590 // Consider the stream as ended if: |
| 1591 // - either underlying ffmpeg returned an error | 1591 // - either underlying ffmpeg returned an error |
| 1592 // - or FFMpegDemuxer reached the maximum allowed memory usage. | 1592 // - or FFMpegDemuxer reached the maximum allowed memory usage. |
| 1593 if (result < 0 || IsMaxMemoryUsageReached()) { | 1593 if (result < 0 || IsMaxMemoryUsageReached()) { |
| 1594 LOG(ERROR) << __FUNCTION__ << " result=" << result | 1594 LOG(ERROR) << __func__ << " result=" << result |
| 1595 << " IsMaxMemoryUsageReached=" << IsMaxMemoryUsageReached(); | 1595 << " IsMaxMemoryUsageReached=" << IsMaxMemoryUsageReached(); |
| 1596 // Update the duration based on the highest elapsed time across all streams | 1596 // Update the duration based on the highest elapsed time across all streams |
| 1597 // if it was previously unknown. | 1597 // if it was previously unknown. |
| 1598 if (!duration_known_) { | 1598 if (!duration_known_) { |
| 1599 base::TimeDelta max_duration; | 1599 base::TimeDelta max_duration; |
| 1600 | 1600 |
| 1601 for (StreamVector::iterator iter = streams_.begin(); | 1601 for (StreamVector::iterator iter = streams_.begin(); |
| 1602 iter != streams_.end(); | 1602 iter != streams_.end(); |
| 1603 ++iter) { | 1603 ++iter) { |
| 1604 if (!*iter) | 1604 if (!*iter) |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1696 | 1696 |
| 1697 void FFmpegDemuxer::SetLiveness(DemuxerStream::Liveness liveness) { | 1697 void FFmpegDemuxer::SetLiveness(DemuxerStream::Liveness liveness) { |
| 1698 DCHECK(task_runner_->BelongsToCurrentThread()); | 1698 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 1699 for (auto* stream : streams_) { | 1699 for (auto* stream : streams_) { |
| 1700 if (stream) | 1700 if (stream) |
| 1701 stream->SetLiveness(liveness); | 1701 stream->SetLiveness(liveness); |
| 1702 } | 1702 } |
| 1703 } | 1703 } |
| 1704 | 1704 |
| 1705 } // namespace media | 1705 } // namespace media |
| OLD | NEW |