From 067e02e90b7fbe3406cbc7b5b08d63ae281b360c Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 21 Jul 2012 17:52:16 -0400 Subject: VIDEO: Add StreamFileAudioTrack wrapper --- video/video_decoder.cpp | 15 +++++++++++++++ video/video_decoder.h | 21 +++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/video/video_decoder.cpp b/video/video_decoder.cpp index 3cce2dea02..4ac914927e 100644 --- a/video/video_decoder.cpp +++ b/video/video_decoder.cpp @@ -486,6 +486,21 @@ bool AdvancedVideoDecoder::SeekableAudioTrack::seek(const Audio::Timestamp &time return stream->seek(time); } +AdvancedVideoDecoder::StreamFileAudioTrack::StreamFileAudioTrack() { + _stream = 0; +} + +AdvancedVideoDecoder::StreamFileAudioTrack::~StreamFileAudioTrack() { + delete _stream; +} + +bool AdvancedVideoDecoder::StreamFileAudioTrack::loadFromFile(const Common::String &baseName) { + // TODO: Make sure the stream isn't being played + delete _stream; + _stream = Audio::SeekableAudioStream::openStreamFile(baseName); + return _stream != 0; +} + void AdvancedVideoDecoder::addTrack(Track *track) { _tracks.push_back(track); diff --git a/video/video_decoder.h b/video/video_decoder.h index 9496148de6..3e991ade66 100644 --- a/video/video_decoder.h +++ b/video/video_decoder.h @@ -609,6 +609,27 @@ protected: virtual Audio::SeekableAudioStream *getSeekableAudioStream() const = 0; }; + /** + * A SeekableAudioTrack that constructs its SeekableAudioStream using + * SeekableAudioStream::openStreamFile() + */ + class StreamFileAudioTrack : public SeekableAudioTrack { + public: + StreamFileAudioTrack(); + ~StreamFileAudioTrack(); + + /** + * Load the track from a file with the given base name. + * + * @return true on success, false otherwise + */ + bool loadFromFile(const Common::String &baseName); + + protected: + Audio::SeekableAudioStream *_stream; + Audio::SeekableAudioStream *getSeekableAudioStream() const { return _stream; } + }; + /** * Decode enough data for the next frame and enough audio to last that long. * -- cgit v1.2.3