]> git.sesse.net Git - casparcg/blob - core/producer/ffmpeg/input.h
2.0.0.2:
[casparcg] / core / producer / ffmpeg / input.h
1 #pragma once\r
2 \r
3 #include "packet.h"\r
4 \r
5 #include <system_error>\r
6 #include "../../frame/frame_fwd.h"\r
7 \r
8 namespace caspar{ namespace ffmpeg{     \r
9         \r
10 typedef std::shared_ptr<AVFormatContext> AVFormatContextPtr;\r
11 \r
12 class input : boost::noncopyable\r
13 {\r
14 public:\r
15         input(const frame_format_desc& format_desc);\r
16         void load(const std::string& filename);\r
17         const std::shared_ptr<AVCodecContext>& get_video_codec_context() const;\r
18         const std::shared_ptr<AVCodecContext>& get_audio_codec_context() const;\r
19 \r
20         video_packet_ptr get_video_packet();\r
21         audio_packet_ptr get_audio_packet();\r
22 \r
23         bool seek(unsigned long long frame);\r
24         void start();\r
25 \r
26         bool is_eof() const;\r
27         void set_loop(bool value);\r
28 private:\r
29         struct implementation;\r
30         std::shared_ptr<implementation> impl_;\r
31 };\r
32 typedef std::shared_ptr<input> input_ptr;\r
33 typedef std::unique_ptr<input> input_uptr;\r
34 \r
35         }\r
36 }\r