| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/frame_processor.h" | 5 #include "media/filters/frame_processor.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <cstdlib> | 9 #include <cstdlib> |
| 10 | 10 |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 if (existing_track) { | 256 if (existing_track) { |
| 257 MEDIA_LOG(ERROR, media_log_) << "Failure adding track with duplicate ID " | 257 MEDIA_LOG(ERROR, media_log_) << "Failure adding track with duplicate ID " |
| 258 << id; | 258 << id; |
| 259 return false; | 259 return false; |
| 260 } | 260 } |
| 261 | 261 |
| 262 track_buffers_[id] = base::MakeUnique<MseTrackBuffer>(stream); | 262 track_buffers_[id] = base::MakeUnique<MseTrackBuffer>(stream); |
| 263 return true; | 263 return true; |
| 264 } | 264 } |
| 265 | 265 |
| 266 bool FrameProcessor::UpdateTrack(StreamParser::TrackId old_id, | 266 bool FrameProcessor::UpdateTrackIds(const TrackIdChanges& track_id_changes) { |
| 267 StreamParser::TrackId new_id) { | 267 TrackBuffersMap& old_track_buffers = track_buffers_; |
| 268 DVLOG(2) << __func__ << "() : old_id=" << old_id << ", new_id=" << new_id; | 268 TrackBuffersMap new_track_buffers; |
| 269 | 269 |
| 270 if (old_id == new_id || !FindTrack(old_id) || FindTrack(new_id)) { | 270 for (const auto& ids : track_id_changes) { |
| 271 MEDIA_LOG(ERROR, media_log_) << "Failure updating track id from " << old_id | 271 if (old_track_buffers.find(ids.first) == old_track_buffers.end() || |
| 272 << " to " << new_id; | 272 new_track_buffers.find(ids.second) != new_track_buffers.end()) { |
| 273 return false; | 273 MEDIA_LOG(ERROR, media_log_) << "Failure updating track id from " |
| 274 << ids.first << " to " << ids.second; |
| 275 return false; |
| 276 } |
| 277 new_track_buffers[ids.second] = std::move(old_track_buffers[ids.first]); |
| 278 CHECK_EQ(1u, old_track_buffers.erase(ids.first)); |
| 274 } | 279 } |
| 275 | 280 |
| 276 track_buffers_[new_id] = std::move(track_buffers_[old_id]); | 281 // Process remaining track buffers with unchanged ids. |
| 277 CHECK_EQ(1u, track_buffers_.erase(old_id)); | 282 for (const auto& t : old_track_buffers) { |
| 283 if (new_track_buffers.find(t.first) != new_track_buffers.end()) { |
| 284 MEDIA_LOG(ERROR, media_log_) << "Track id " << t.first << " conflict"; |
| 285 return false; |
| 286 } |
| 287 new_track_buffers[t.first] = std::move(old_track_buffers[t.first]); |
| 288 } |
| 289 |
| 290 std::swap(track_buffers_, new_track_buffers); |
| 278 return true; | 291 return true; |
| 279 } | 292 } |
| 280 | 293 |
| 281 void FrameProcessor::SetAllTrackBuffersNeedRandomAccessPoint() { | 294 void FrameProcessor::SetAllTrackBuffersNeedRandomAccessPoint() { |
| 282 for (auto itr = track_buffers_.begin(); itr != track_buffers_.end(); ++itr) { | 295 for (auto itr = track_buffers_.begin(); itr != track_buffers_.end(); ++itr) { |
| 283 itr->second->set_needs_random_access_point(true); | 296 itr->second->set_needs_random_access_point(true); |
| 284 } | 297 } |
| 285 } | 298 } |
| 286 | 299 |
| 287 void FrameProcessor::Reset() { | 300 void FrameProcessor::Reset() { |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 738 // Step 21 is currently handled differently. See SourceBufferState's | 751 // Step 21 is currently handled differently. See SourceBufferState's |
| 739 // |auto_update_timestamp_offset_|. | 752 // |auto_update_timestamp_offset_|. |
| 740 return true; | 753 return true; |
| 741 } | 754 } |
| 742 | 755 |
| 743 NOTREACHED(); | 756 NOTREACHED(); |
| 744 return false; | 757 return false; |
| 745 } | 758 } |
| 746 | 759 |
| 747 } // namespace media | 760 } // namespace media |
| OLD | NEW |