3 #include <system_error>
\r
5 #include <tbb/cache_aligned_allocator.h>
\r
7 struct AVCodecContext;
\r
9 namespace caspar { namespace core { namespace ffmpeg{
\r
11 typedef std::vector<unsigned char, tbb::cache_aligned_allocator<unsigned char>> aligned_buffer;
\r
13 class input : boost::noncopyable
\r
16 input(const std::string& 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
21 aligned_buffer get_video_packet();
\r
22 aligned_buffer get_audio_packet();
\r
24 bool seek(unsigned long long frame);
\r
26 bool is_eof() const;
\r
27 void set_loop(bool value);
\r
29 struct implementation;
\r
30 std::shared_ptr<implementation> impl_;
\r
32 typedef std::shared_ptr<input> input_ptr;
\r
33 typedef std::unique_ptr<input> input_uptr;
\r