projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix tests.
[dcpomatic.git]
/
src
/
lib
/
ffmpeg_decoder.h
diff --git
a/src/lib/ffmpeg_decoder.h
b/src/lib/ffmpeg_decoder.h
index 1e273752a59e874d8fde97fa22d261a56e9a5d2d..be178dbfbfc1d57232c89223e2f2ca62f0a90e36 100644
(file)
--- a/
src/lib/ffmpeg_decoder.h
+++ b/
src/lib/ffmpeg_decoder.h
@@
-35,8
+35,6
@@
extern "C" {
#include "decoder.h"
#include "video_decoder.h"
#include "audio_decoder.h"
#include "decoder.h"
#include "video_decoder.h"
#include "audio_decoder.h"
-#include "film.h"
-#include "ffmpeg_content.h"
struct AVFilterGraph;
struct AVCodecContext;
struct AVFilterGraph;
struct AVCodecContext;
@@
-50,6
+48,8
@@
class Job;
class Options;
class Image;
class Log;
class Options;
class Image;
class Log;
+class FFmpegContent;
+class Film;
/** @class FFmpegDecoder
* @brief A decoder using FFmpeg to decode content.
/** @class FFmpegDecoder
* @brief A decoder using FFmpeg to decode content.
@@
-57,29
+57,37
@@
class Log;
class FFmpegDecoder : public VideoDecoder, public AudioDecoder
{
public:
class FFmpegDecoder : public VideoDecoder, public AudioDecoder
{
public:
- FFmpegDecoder (boost::shared_ptr<const Film>, boost::shared_ptr<const FFmpegContent>, bool video, bool audio
, bool subtitles
);
+ FFmpegDecoder (boost::shared_ptr<const Film>, boost::shared_ptr<const FFmpegContent>, bool video, bool audio);
~FFmpegDecoder ();
~FFmpegDecoder ();
+ /* Decoder */
+
+ void pass ();
+ void seek (Time);
+ void seek_back ();
+ void seek_forward ();
+ Time position () const;
+ bool done () const;
+
+ /* VideoDecoder */
+
float video_frame_rate () const;
float video_frame_rate () const;
- libdcp::Size
native
_size () const;
+ libdcp::Size
video
_size () const;
ContentVideoFrame video_length () const;
ContentVideoFrame video_length () const;
- int time_base_numerator () const;
- int time_base_denominator () const;
- int sample_aspect_ratio_numerator () const;
- int sample_aspect_ratio_denominator () const;
- std::vector<FFmpegSubtitleStream> subtitle_streams () const {
+ /* FFmpegDecoder */
+
+ std::vector<boost::shared_ptr<FFmpegSubtitleStream> > subtitle_streams () const {
return _subtitle_streams;
}
return _subtitle_streams;
}
- std::vector<
FFmpegAudioStream
> audio_streams () const {
+ std::vector<
boost::shared_ptr<FFmpegAudioStream>
> audio_streams () const {
return _audio_streams;
}
return _audio_streams;
}
- bool seek (double);
- bool seek_forward ();
- bool seek_back ();
- bool pass ();
+ boost::shared_ptr<const FFmpegContent> ffmpeg_content () const {
+ return _ffmpeg_content;
+ }
private:
private:
@@
-90,22
+98,19
@@
private:
PixelFormat pixel_format () const;
AVSampleFormat audio_sample_format () const;
int bytes_per_audio_sample () const;
PixelFormat pixel_format () const;
AVSampleFormat audio_sample_format () const;
int bytes_per_audio_sample () const;
- bool do_seek (double, bool, bool);
-
- void filter_and_emit_video ();
+ void do_seek (Time, bool, bool);
void setup_general ();
void setup_video ();
void setup_audio ();
void setup_subtitle ();
void setup_general ();
void setup_video ();
void setup_audio ();
void setup_subtitle ();
+ bool decode_video_packet ();
void decode_audio_packet ();
void maybe_add_subtitle ();
boost::shared_ptr<AudioBuffers> deinterleave_audio (uint8_t** data, int size);
void decode_audio_packet ();
void maybe_add_subtitle ();
boost::shared_ptr<AudioBuffers> deinterleave_audio (uint8_t** data, int size);
- void film_changed (Film::Property);
-
std::string stream_name (AVStream* s) const;
boost::shared_ptr<const FFmpegContent> _ffmpeg_content;
std::string stream_name (AVStream* s) const;
boost::shared_ptr<const FFmpegContent> _ffmpeg_content;
@@
-127,12
+132,11
@@
private:
std::list<boost::shared_ptr<FilterGraph> > _filter_graphs;
boost::mutex _filter_graphs_mutex;
std::list<boost::shared_ptr<FilterGraph> > _filter_graphs;
boost::mutex _filter_graphs_mutex;
- std::vector<
FFmpegSubtitleStream
> _subtitle_streams;
- std::vector<
FFmpegAudioStream
> _audio_streams;
+ std::vector<
boost::shared_ptr<FFmpegSubtitleStream>
> _subtitle_streams;
+ std::vector<
boost::shared_ptr<FFmpegAudioStream>
> _audio_streams;
bool _decode_video;
bool _decode_audio;
bool _decode_video;
bool _decode_audio;
- bool _decode_subtitles;
/* It would appear (though not completely verified) that one must have
a mutex around calls to avcodec_open* and avcodec_close... and here
/* It would appear (though not completely verified) that one must have
a mutex around calls to avcodec_open* and avcodec_close... and here