summaryrefslogtreecommitdiff
path: root/src/lib/decoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/decoder.h')
-rw-r--r--src/lib/decoder.h39
1 files changed, 23 insertions, 16 deletions
diff --git a/src/lib/decoder.h b/src/lib/decoder.h
index 9f47bf425..d0e20b03a 100644
--- a/src/lib/decoder.h
+++ b/src/lib/decoder.h
@@ -61,14 +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;
- /** @return format of audio samples */
- virtual AVSampleFormat audio_sample_format () 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;
@@ -84,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.
@@ -107,12 +110,10 @@ protected:
virtual PixelFormat pixel_format () const = 0;
void process_video (AVFrame *);
- void process_audio (uint8_t *, int);
+ void process_audio (boost::shared_ptr<AudioBuffers>);
void process_subtitle (boost::shared_ptr<TimedSubtitle>);
void repeat_last_video ();
- int bytes_per_audio_sample () const;
-
/** our Film */
boost::shared_ptr<Film> _film;
/** our options */
@@ -120,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;