]> git.sesse.net Git - casparcg/blob - core/producer/ffmpeg/input.h
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / core / producer / ffmpeg / input.h
1 #pragma once\r
2 \r
3 #include <system_error>\r
4 \r
5 #include <tbb/cache_aligned_allocator.h>\r
6 \r
7 struct AVCodecContext;\r
8 \r
9 namespace caspar { namespace core { namespace ffmpeg{   \r
10         \r
11 typedef std::vector<unsigned char, tbb::cache_aligned_allocator<unsigned char>> aligned_buffer;\r
12 \r
13 class input : boost::noncopyable\r
14 {\r
15 public:\r
16         input(const std::string& filename);\r
17         ~input();\r
18         const std::shared_ptr<AVCodecContext>& get_video_codec_context() const;\r
19         const std::shared_ptr<AVCodecContext>& get_audio_codec_context() const;\r
20 \r
21         aligned_buffer get_video_packet();\r
22         aligned_buffer get_audio_packet();\r
23 \r
24         bool seek(unsigned long long frame);\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