summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
Diffstat (limited to 'media')
-rw-r--r--media/filters/chunk_demuxer.cc14
-rw-r--r--media/filters/chunk_demuxer_unittest.cc11
2 files changed, 21 insertions, 4 deletions
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
index 77953b9..5aa7995 100644
--- a/media/filters/chunk_demuxer.cc
+++ b/media/filters/chunk_demuxer.cc
@@ -713,11 +713,17 @@ void ChunkDemuxer::RemoveId(const std::string& id) {
stream_parser_map_.erase(id);
source_info_map_.erase(id);
- if (source_id_audio_ == id && audio_)
- audio_->Shutdown();
+ if (source_id_audio_ == id) {
+ if (audio_)
+ audio_->Shutdown();
+ source_id_audio_.clear();
+ }
- if (source_id_video_ == id && video_)
- video_->Shutdown();
+ if (source_id_video_ == id) {
+ if (video_)
+ video_->Shutdown();
+ source_id_video_.clear();
+ }
}
Ranges<TimeDelta> ChunkDemuxer::GetBufferedRanges(const std::string& id) const {
diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc
index 8aa0d76..915bcf7 100644
--- a/media/filters/chunk_demuxer_unittest.cc
+++ b/media/filters/chunk_demuxer_unittest.cc
@@ -1551,6 +1551,17 @@ TEST_F(ChunkDemuxerTest, TestRemoveId) {
GenerateSingleStreamExpectedReads(0, 4, video, kVideoBlockDuration);
}
+// Test that removing an ID immediately after adding it does not interfere with
+// quota for new IDs in the future.
+TEST_F(ChunkDemuxerTest, TestRemoveAndAddId) {
+ std::string audio_id_1 = "audio1";
+ ASSERT_TRUE(AddId(audio_id_1, true, false) == ChunkDemuxer::kOk);
+ demuxer_->RemoveId(audio_id_1);
+
+ std::string audio_id_2 = "audio2";
+ ASSERT_TRUE(AddId(audio_id_2, true, false) == ChunkDemuxer::kOk);
+}
+
TEST_F(ChunkDemuxerTest, TestSeekCanceled) {
ASSERT_TRUE(InitDemuxer(true, true, false));