summaryrefslogtreecommitdiff
path: root/src/lib/decoder.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-11-10 13:19:09 +0000
committerCarl Hetherington <cth@carlh.net>2012-11-10 13:19:09 +0000
commit3d9b5186aa39150e53aef3bab09f4350f85cb885 (patch)
treeaec2493b2d319f2694ebe7304990c6addb702fc7 /src/lib/decoder.h
parent5c225839172ce9f0a9be81dabfbbeb3190a9ff20 (diff)
More various AudioStream hacks.
Diffstat (limited to 'src/lib/decoder.h')
-rw-r--r--src/lib/decoder.h33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/lib/decoder.h b/src/lib/decoder.h
index 1807254db..d0e20b03a 100644
--- a/src/lib/decoder.h
+++ b/src/lib/decoder.h
@@ -61,12 +61,6 @@ public:
virtual float frames_per_second () const = 0;
/** @return native size in pixels */
virtual Size native_size () const = 0;
- /** @return number of audio channels */
- virtual int audio_channels () const = 0;
- /** @return audio sampling rate in Hz */
- virtual int audio_sample_rate () const = 0;
- virtual int64_t audio_channel_layout () const = 0;
- virtual bool has_subtitles () const = 0;
virtual int time_base_numerator () const = 0;
virtual int time_base_denominator () const = 0;
@@ -82,12 +76,23 @@ public:
return _video_frame;
}
- virtual std::vector<AudioStream> audio_streams () const {
- return std::vector<AudioStream> ();
+ virtual void set_audio_stream (boost::optional<AudioStream>);
+ virtual void set_subtitle_stream (boost::optional<SubtitleStream>);
+
+ boost::optional<AudioStream> audio_stream () const {
+ return _audio_stream;
+ }
+
+ boost::optional<SubtitleStream> subtitle_stream () const {
+ return _subtitle_stream;
+ }
+
+ std::vector<AudioStream> audio_streams () const {
+ return _audio_streams;
}
- virtual std::vector<SubtitleStream> subtitle_streams () const {
- return std::vector<SubtitleStream> ();
+ std::vector<SubtitleStream> subtitle_streams () const {
+ return _subtitle_streams;
}
/** Emitted when a video frame is ready.
@@ -116,13 +121,19 @@ protected:
/** associated Job, or 0 */
Job* _job;
+ boost::optional<AudioStream> _audio_stream;
+ boost::optional<SubtitleStream> _subtitle_stream;
+
+ std::vector<AudioStream> _audio_streams;
+ std::vector<SubtitleStream> _subtitle_streams;
+
private:
void emit_video (boost::shared_ptr<Image>, boost::shared_ptr<Subtitle>);
void emit_audio (boost::shared_ptr<AudioBuffers>);
SourceFrame _video_frame;
int64_t _audio_frame;
-
+
std::list<boost::shared_ptr<FilterGraph> > _filter_graphs;
DelayLine* _delay_line;