]> git.sesse.net Git - nageru/blobdiff - ffmpeg_capture.h
In FFmpegCapture, frame decoding into its own function.
[nageru] / ffmpeg_capture.h
index 01426102f501efb20879a712c6211be0646e5c9e..619266de9e74921adf2e0e8565319ca1cba63ec0 100644 (file)
 #include <movit/ycbcr.h>
 
 #include "bmusb/bmusb.h"
+#include "ffmpeg_raii.h"
 #include "quittable_sleeper.h"
 
+struct AVFormatContext;
+
 class FFmpegCapture : public bmusb::CaptureInterface
 {
 public:
@@ -150,6 +153,12 @@ private:
        bool play_video(const std::string &pathname);
        void internal_rewind();
 
+       // Returns true if there was an error.
+       bool process_queued_commands(AVFormatContext *format_ctx, const std::string &pathname, timespec last_modified);
+
+       // Returns nullptr if no frame was decoded (e.g. EOF).
+       AVFrameWithDeleter decode_frame(AVFormatContext *format_ctx, AVCodecContext *codec_ctx, const std::string &pathname, int video_stream_index, bool *error);
+
        std::string description, filename;
        uint16_t timecode = 0;
        unsigned width, height;
@@ -157,6 +166,7 @@ private:
        movit::YCbCrFormat current_frame_ycbcr_format;
        bool running = false;
        int card_index = -1;
+       double rate = 1.0;
 
        bool has_dequeue_callbacks = false;
        std::function<void()> dequeue_init_callback = nullptr;