3 #include <common/memory/safe_ptr.h>
\r
5 #include <core/mixer/audio/audio_mixer.h>
\r
7 #include <boost/noncopyable.hpp>
\r
20 struct frame_factory;
\r
26 class frame_muxer : boost::noncopyable
\r
29 frame_muxer(double in_fps, const safe_ptr<core::frame_factory>& frame_factory);
\r
31 void push(const std::shared_ptr<AVFrame>& video_frame, int hints = 0);
\r
32 void push(const std::shared_ptr<core::audio_buffer>& audio_samples);
\r
36 bool video_ready() const;
\r
37 bool audio_ready() const;
\r
39 size_t size() const;
\r
42 int64_t calc_nb_frames(int64_t nb_frames) const;
\r
44 safe_ptr<core::basic_frame> pop();
\r
46 struct implementation;
\r
47 safe_ptr<implementation> impl_;
\r
50 class frame_muxer2 : boost::noncopyable
\r
54 typedef Concurrency::ISource<bool> token_t;
\r
55 typedef Concurrency::ISource<std::shared_ptr<AVFrame>> video_source_t;
\r
56 typedef Concurrency::ISource<std::shared_ptr<core::audio_buffer>> audio_source_t;
\r
57 typedef Concurrency::ITarget<std::shared_ptr<core::basic_frame>> target_t;
\r
59 frame_muxer2(token_t& active_token,
\r
60 video_source_t& video_source,
\r
61 audio_source_t& audio_source,
\r
64 const safe_ptr<core::frame_factory>& frame_factory);
\r
66 int64_t calc_nb_frames(int64_t nb_frames) const;
\r
68 struct implementation;
\r
69 safe_ptr<implementation> impl_;
\r