From a897ad9e7222a3f8af1d75bc9c787da3bd464c33 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 30 Jun 2017 20:34:28 -0400 Subject: [PATCH] VIDEO: Add method to VideoDecoder to erase a track --- video/video_decoder.cpp | 17 +++++++++++++++++ video/video_decoder.h | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/video/video_decoder.cpp b/video/video_decoder.cpp index 05b6e7ce2a0..e4016d8de86 100644 --- a/video/video_decoder.cpp +++ b/video/video_decoder.cpp @@ -910,4 +910,21 @@ bool VideoDecoder::hasAudio() const { return false; } +void VideoDecoder::eraseTrack(Track *track) { + for (uint idx = 0; idx < _externalTracks.size(); ++idx) { + if (_externalTracks[idx] == track) + _externalTracks.remove_at(idx); + } + + for (uint idx = 0; idx < _internalTracks.size(); ++idx) { + if (_internalTracks[idx] == track) + _internalTracks.remove_at(idx); + } + + for (uint idx = 0; idx < _tracks.size(); ++idx) { + if (_tracks[idx] == track) + _tracks.remove_at(idx); + } +} + } // End of namespace Video diff --git a/video/video_decoder.h b/video/video_decoder.h index a415a707243..598a67d3f80 100644 --- a/video/video_decoder.h +++ b/video/video_decoder.h @@ -885,6 +885,11 @@ protected: */ TrackListIterator getTrackListEnd() { return _internalTracks.end(); } + /** + * Removes a specified track + */ + void eraseTrack(Track *track); + /** * The internal seek function that does the actual seeking. *