]> git.sesse.net Git - casparcg/blob - modules/ffmpeg/producer/muxer/frame_muxer.h
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / modules / ffmpeg / producer / muxer / frame_muxer.h
1 #pragma once\r
2 \r
3 #include <common/memory/safe_ptr.h>\r
4 #include <common/concurrency/governor.h>\r
5 \r
6 #include <core/mixer/audio/audio_mixer.h>\r
7 \r
8 #include <boost/noncopyable.hpp>\r
9 \r
10 #include <agents.h>\r
11 \r
12 #include <vector>\r
13 \r
14 struct AVFrame;\r
15 \r
16 namespace caspar { \r
17         \r
18 namespace core {\r
19 \r
20 class write_frame;\r
21 class basic_frame;\r
22 struct frame_factory;\r
23 \r
24 }\r
25 \r
26 namespace ffmpeg {\r
27 \r
28 class frame_muxer2 : boost::noncopyable\r
29 {\r
30 public:\r
31         \r
32         typedef safe_ptr<AVFrame>                                                                       video_source_element_t;\r
33         typedef safe_ptr<core::audio_buffer>                                            audio_source_element_t;\r
34         typedef std::pair<safe_ptr<core::basic_frame>, ticket_t>        target_element_t;\r
35 \r
36         typedef Concurrency::ISource<video_source_element_t>            video_source_t;\r
37         typedef Concurrency::ISource<audio_source_element_t>            audio_source_t;\r
38         typedef Concurrency::ITarget<target_element_t>                          target_t;\r
39                                                                  \r
40         frame_muxer2(video_source_t* video_source,\r
41                                  audio_source_t* audio_source, \r
42                                  target_t& target,\r
43                                  double in_fps, \r
44                                  const safe_ptr<core::frame_factory>& frame_factory,\r
45                                  const std::wstring& filter = L"");\r
46         \r
47         int64_t calc_nb_frames(int64_t nb_frames) const;\r
48 private:\r
49         struct implementation;\r
50         safe_ptr<implementation> impl_;\r
51 };\r
52 \r
53 }}