X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fffmpeg_decoder.h;h=c3747961266789a8b2da5447d15dc9c578d3cc1b;hb=996b0c06e23bcb6b300d7b8799df94993692e07d;hp=1e273752a59e874d8fde97fa22d261a56e9a5d2d;hpb=23050047454f1c1f7aadad41bf7b05d00d8ffe7f;p=dcpomatic.git diff --git a/src/lib/ffmpeg_decoder.h b/src/lib/ffmpeg_decoder.h index 1e273752a..c37479612 100644 --- a/src/lib/ffmpeg_decoder.h +++ b/src/lib/ffmpeg_decoder.h @@ -1,3 +1,5 @@ +/* -*- c-basic-offset: 8; default-tab-width: 8; -*- */ + /* Copyright (C) 2012 Carl Hetherington @@ -60,26 +62,33 @@ public: FFmpegDecoder (boost::shared_ptr, boost::shared_ptr, bool video, bool audio, bool subtitles); ~FFmpegDecoder (); + /* Decoder */ + + void pass (); + void seek (Time); + void seek_back (); + void seek_forward (); + Time next () const; + + /* VideoDecoder */ + float video_frame_rate () const; - libdcp::Size native_size () const; + libdcp::Size video_size () 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 subtitle_streams () const { + /* FFmpegDecoder */ + + std::vector > subtitle_streams () const { return _subtitle_streams; } - std::vector audio_streams () const { + std::vector > audio_streams () const { return _audio_streams; } - bool seek (double); - bool seek_forward (); - bool seek_back (); - bool pass (); + boost::shared_ptr ffmpeg_content () const { + return _ffmpeg_content; + } private: @@ -90,22 +99,19 @@ private: 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 (); + bool decode_video_packet (); void decode_audio_packet (); void maybe_add_subtitle (); boost::shared_ptr deinterleave_audio (uint8_t** data, int size); - void film_changed (Film::Property); - std::string stream_name (AVStream* s) const; boost::shared_ptr _ffmpeg_content; @@ -127,8 +133,8 @@ private: std::list > _filter_graphs; boost::mutex _filter_graphs_mutex; - std::vector _subtitle_streams; - std::vector _audio_streams; + std::vector > _subtitle_streams; + std::vector > _audio_streams; bool _decode_video; bool _decode_audio;