X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fffmpeg%2Fproducer%2Fmuxer%2Fframe_muxer.h;h=1a5e5578b6358fa9c368a1448018de03f7b9a5a5;hb=435cf4b385c5099270bee44f89c3e2615af30521;hp=50759aea0e4771281c5cd8f7f960281e1317a354;hpb=d98d80dc88909e119972626cb522495401612672;p=casparcg diff --git a/modules/ffmpeg/producer/muxer/frame_muxer.h b/modules/ffmpeg/producer/muxer/frame_muxer.h index 50759aea0..1a5e5578b 100644 --- a/modules/ffmpeg/producer/muxer/frame_muxer.h +++ b/modules/ffmpeg/producer/muxer/frame_muxer.h @@ -23,9 +23,11 @@ #include "display_mode.h" -#include +#include +#include #include +#include #include @@ -33,35 +35,30 @@ struct AVFrame; -namespace caspar { - -namespace core { - -class write_frame; -class basic_frame; -struct frame_factory; - -} +FORWARD2(caspar, core, struct pixel_format_desc); +FORWARD2(caspar, core, class frame); +FORWARD2(caspar, core, class frame_factory); +FORWARD2(caspar, core, class draw_frame); -namespace ffmpeg { +namespace caspar { namespace ffmpeg { class frame_muxer : boost::noncopyable { public: - frame_muxer(double in_fps, const safe_ptr& frame_factory, const std::wstring& filter = L""); + frame_muxer(double in_fps, const spl::shared_ptr& frame_factory, const core::video_format_desc& format_desc, const std::wstring& filter = L""); - void push(const std::shared_ptr& video_frame, int hints = 0); + void push(const std::shared_ptr& video_frame, int flags = 0); void push(const std::shared_ptr& audio_samples); bool video_ready() const; bool audio_ready() const; - std::shared_ptr poll(); + bool try_pop(core::draw_frame& result); uint32_t calc_nb_frames(uint32_t nb_frames) const; private: - struct implementation; - safe_ptr impl_; + struct impl; + spl::shared_ptr impl_; }; }} \ No newline at end of file