]> git.sesse.net Git - bmusb/blobdiff - bmusb.h
Add support for callbacks in the dequeue thread.
[bmusb] / bmusb.h
diff --git a/bmusb.h b/bmusb.h
index 9b74730cb056721dfa7038fbc1010d0a61e221fb..c7a5224d4ad31a41f5846123dc363a8be4c3fd46 100644 (file)
--- a/bmusb.h
+++ b/bmusb.h
@@ -10,6 +10,8 @@
 #include <thread>
 #include <vector>
 
+struct libusb_transfer;
+
 // An interface for frame allocators; if you do not specify one
 // (using set_video_frame_allocator), a default one that pre-allocates
 // a freelist of eight frames using new[] will be used. Specifying
@@ -93,6 +95,14 @@ class BMUSBCapture {
                frame_callback = callback;
        }
 
+       // Needs to be run before configure_card().
+       void set_dequeue_thread_callbacks(std::function<void()> init, std::function<void()> cleanup)
+       {
+               dequeue_init_callback = init;
+               dequeue_cleanup_callback = cleanup;
+               has_dequeue_callbacks = true;
+       }
+
        void configure_card();
        void start_bm_capture();
 
@@ -127,6 +137,10 @@ class BMUSBCapture {
        FrameAllocator *audio_frame_allocator = nullptr;
        frame_callback_t frame_callback = nullptr;
 
+       bool has_dequeue_callbacks = false;
+       std::function<void()> dequeue_init_callback = nullptr;
+       std::function<void()> dequeue_cleanup_callback = nullptr;
+
        int current_register = 0;
 
        static constexpr int NUM_BMUSB_REGISTERS = 60;