]> 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 <tbb/cache_aligned_allocator.h>\r
4 \r
5 #include <memory>\r
6 #include <string>\r
7 \r
8 struct AVCodecContext;\r
9 \r
10 namespace caspar { namespace core { namespace ffmpeg{   \r
11         \r
12 typedef std::vector<unsigned char, tbb::cache_aligned_allocator<unsigned char>> aligned_buffer;\r
13 \r
14 class input : boost::noncopyable\r
15 {\r
16 public:\r
17         input(const std::wstring& filename);\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 \r
33         }\r
34 }}\r