]> git.sesse.net Git - casparcg/blobdiff - modules/ffmpeg/producer/input.h
2.0. Updated namespaces.
[casparcg] / modules / ffmpeg / producer / input.h
index 5e0b36ba40adb0b0ccf4f0456df82c989451e023..6b391581f519b7ab615aa52478316632676777d4 100644 (file)
 */\r
 #pragma once\r
 \r
-#include <common/diagnostics/graph.h>\r
-\r
-#include <tbb/cache_aligned_allocator.h>\r
+#include <common/memory/safe_ptr.h>\r
 \r
 #include <memory>\r
 #include <string>\r
 \r
-struct AVCodecContext;\r
+#include <boost/noncopyable.hpp>\r
+\r
+struct AVFormatContext;\r
+struct AVPacket;\r
 \r
 namespace caspar {\r
-       \r
-typedef std::vector<unsigned char, tbb::cache_aligned_allocator<unsigned char>> aligned_buffer;\r
+\r
+namespace diagnostics {\r
+\r
+class graph;\r
+\r
+}\r
+        \r
+namespace ffmpeg {\r
 \r
 class input : boost::noncopyable\r
 {\r
 public:\r
-       explicit input(const safe_ptr<diagnostics::graph>& graph, const std::wstring& filename, bool loop);\r
-       const std::shared_ptr<AVCodecContext>& get_video_codec_context() const;\r
-       const std::shared_ptr<AVCodecContext>& get_audio_codec_context() const;\r
+       explicit input(const safe_ptr<diagnostics::graph>& graph, const std::wstring& filename, bool loop, size_t start = 0, size_t length = std::numeric_limits<size_t>::max());\r
 \r
-       aligned_buffer get_video_packet();\r
-       aligned_buffer get_audio_packet();\r
+       bool try_pop(std::shared_ptr<AVPacket>& packet);\r
+       bool eof() const;\r
 \r
-       bool is_eof() const;\r
-       bool is_running() const;\r
-       double fps() const;\r
+       size_t nb_frames() const;\r
+       size_t nb_loops() const;\r
+\r
+       safe_ptr<AVFormatContext> context();\r
 private:\r
        struct implementation;\r
        std::shared_ptr<implementation> impl_;\r
 };\r
 \r
        \r
-}\r
+}}\r